From c21df591bd2c6cd54ba28787ad290a908b507f33 Mon Sep 17 00:00:00 2001 From: Kevin Munoz Date: Tue, 19 Nov 2024 15:19:23 -0500 Subject: [PATCH] update --- .gitignore | 1 + app.py | 3 +- venv/bin/Activate.ps1 | 247 + venv/bin/activate | 70 + venv/bin/activate.csh | 27 + venv/bin/activate.fish | 69 + venv/bin/dotenv | 8 + venv/bin/filetype | 8 + venv/bin/flask | 8 + venv/bin/normalizer | 8 + venv/bin/pip | 8 + venv/bin/pip3 | 8 + venv/bin/pip3.12 | 8 + venv/bin/python | 1 + venv/bin/python3 | 1 + venv/bin/python3.12 | 1 + .../Flask_SocketIO-5.3.6.dist-info/INSTALLER | 1 + .../Flask_SocketIO-5.3.6.dist-info/LICENSE | 20 + .../Flask_SocketIO-5.3.6.dist-info/METADATA | 77 + .../Flask_SocketIO-5.3.6.dist-info/RECORD | 13 + .../Flask_SocketIO-5.3.6.dist-info/REQUESTED | 0 .../Flask_SocketIO-5.3.6.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../MarkupSafe-2.1.5.dist-info/INSTALLER | 1 + .../MarkupSafe-2.1.5.dist-info/LICENSE.rst | 28 + .../MarkupSafe-2.1.5.dist-info/METADATA | 93 + .../MarkupSafe-2.1.5.dist-info/RECORD | 15 + .../MarkupSafe-2.1.5.dist-info/REQUESTED | 0 .../MarkupSafe-2.1.5.dist-info/WHEEL | 6 + .../MarkupSafe-2.1.5.dist-info/top_level.txt | 1 + ..._connector.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 10852888 bytes .../bidict-0.23.1.dist-info/INSTALLER | 1 + .../bidict-0.23.1.dist-info/LICENSE | 376 + .../bidict-0.23.1.dist-info/METADATA | 260 + .../bidict-0.23.1.dist-info/RECORD | 32 + .../bidict-0.23.1.dist-info/REQUESTED | 0 .../bidict-0.23.1.dist-info/WHEEL | 5 + .../bidict-0.23.1.dist-info/top_level.txt | 1 + .../site-packages/bidict/__init__.py | 103 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 2480 bytes .../bidict/__pycache__/_abc.cpython-312.pyc | Bin 0 -> 2808 bytes .../bidict/__pycache__/_base.cpython-312.pyc | Bin 0 -> 23198 bytes .../__pycache__/_bidict.cpython-312.pyc | Bin 0 -> 8508 bytes .../bidict/__pycache__/_dup.cpython-312.pyc | Bin 0 -> 2239 bytes .../bidict/__pycache__/_exc.cpython-312.pyc | Bin 0 -> 1563 bytes .../__pycache__/_frozen.cpython-312.pyc | Bin 0 -> 1517 bytes .../bidict/__pycache__/_iter.cpython-312.pyc | Bin 0 -> 2353 bytes .../__pycache__/_orderedbase.cpython-312.pyc | Bin 0 -> 11148 bytes .../_orderedbidict.cpython-312.pyc | Bin 0 -> 7622 bytes .../__pycache__/_typing.cpython-312.pyc | Bin 0 -> 2299 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 551 bytes .../python3.12/site-packages/bidict/_abc.py | 79 + .../python3.12/site-packages/bidict/_base.py | 556 ++ .../site-packages/bidict/_bidict.py | 194 + .../python3.12/site-packages/bidict/_dup.py | 61 + .../python3.12/site-packages/bidict/_exc.py | 36 + .../site-packages/bidict/_frozen.py | 50 + .../python3.12/site-packages/bidict/_iter.py | 51 + .../site-packages/bidict/_orderedbase.py | 238 + .../site-packages/bidict/_orderedbidict.py | 172 + .../site-packages/bidict/_typing.py | 49 + .../site-packages/bidict/metadata.py | 14 + .../python3.12/site-packages/bidict/py.typed | 1 + .../blinker-1.8.2.dist-info/INSTALLER | 1 + .../blinker-1.8.2.dist-info/LICENSE.txt | 20 + .../blinker-1.8.2.dist-info/METADATA | 60 + .../blinker-1.8.2.dist-info/RECORD | 13 + .../blinker-1.8.2.dist-info/REQUESTED | 0 .../blinker-1.8.2.dist-info/WHEEL | 4 + .../site-packages/blinker/__init__.py | 60 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1797 bytes .../__pycache__/_utilities.cpython-312.pyc | Bin 0 -> 2719 bytes .../blinker/__pycache__/base.cpython-312.pyc | Bin 0 -> 25411 bytes .../site-packages/blinker/_utilities.py | 64 + .../python3.12/site-packages/blinker/base.py | 621 ++ .../python3.12/site-packages/blinker/py.typed | 0 .../certifi-2024.7.4.dist-info/INSTALLER | 1 + .../certifi-2024.7.4.dist-info/LICENSE | 20 + .../certifi-2024.7.4.dist-info/METADATA | 67 + .../certifi-2024.7.4.dist-info/RECORD | 15 + .../certifi-2024.7.4.dist-info/REQUESTED | 0 .../certifi-2024.7.4.dist-info/WHEEL | 5 + .../certifi-2024.7.4.dist-info/top_level.txt | 1 + .../site-packages/certifi/__init__.py | 4 + .../site-packages/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 307 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 622 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 0 -> 3183 bytes .../site-packages/certifi/cacert.pem | 4798 +++++++++ .../python3.12/site-packages/certifi/core.py | 114 + .../python3.12/site-packages/certifi/py.typed | 0 .../INSTALLER | 1 + .../LICENSE | 21 + .../METADATA | 683 ++ .../charset_normalizer-3.3.2.dist-info/RECORD | 36 + .../REQUESTED | 0 .../charset_normalizer-3.3.2.dist-info/WHEEL | 6 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../charset_normalizer/__init__.py | 46 + .../charset_normalizer/__main__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1726 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 296 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 17301 bytes .../__pycache__/cd.cpython-312.pyc | Bin 0 -> 13435 bytes .../__pycache__/constant.cpython-312.pyc | Bin 0 -> 38753 bytes .../__pycache__/legacy.cpython-312.pyc | Bin 0 -> 2497 bytes .../__pycache__/md.cpython-312.pyc | Bin 0 -> 24500 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 16600 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 14313 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 323 bytes .../site-packages/charset_normalizer/api.py | 626 ++ .../site-packages/charset_normalizer/cd.py | 395 + .../charset_normalizer/cli/__init__.py | 6 + .../charset_normalizer/cli/__main__.py | 296 + .../cli/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 284 bytes .../cli/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 10385 bytes .../charset_normalizer/constant.py | 1995 ++++ .../charset_normalizer/legacy.py | 54 + .../md.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 16064 bytes .../site-packages/charset_normalizer/md.py | 615 ++ .../md__mypyc.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 272640 bytes .../charset_normalizer/models.py | 340 + .../site-packages/charset_normalizer/py.typed | 0 .../site-packages/charset_normalizer/utils.py | 421 + .../charset_normalizer/version.py | 6 + .../clamd-1.0.2.dist-info/DESCRIPTION.rst | 91 + .../clamd-1.0.2.dist-info/INSTALLER | 1 + .../clamd-1.0.2.dist-info/METADATA | 103 + .../clamd-1.0.2.dist-info/RECORD | 11 + .../clamd-1.0.2.dist-info/REQUESTED | 0 .../site-packages/clamd-1.0.2.dist-info/WHEEL | 6 + .../clamd-1.0.2.dist-info/metadata.json | 1 + .../clamd-1.0.2.dist-info/top_level.txt | 1 + .../clamd-1.0.2.dist-info/zip-safe | 1 + .../site-packages/clamd/__init__.py | 313 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 14799 bytes .../click-8.1.7.dist-info/INSTALLER | 1 + .../click-8.1.7.dist-info/LICENSE.rst | 28 + .../click-8.1.7.dist-info/METADATA | 103 + .../click-8.1.7.dist-info/RECORD | 40 + .../click-8.1.7.dist-info/REQUESTED | 0 .../site-packages/click-8.1.7.dist-info/WHEEL | 5 + .../click-8.1.7.dist-info/top_level.txt | 1 + .../site-packages/click/__init__.py | 73 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 2697 bytes .../click/__pycache__/_compat.cpython-312.pyc | Bin 0 -> 27442 bytes .../__pycache__/_termui_impl.cpython-312.pyc | Bin 0 -> 30520 bytes .../__pycache__/_textwrap.cpython-312.pyc | Bin 0 -> 2438 bytes .../__pycache__/_winconsole.cpython-312.pyc | Bin 0 -> 11977 bytes .../click/__pycache__/core.cpython-312.pyc | Bin 0 -> 135498 bytes .../__pycache__/decorators.cpython-312.pyc | Bin 0 -> 23970 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 14733 bytes .../__pycache__/formatting.cpython-312.pyc | Bin 0 -> 14052 bytes .../click/__pycache__/globals.cpython-312.pyc | Bin 0 -> 3117 bytes .../click/__pycache__/parser.cpython-312.pyc | Bin 0 -> 21482 bytes .../shell_completion.cpython-312.pyc | Bin 0 -> 22754 bytes .../click/__pycache__/termui.cpython-312.pyc | Bin 0 -> 32787 bytes .../click/__pycache__/testing.cpython-312.pyc | Bin 0 -> 24559 bytes .../click/__pycache__/types.cpython-312.pyc | Bin 0 -> 49439 bytes .../click/__pycache__/utils.cpython-312.pyc | Bin 0 -> 26289 bytes .../python3.12/site-packages/click/_compat.py | 623 ++ .../site-packages/click/_termui_impl.py | 739 ++ .../site-packages/click/_textwrap.py | 49 + .../site-packages/click/_winconsole.py | 279 + .../python3.12/site-packages/click/core.py | 3042 ++++++ .../site-packages/click/decorators.py | 561 ++ .../site-packages/click/exceptions.py | 288 + .../site-packages/click/formatting.py | 301 + .../python3.12/site-packages/click/globals.py | 68 + .../python3.12/site-packages/click/parser.py | 529 + .../python3.12/site-packages/click/py.typed | 0 .../site-packages/click/shell_completion.py | 596 ++ .../python3.12/site-packages/click/termui.py | 784 ++ .../python3.12/site-packages/click/testing.py | 479 + .../python3.12/site-packages/click/types.py | 1089 +++ .../python3.12/site-packages/click/utils.py | 624 ++ .../site-packages/dotenv/__init__.py | 49 + .../site-packages/dotenv/__main__.py | 6 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1688 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 352 bytes .../dotenv/__pycache__/cli.cpython-312.pyc | Bin 0 -> 9695 bytes .../__pycache__/ipython.cpython-312.pyc | Bin 0 -> 1961 bytes .../dotenv/__pycache__/main.cpython-312.pyc | Bin 0 -> 16380 bytes .../dotenv/__pycache__/parser.cpython-312.pyc | Bin 0 -> 9994 bytes .../__pycache__/variables.cpython-312.pyc | Bin 0 -> 5020 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 204 bytes .../python3.12/site-packages/dotenv/cli.py | 199 + .../site-packages/dotenv/ipython.py | 39 + .../python3.12/site-packages/dotenv/main.py | 392 + .../python3.12/site-packages/dotenv/parser.py | 175 + .../python3.12/site-packages/dotenv/py.typed | 1 + .../site-packages/dotenv/variables.py | 86 + .../site-packages/dotenv/version.py | 1 + .../site-packages/engineio/__init__.py | 13 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 686 bytes .../__pycache__/async_client.cpython-312.pyc | Bin 0 -> 38464 bytes .../__pycache__/async_server.cpython-312.pyc | Bin 0 -> 29205 bytes .../__pycache__/async_socket.cpython-312.pyc | Bin 0 -> 15528 bytes .../__pycache__/base_client.cpython-312.pyc | Bin 0 -> 6292 bytes .../__pycache__/base_server.cpython-312.pyc | Bin 0 -> 16282 bytes .../__pycache__/base_socket.cpython-312.pyc | Bin 0 -> 901 bytes .../__pycache__/client.cpython-312.pyc | Bin 0 -> 32664 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 1109 bytes .../engineio/__pycache__/json.cpython-312.pyc | Bin 0 -> 759 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 0 -> 4694 bytes .../__pycache__/packet.cpython-312.pyc | Bin 0 -> 3875 bytes .../__pycache__/payload.cpython-312.pyc | Bin 0 -> 2137 bytes .../__pycache__/server.cpython-312.pyc | Bin 0 -> 23495 bytes .../__pycache__/socket.cpython-312.pyc | Bin 0 -> 13975 bytes .../__pycache__/static_files.cpython-312.pyc | Bin 0 -> 2177 bytes .../site-packages/engineio/async_client.py | 654 ++ .../engineio/async_drivers/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 195 bytes .../_websocket_wsgi.cpython-312.pyc | Bin 0 -> 2163 bytes .../__pycache__/aiohttp.cpython-312.pyc | Bin 0 -> 5772 bytes .../__pycache__/asgi.cpython-312.pyc | Bin 0 -> 14058 bytes .../__pycache__/eventlet.cpython-312.pyc | Bin 0 -> 2969 bytes .../__pycache__/gevent.cpython-312.pyc | Bin 0 -> 4216 bytes .../__pycache__/gevent_uwsgi.cpython-312.pyc | Bin 0 -> 7477 bytes .../__pycache__/sanic.cpython-312.pyc | Bin 0 -> 6716 bytes .../__pycache__/threading.cpython-312.pyc | Bin 0 -> 1045 bytes .../__pycache__/tornado.cpython-312.pyc | Bin 0 -> 9950 bytes .../engineio/async_drivers/_websocket_wsgi.py | 34 + .../engineio/async_drivers/aiohttp.py | 127 + .../engineio/async_drivers/asgi.py | 275 + .../engineio/async_drivers/eventlet.py | 54 + .../engineio/async_drivers/gevent.py | 83 + .../engineio/async_drivers/gevent_uwsgi.py | 168 + .../engineio/async_drivers/sanic.py | 149 + .../engineio/async_drivers/threading.py | 19 + .../engineio/async_drivers/tornado.py | 182 + .../site-packages/engineio/async_server.py | 567 ++ .../site-packages/engineio/async_socket.py | 254 + .../site-packages/engineio/base_client.py | 146 + .../site-packages/engineio/base_server.py | 338 + .../site-packages/engineio/base_socket.py | 15 + .../site-packages/engineio/client.py | 605 ++ .../site-packages/engineio/exceptions.py | 22 + .../python3.12/site-packages/engineio/json.py | 16 + .../site-packages/engineio/middleware.py | 86 + .../site-packages/engineio/packet.py | 82 + .../site-packages/engineio/payload.py | 46 + .../site-packages/engineio/server.py | 479 + .../site-packages/engineio/socket.py | 250 + .../site-packages/engineio/static_files.py | 60 + .../filetype-1.2.0.dist-info/INSTALLER | 1 + .../filetype-1.2.0.dist-info/LICENSE | 21 + .../filetype-1.2.0.dist-info/METADATA | 213 + .../filetype-1.2.0.dist-info/RECORD | 42 + .../filetype-1.2.0.dist-info/REQUESTED | 0 .../filetype-1.2.0.dist-info/WHEEL | 6 + .../filetype-1.2.0.dist-info/entry_points.txt | 3 + .../filetype-1.2.0.dist-info/top_level.txt | 1 + .../filetype-1.2.0.dist-info/zip-safe | 1 + .../site-packages/filetype/__init__.py | 10 + .../site-packages/filetype/__main__.py | 37 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 360 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 1712 bytes .../__pycache__/filetype.cpython-312.pyc | Bin 0 -> 2841 bytes .../__pycache__/helpers.cpython-312.pyc | Bin 0 -> 3763 bytes .../__pycache__/match.cpython-312.pyc | Bin 0 -> 4161 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 2979 bytes .../site-packages/filetype/filetype.py | 98 + .../site-packages/filetype/helpers.py | 140 + .../site-packages/filetype/match.py | 155 + .../site-packages/filetype/types/__init__.py | 118 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4560 bytes .../__pycache__/application.cpython-312.pyc | Bin 0 -> 1139 bytes .../types/__pycache__/archive.cpython-312.pyc | Bin 0 -> 27395 bytes .../types/__pycache__/audio.cpython-312.pyc | Bin 0 -> 8227 bytes .../types/__pycache__/base.cpython-312.pyc | Bin 0 -> 1548 bytes .../__pycache__/document.cpython-312.pyc | Bin 0 -> 10081 bytes .../types/__pycache__/font.cpython-312.pyc | Bin 0 -> 4333 bytes .../types/__pycache__/image.cpython-312.pyc | Bin 0 -> 14663 bytes .../types/__pycache__/isobmff.cpython-312.pyc | Bin 0 -> 1946 bytes .../types/__pycache__/video.cpython-312.pyc | Bin 0 -> 9138 bytes .../filetype/types/application.py | 22 + .../site-packages/filetype/types/archive.py | 687 ++ .../site-packages/filetype/types/audio.py | 212 + .../site-packages/filetype/types/base.py | 29 + .../site-packages/filetype/types/document.py | 256 + .../site-packages/filetype/types/font.py | 115 + .../site-packages/filetype/types/image.py | 383 + .../site-packages/filetype/types/isobmff.py | 33 + .../site-packages/filetype/types/video.py | 223 + .../site-packages/filetype/utils.py | 84 + .../flask-3.0.3.dist-info/INSTALLER | 1 + .../flask-3.0.3.dist-info/LICENSE.txt | 28 + .../flask-3.0.3.dist-info/METADATA | 101 + .../flask-3.0.3.dist-info/RECORD | 58 + .../flask-3.0.3.dist-info/REQUESTED | 0 .../site-packages/flask-3.0.3.dist-info/WHEEL | 4 + .../flask-3.0.3.dist-info/entry_points.txt | 3 + .../site-packages/flask/__init__.py | 60 + .../site-packages/flask/__main__.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 2471 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 232 bytes .../flask/__pycache__/app.cpython-312.pyc | Bin 0 -> 61097 bytes .../__pycache__/blueprints.cpython-312.pyc | Bin 0 -> 4886 bytes .../flask/__pycache__/cli.cpython-312.pyc | Bin 0 -> 42247 bytes .../flask/__pycache__/config.cpython-312.pyc | Bin 0 -> 16209 bytes .../flask/__pycache__/ctx.cpython-312.pyc | Bin 0 -> 19818 bytes .../__pycache__/debughelpers.cpython-312.pyc | Bin 0 -> 9123 bytes .../flask/__pycache__/globals.cpython-312.pyc | Bin 0 -> 1856 bytes .../flask/__pycache__/helpers.cpython-312.pyc | Bin 0 -> 24800 bytes .../flask/__pycache__/logging.cpython-312.pyc | Bin 0 -> 3261 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 16305 bytes .../flask/__pycache__/signals.cpython-312.pyc | Bin 0 -> 1213 bytes .../__pycache__/templating.cpython-312.pyc | Bin 0 -> 9898 bytes .../flask/__pycache__/testing.cpython-312.pyc | Bin 0 -> 13671 bytes .../flask/__pycache__/typing.cpython-312.pyc | Bin 0 -> 4268 bytes .../flask/__pycache__/views.cpython-312.pyc | Bin 0 -> 6993 bytes .../__pycache__/wrappers.cpython-312.pyc | Bin 0 -> 6114 bytes .../lib/python3.12/site-packages/flask/app.py | 1498 +++ .../site-packages/flask/blueprints.py | 129 + .../lib/python3.12/site-packages/flask/cli.py | 1109 +++ .../python3.12/site-packages/flask/config.py | 370 + .../lib/python3.12/site-packages/flask/ctx.py | 449 + .../site-packages/flask/debughelpers.py | 178 + .../python3.12/site-packages/flask/globals.py | 51 + .../python3.12/site-packages/flask/helpers.py | 621 ++ .../site-packages/flask/json/__init__.py | 170 + .../json/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6684 bytes .../json/__pycache__/provider.cpython-312.pyc | Bin 0 -> 9251 bytes .../json/__pycache__/tag.cpython-312.pyc | Bin 0 -> 13946 bytes .../site-packages/flask/json/provider.py | 215 + .../site-packages/flask/json/tag.py | 327 + .../python3.12/site-packages/flask/logging.py | 79 + .../python3.12/site-packages/flask/py.typed | 0 .../site-packages/flask/sansio/README.md | 6 + .../sansio/__pycache__/app.cpython-312.pyc | Bin 0 -> 33578 bytes .../__pycache__/blueprints.cpython-312.pyc | Bin 0 -> 31175 bytes .../__pycache__/scaffold.cpython-312.pyc | Bin 0 -> 30480 bytes .../site-packages/flask/sansio/app.py | 964 ++ .../site-packages/flask/sansio/blueprints.py | 632 ++ .../site-packages/flask/sansio/scaffold.py | 801 ++ .../site-packages/flask/sessions.py | 379 + .../python3.12/site-packages/flask/signals.py | 17 + .../site-packages/flask/templating.py | 219 + .../python3.12/site-packages/flask/testing.py | 298 + .../python3.12/site-packages/flask/typing.py | 90 + .../python3.12/site-packages/flask/views.py | 191 + .../site-packages/flask/wrappers.py | 174 + .../site-packages/flask_socketio/__init__.py | 1117 +++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 57874 bytes .../__pycache__/namespace.cpython-312.pyc | Bin 0 -> 2727 bytes .../__pycache__/test_client.cpython-312.pyc | Bin 0 -> 13541 bytes .../site-packages/flask_socketio/namespace.py | 46 + .../flask_socketio/test_client.py | 236 + .../h11-0.14.0.dist-info/INSTALLER | 1 + .../h11-0.14.0.dist-info/LICENSE.txt | 22 + .../h11-0.14.0.dist-info/METADATA | 193 + .../site-packages/h11-0.14.0.dist-info/RECORD | 53 + .../h11-0.14.0.dist-info/REQUESTED | 0 .../site-packages/h11-0.14.0.dist-info/WHEEL | 5 + .../h11-0.14.0.dist-info/top_level.txt | 1 + .../python3.12/site-packages/h11/__init__.py | 62 + .../h11/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1067 bytes .../h11/__pycache__/_abnf.cpython-312.pyc | Bin 0 -> 1773 bytes .../__pycache__/_connection.cpython-312.pyc | Bin 0 -> 22594 bytes .../h11/__pycache__/_events.cpython-312.pyc | Bin 0 -> 13273 bytes .../h11/__pycache__/_headers.cpython-312.pyc | Bin 0 -> 7840 bytes .../h11/__pycache__/_readers.cpython-312.pyc | Bin 0 -> 9402 bytes .../_receivebuffer.cpython-312.pyc | Bin 0 -> 4691 bytes .../h11/__pycache__/_state.cpython-312.pyc | Bin 0 -> 8526 bytes .../h11/__pycache__/_util.cpython-312.pyc | Bin 0 -> 4711 bytes .../h11/__pycache__/_version.cpython-312.pyc | Bin 0 -> 205 bytes .../h11/__pycache__/_writers.cpython-312.pyc | Bin 0 -> 6277 bytes .../lib/python3.12/site-packages/h11/_abnf.py | 132 + .../site-packages/h11/_connection.py | 633 ++ .../python3.12/site-packages/h11/_events.py | 369 + .../python3.12/site-packages/h11/_headers.py | 278 + .../python3.12/site-packages/h11/_readers.py | 247 + .../site-packages/h11/_receivebuffer.py | 153 + .../python3.12/site-packages/h11/_state.py | 367 + .../lib/python3.12/site-packages/h11/_util.py | 135 + .../python3.12/site-packages/h11/_version.py | 16 + .../python3.12/site-packages/h11/_writers.py | 145 + .../lib/python3.12/site-packages/h11/py.typed | 1 + .../site-packages/h11/tests/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 182 bytes .../tests/__pycache__/helpers.cpython-312.pyc | Bin 0 -> 4373 bytes .../test_against_stdlib_http.cpython-312.pyc | Bin 0 -> 6906 bytes .../test_connection.cpython-312.pyc | Bin 0 -> 57975 bytes .../__pycache__/test_events.cpython-312.pyc | Bin 0 -> 5437 bytes .../__pycache__/test_headers.cpython-312.pyc | Bin 0 -> 6951 bytes .../__pycache__/test_helpers.cpython-312.pyc | Bin 0 -> 1190 bytes .../tests/__pycache__/test_io.cpython-312.pyc | Bin 0 -> 19831 bytes .../test_receivebuffer.cpython-312.pyc | Bin 0 -> 3965 bytes .../__pycache__/test_state.cpython-312.pyc | Bin 0 -> 12527 bytes .../__pycache__/test_util.cpython-312.pyc | Bin 0 -> 6101 bytes .../site-packages/h11/tests/data/test-file | 1 + .../site-packages/h11/tests/helpers.py | 101 + .../h11/tests/test_against_stdlib_http.py | 115 + .../h11/tests/test_connection.py | 1122 +++ .../site-packages/h11/tests/test_events.py | 150 + .../site-packages/h11/tests/test_headers.py | 157 + .../site-packages/h11/tests/test_helpers.py | 32 + .../site-packages/h11/tests/test_io.py | 572 ++ .../h11/tests/test_receivebuffer.py | 135 + .../site-packages/h11/tests/test_state.py | 271 + .../site-packages/h11/tests/test_util.py | 112 + .../idna-3.7.dist-info/INSTALLER | 1 + .../idna-3.7.dist-info/LICENSE.md | 31 + .../site-packages/idna-3.7.dist-info/METADATA | 243 + .../site-packages/idna-3.7.dist-info/RECORD | 23 + .../idna-3.7.dist-info/REQUESTED | 0 .../site-packages/idna-3.7.dist-info/WHEEL | 4 + .../python3.12/site-packages/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 870 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 0 -> 4965 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 0 -> 876 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 0 -> 15780 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 0 -> 99465 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 0 -> 2622 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 0 -> 205 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 0 -> 158837 bytes .../python3.12/site-packages/idna/codec.py | 118 + .../python3.12/site-packages/idna/compat.py | 13 + .../lib/python3.12/site-packages/idna/core.py | 395 + .../python3.12/site-packages/idna/idnadata.py | 4245 ++++++++ .../site-packages/idna/intranges.py | 54 + .../site-packages/idna/package_data.py | 2 + .../python3.12/site-packages/idna/py.typed | 0 .../site-packages/idna/uts46data.py | 8598 +++++++++++++++++ .../itsdangerous-2.2.0.dist-info/INSTALLER | 1 + .../itsdangerous-2.2.0.dist-info/LICENSE.txt | 28 + .../itsdangerous-2.2.0.dist-info/METADATA | 60 + .../itsdangerous-2.2.0.dist-info/RECORD | 23 + .../itsdangerous-2.2.0.dist-info/REQUESTED | 0 .../itsdangerous-2.2.0.dist-info/WHEEL | 4 + .../site-packages/itsdangerous/__init__.py | 38 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1623 bytes .../__pycache__/_json.cpython-312.pyc | Bin 0 -> 1177 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 0 -> 2677 bytes .../__pycache__/exc.cpython-312.pyc | Bin 0 -> 3937 bytes .../__pycache__/serializer.cpython-312.pyc | Bin 0 -> 15405 bytes .../__pycache__/signer.cpython-312.pyc | Bin 0 -> 11282 bytes .../__pycache__/timed.cpython-312.pyc | Bin 0 -> 8726 bytes .../__pycache__/url_safe.cpython-312.pyc | Bin 0 -> 3527 bytes .../site-packages/itsdangerous/_json.py | 18 + .../site-packages/itsdangerous/encoding.py | 54 + .../site-packages/itsdangerous/exc.py | 106 + .../site-packages/itsdangerous/py.typed | 0 .../site-packages/itsdangerous/serializer.py | 406 + .../site-packages/itsdangerous/signer.py | 266 + .../site-packages/itsdangerous/timed.py | 228 + .../site-packages/itsdangerous/url_safe.py | 83 + .../jinja2-3.1.4.dist-info/INSTALLER | 1 + .../jinja2-3.1.4.dist-info/LICENSE.txt | 28 + .../jinja2-3.1.4.dist-info/METADATA | 76 + .../jinja2-3.1.4.dist-info/RECORD | 58 + .../jinja2-3.1.4.dist-info/REQUESTED | 0 .../jinja2-3.1.4.dist-info/WHEEL | 4 + .../jinja2-3.1.4.dist-info/entry_points.txt | 3 + .../site-packages/jinja2/__init__.py | 38 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1648 bytes .../__pycache__/_identifier.cpython-312.pyc | Bin 0 -> 2129 bytes .../__pycache__/async_utils.cpython-312.pyc | Bin 0 -> 4073 bytes .../__pycache__/bccache.cpython-312.pyc | Bin 0 -> 19320 bytes .../__pycache__/compiler.cpython-312.pyc | Bin 0 -> 102253 bytes .../__pycache__/constants.cpython-312.pyc | Bin 0 -> 1551 bytes .../jinja2/__pycache__/debug.cpython-312.pyc | Bin 0 -> 6561 bytes .../__pycache__/defaults.cpython-312.pyc | Bin 0 -> 1601 bytes .../__pycache__/environment.cpython-312.pyc | Bin 0 -> 76697 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7710 bytes .../jinja2/__pycache__/ext.cpython-312.pyc | Bin 0 -> 41863 bytes .../__pycache__/filters.cpython-312.pyc | Bin 0 -> 72015 bytes .../__pycache__/idtracking.cpython-312.pyc | Bin 0 -> 19144 bytes .../jinja2/__pycache__/lexer.cpython-312.pyc | Bin 0 -> 32032 bytes .../__pycache__/loaders.cpython-312.pyc | Bin 0 -> 30958 bytes .../jinja2/__pycache__/meta.cpython-312.pyc | Bin 0 -> 5465 bytes .../__pycache__/nativetypes.cpython-312.pyc | Bin 0 -> 7014 bytes .../jinja2/__pycache__/nodes.cpython-312.pyc | Bin 0 -> 58214 bytes .../__pycache__/optimizer.cpython-312.pyc | Bin 0 -> 2684 bytes .../jinja2/__pycache__/parser.cpython-312.pyc | Bin 0 -> 60806 bytes .../__pycache__/runtime.cpython-312.pyc | Bin 0 -> 48487 bytes .../__pycache__/sandbox.cpython-312.pyc | Bin 0 -> 17885 bytes .../jinja2/__pycache__/tests.cpython-312.pyc | Bin 0 -> 9045 bytes .../jinja2/__pycache__/utils.cpython-312.pyc | Bin 0 -> 34463 bytes .../__pycache__/visitor.cpython-312.pyc | Bin 0 -> 5348 bytes .../site-packages/jinja2/_identifier.py | 6 + .../site-packages/jinja2/async_utils.py | 84 + .../site-packages/jinja2/bccache.py | 408 + .../site-packages/jinja2/compiler.py | 1960 ++++ .../site-packages/jinja2/constants.py | 20 + .../python3.12/site-packages/jinja2/debug.py | 191 + .../site-packages/jinja2/defaults.py | 48 + .../site-packages/jinja2/environment.py | 1675 ++++ .../site-packages/jinja2/exceptions.py | 166 + .../python3.12/site-packages/jinja2/ext.py | 870 ++ .../site-packages/jinja2/filters.py | 1866 ++++ .../site-packages/jinja2/idtracking.py | 318 + .../python3.12/site-packages/jinja2/lexer.py | 868 ++ .../site-packages/jinja2/loaders.py | 667 ++ .../python3.12/site-packages/jinja2/meta.py | 112 + .../site-packages/jinja2/nativetypes.py | 130 + .../python3.12/site-packages/jinja2/nodes.py | 1206 +++ .../site-packages/jinja2/optimizer.py | 48 + .../python3.12/site-packages/jinja2/parser.py | 1041 ++ .../python3.12/site-packages/jinja2/py.typed | 0 .../site-packages/jinja2/runtime.py | 1056 ++ .../site-packages/jinja2/sandbox.py | 429 + .../python3.12/site-packages/jinja2/tests.py | 256 + .../python3.12/site-packages/jinja2/utils.py | 755 ++ .../site-packages/jinja2/visitor.py | 92 + .../site-packages/markupsafe/__init__.py | 332 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 17451 bytes .../__pycache__/_native.cpython-312.pyc | Bin 0 -> 2540 bytes .../site-packages/markupsafe/_native.py | 63 + .../site-packages/markupsafe/_speedups.c | 320 + .../_speedups.cpython-312-x86_64-linux-gnu.so | Bin 0 -> 54072 bytes .../site-packages/markupsafe/_speedups.pyi | 9 + .../site-packages/markupsafe/py.typed | 0 .../site-packages/mysql/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 178 bytes .../site-packages/mysql/connector/__init__.py | 127 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1727 bytes .../__pycache__/abstracts.cpython-312.pyc | Bin 0 -> 104888 bytes .../authentication.cpython-312.pyc | Bin 0 -> 14124 bytes .../__pycache__/charsets.cpython-312.pyc | Bin 0 -> 10245 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 64151 bytes .../connection_cext.cpython-312.pyc | Bin 0 -> 44807 bytes .../__pycache__/constants.cpython-312.pyc | Bin 0 -> 48621 bytes .../__pycache__/conversion.cpython-312.pyc | Bin 0 -> 30919 bytes .../__pycache__/cursor.cpython-312.pyc | Bin 0 -> 68477 bytes .../__pycache__/cursor_cext.cpython-312.pyc | Bin 0 -> 53111 bytes .../__pycache__/custom_types.cpython-312.pyc | Bin 0 -> 1358 bytes .../__pycache__/dbapi.cpython-312.pyc | Bin 0 -> 3041 bytes .../__pycache__/errorcode.cpython-312.pyc | Bin 0 -> 90770 bytes .../__pycache__/errors.cpython-312.pyc | Bin 0 -> 10918 bytes .../__pycache__/logger.cpython-312.pyc | Bin 0 -> 357 bytes .../__pycache__/network.cpython-312.pyc | Bin 0 -> 30155 bytes .../__pycache__/optionfiles.cpython-312.pyc | Bin 0 -> 14139 bytes .../__pycache__/pooling.cpython-312.pyc | Bin 0 -> 27426 bytes .../__pycache__/protocol.cpython-312.pyc | Bin 0 -> 47121 bytes .../__pycache__/tls_ciphers.cpython-312.pyc | Bin 0 -> 7803 bytes .../__pycache__/types.cpython-312.pyc | Bin 0 -> 2126 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 28089 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 708 bytes .../mysql/connector/abstracts.py | 2643 +++++ .../mysql/connector/aio/__init__.py | 255 + .../aio/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 8605 bytes .../aio/__pycache__/abstracts.cpython-312.pyc | Bin 0 -> 83020 bytes .../authentication.cpython-312.pyc | Bin 0 -> 12329 bytes .../aio/__pycache__/charsets.cpython-312.pyc | Bin 0 -> 17361 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 63287 bytes .../aio/__pycache__/cursor.cpython-312.pyc | Bin 0 -> 67431 bytes .../aio/__pycache__/logger.cpython-312.pyc | Bin 0 -> 369 bytes .../aio/__pycache__/network.cpython-312.pyc | Bin 0 -> 28112 bytes .../aio/__pycache__/protocol.cpython-312.pyc | Bin 0 -> 11536 bytes .../aio/__pycache__/utils.cpython-312.pyc | Bin 0 -> 5923 bytes .../mysql/connector/aio/abstracts.py | 1924 ++++ .../mysql/connector/aio/authentication.py | 321 + .../mysql/connector/aio/charsets.py | 686 ++ .../mysql/connector/aio/connection.py | 1358 +++ .../mysql/connector/aio/cursor.py | 1508 +++ .../mysql/connector/aio/logger.py | 33 + .../mysql/connector/aio/network.py | 670 ++ .../mysql/connector/aio/plugins/__init__.py | 162 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6180 bytes ...entication_kerberos_client.cpython-312.pyc | Bin 0 -> 23323 bytes ...ntication_ldap_sasl_client.cpython-312.pyc | Bin 0 -> 28375 bytes .../authentication_oci_client.cpython-312.pyc | Bin 0 -> 10409 bytes ...entication_webauthn_client.cpython-312.pyc | Bin 0 -> 11354 bytes .../caching_sha2_password.cpython-312.pyc | Bin 0 -> 6339 bytes .../mysql_clear_password.cpython-312.pyc | Bin 0 -> 3913 bytes .../mysql_native_password.cpython-312.pyc | Bin 0 -> 4764 bytes .../sha256_password.cpython-312.pyc | Bin 0 -> 4057 bytes .../plugins/authentication_kerberos_client.py | 577 ++ .../authentication_ldap_sasl_client.py | 595 ++ .../aio/plugins/authentication_oci_client.py | 234 + .../plugins/authentication_webauthn_client.py | 291 + .../aio/plugins/caching_sha2_password.py | 160 + .../aio/plugins/mysql_clear_password.py | 105 + .../aio/plugins/mysql_native_password.py | 121 + .../connector/aio/plugins/sha256_password.py | 109 + .../mysql/connector/aio/protocol.py | 326 + .../mysql/connector/aio/py.typed | 0 .../mysql/connector/aio/utils.py | 153 + .../mysql/connector/authentication.py | 375 + .../site-packages/mysql/connector/charsets.py | 620 ++ .../mysql/connector/connection.py | 1553 +++ .../mysql/connector/connection_cext.py | 1093 +++ .../mysql/connector/constants.py | 1168 +++ .../mysql/connector/conversion.py | 773 ++ .../site-packages/mysql/connector/cursor.py | 1678 ++++ .../mysql/connector/cursor_cext.py | 1319 +++ .../mysql/connector/custom_types.py | 49 + .../site-packages/mysql/connector/dbapi.py | 92 + .../mysql/connector/django/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 195 bytes .../django/__pycache__/base.cpython-312.pyc | Bin 0 -> 26360 bytes .../django/__pycache__/client.cpython-312.pyc | Bin 0 -> 3804 bytes .../__pycache__/compiler.cpython-312.pyc | Bin 0 -> 454 bytes .../__pycache__/creation.cpython-312.pyc | Bin 0 -> 355 bytes .../__pycache__/features.cpython-312.pyc | Bin 0 -> 1499 bytes .../__pycache__/introspection.cpython-312.pyc | Bin 0 -> 18022 bytes .../__pycache__/operations.cpython-312.pyc | Bin 0 -> 3997 bytes .../django/__pycache__/schema.cpython-312.pyc | Bin 0 -> 1687 bytes .../__pycache__/validation.cpython-312.pyc | Bin 0 -> 363 bytes .../mysql/connector/django/base.py | 653 ++ .../mysql/connector/django/client.py | 106 + .../mysql/connector/django/compiler.py | 45 + .../mysql/connector/django/creation.py | 33 + .../mysql/connector/django/features.py | 50 + .../mysql/connector/django/introspection.py | 461 + .../mysql/connector/django/operations.py | 104 + .../mysql/connector/django/schema.py | 59 + .../mysql/connector/django/validation.py | 33 + .../mysql/connector/errorcode.py | 1877 ++++ .../site-packages/mysql/connector/errors.py | 342 + .../mysql/connector/locales/__init__.py | 80 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 2026 bytes .../mysql/connector/locales/eng/__init__.py | 30 + .../eng/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 233 bytes .../__pycache__/client_error.cpython-312.pyc | Bin 0 -> 6663 bytes .../connector/locales/eng/client_error.py | 152 + .../site-packages/mysql/connector/logger.py | 33 + .../site-packages/mysql/connector/network.py | 769 ++ .../mysql/connector/opentelemetry/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 202 bytes .../__pycache__/constants.cpython-312.pyc | Bin 0 -> 1159 bytes .../context_propagation.cpython-312.pyc | Bin 0 -> 3459 bytes .../instrumentation.cpython-312.pyc | Bin 0 -> 29593 bytes .../connector/opentelemetry/constants.py | 77 + .../opentelemetry/context_propagation.py | 112 + .../opentelemetry/instrumentation.py | 686 ++ .../mysql/connector/optionfiles.py | 357 + .../mysql/connector/plugins/__init__.py | 160 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6065 bytes ...entication_kerberos_client.cpython-312.pyc | Bin 0 -> 23015 bytes ...ntication_ldap_sasl_client.cpython-312.pyc | Bin 0 -> 27771 bytes .../authentication_oci_client.cpython-312.pyc | Bin 0 -> 10257 bytes ...entication_webauthn_client.cpython-312.pyc | Bin 0 -> 11021 bytes .../caching_sha2_password.cpython-312.pyc | Bin 0 -> 6083 bytes .../mysql_clear_password.cpython-312.pyc | Bin 0 -> 3760 bytes .../mysql_native_password.cpython-312.pyc | Bin 0 -> 4612 bytes .../sha256_password.cpython-312.pyc | Bin 0 -> 3904 bytes .../plugins/authentication_kerberos_client.py | 576 ++ .../authentication_ldap_sasl_client.py | 595 ++ .../plugins/authentication_oci_client.py | 234 + .../plugins/authentication_webauthn_client.py | 290 + .../plugins/caching_sha2_password.py | 159 + .../connector/plugins/mysql_clear_password.py | 104 + .../plugins/mysql_native_password.py | 120 + .../connector/plugins/sha256_password.py | 108 + .../site-packages/mysql/connector/pooling.py | 699 ++ .../site-packages/mysql/connector/protocol.py | 1153 +++ .../site-packages/mysql/connector/py.typed | 0 .../mysql/connector/tls_ciphers.py | 168 + .../site-packages/mysql/connector/types.py | 200 + .../site-packages/mysql/connector/utils.py | 747 ++ .../site-packages/mysql/connector/version.py | 46 + .../site-packages/mysql/vendor/libcrypto.so.3 | Bin 0 -> 5029680 bytes .../site-packages/mysql/vendor/libssl.so.3 | Bin 0 -> 779304 bytes .../plugin/authentication_kerberos_client.so | Bin 0 -> 7239632 bytes .../plugin/authentication_ldap_sasl_client.so | Bin 0 -> 7123304 bytes .../plugin/authentication_oci_client.so | Bin 0 -> 7398728 bytes .../plugin/authentication_webauthn_client.so | Bin 0 -> 7196296 bytes .../mysql/vendor/private/libcom_err.so.3 | Bin 0 -> 31992 bytes .../mysql/vendor/private/libcom_err.so.3.0 | Bin 0 -> 31992 bytes .../mysql/vendor/private/libfido2.so.1 | Bin 0 -> 591312 bytes .../mysql/vendor/private/libfido2.so.1.13.0 | Bin 0 -> 591312 bytes .../mysql/vendor/private/libgssapi_krb5.so.2 | Bin 0 -> 1988880 bytes .../vendor/private/libgssapi_krb5.so.2.2 | Bin 0 -> 1988880 bytes .../mysql/vendor/private/libk5crypto.so.3 | Bin 0 -> 1001136 bytes .../mysql/vendor/private/libk5crypto.so.3.1 | Bin 0 -> 1001136 bytes .../mysql/vendor/private/libkrb5.so.3 | Bin 0 -> 3408024 bytes .../mysql/vendor/private/libkrb5.so.3.3 | Bin 0 -> 3408024 bytes .../mysql/vendor/private/libkrb5support.so.0 | Bin 0 -> 175600 bytes .../vendor/private/libkrb5support.so.0.1 | Bin 0 -> 175600 bytes .../mysql/vendor/private/libsasl2.so.3 | Bin 0 -> 124864 bytes .../mysql/vendor/private/libsasl2.so.3.0.0 | Bin 0 -> 124864 bytes .../vendor/private/sasl2/libanonymous.so | Bin 0 -> 22832 bytes .../vendor/private/sasl2/libanonymous.so.3 | Bin 0 -> 22832 bytes .../private/sasl2/libanonymous.so.3.0.0 | Bin 0 -> 22832 bytes .../mysql/vendor/private/sasl2/libcrammd5.so | Bin 0 -> 23008 bytes .../vendor/private/sasl2/libcrammd5.so.3 | Bin 0 -> 23008 bytes .../vendor/private/sasl2/libcrammd5.so.3.0.0 | Bin 0 -> 23008 bytes .../vendor/private/sasl2/libdigestmd5.so | Bin 0 -> 63112 bytes .../vendor/private/sasl2/libdigestmd5.so.3 | Bin 0 -> 63112 bytes .../private/sasl2/libdigestmd5.so.3.0.0 | Bin 0 -> 63112 bytes .../mysql/vendor/private/sasl2/libgs2.so | Bin 0 -> 37936 bytes .../mysql/vendor/private/sasl2/libgs2.so.3 | Bin 0 -> 37936 bytes .../vendor/private/sasl2/libgs2.so.3.0.0 | Bin 0 -> 37936 bytes .../mysql/vendor/private/sasl2/libgssapiv2.so | Bin 0 -> 41456 bytes .../vendor/private/sasl2/libgssapiv2.so.3 | Bin 0 -> 41456 bytes .../vendor/private/sasl2/libgssapiv2.so.3.0.0 | Bin 0 -> 41456 bytes .../mysql/vendor/private/sasl2/libplain.so | Bin 0 -> 22704 bytes .../mysql/vendor/private/sasl2/libplain.so.3 | Bin 0 -> 22704 bytes .../vendor/private/sasl2/libplain.so.3.0.0 | Bin 0 -> 22704 bytes .../mysql/vendor/private/sasl2/libscram.so | Bin 0 -> 49192 bytes .../mysql/vendor/private/sasl2/libscram.so.3 | Bin 0 -> 49192 bytes .../vendor/private/sasl2/libscram.so.3.0.0 | Bin 0 -> 49192 bytes .../INSTALLER | 1 + .../LICENSE.txt | 4247 ++++++++ .../METADATA | 44 + .../RECORD | 189 + .../REQUESTED | 0 .../WHEEL | 5 + .../top_level.txt | 2 + .../pip-24.2.dist-info/AUTHORS.txt | 796 ++ .../pip-24.2.dist-info/INSTALLER | 1 + .../pip-24.2.dist-info/LICENSE.txt | 20 + .../site-packages/pip-24.2.dist-info/METADATA | 89 + .../site-packages/pip-24.2.dist-info/RECORD | 853 ++ .../pip-24.2.dist-info/REQUESTED | 0 .../site-packages/pip-24.2.dist-info/WHEEL | 5 + .../pip-24.2.dist-info/entry_points.txt | 3 + .../pip-24.2.dist-info/top_level.txt | 1 + .../python3.12/site-packages/pip/__init__.py | 13 + .../python3.12/site-packages/pip/__main__.py | 24 + .../site-packages/pip/__pip-runner__.py | 50 + .../pip/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 685 bytes .../pip/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 841 bytes .../__pip-runner__.cpython-312.pyc | Bin 0 -> 2205 bytes .../site-packages/pip/_internal/__init__.py | 18 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 787 bytes .../__pycache__/build_env.cpython-312.pyc | Bin 0 -> 14472 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 12667 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 0 -> 17632 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 35551 bytes .../__pycache__/main.cpython-312.pyc | Bin 0 -> 670 bytes .../__pycache__/pyproject.cpython-312.pyc | Bin 0 -> 5118 bytes .../self_outdated_check.cpython-312.pyc | Bin 0 -> 10208 bytes .../__pycache__/wheel_builder.cpython-312.pyc | Bin 0 -> 13615 bytes .../site-packages/pip/_internal/build_env.py | 315 + .../site-packages/pip/_internal/cache.py | 290 + .../pip/_internal/cli/__init__.py | 4 + .../cli/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 278 bytes .../autocompletion.cpython-312.pyc | Bin 0 -> 8606 bytes .../__pycache__/base_command.cpython-312.pyc | Bin 0 -> 10194 bytes .../__pycache__/cmdoptions.cpython-312.pyc | Bin 0 -> 30395 bytes .../command_context.cpython-312.pyc | Bin 0 -> 1774 bytes .../__pycache__/index_command.cpython-312.pyc | Bin 0 -> 7124 bytes .../cli/__pycache__/main.cpython-312.pyc | Bin 0 -> 2300 bytes .../__pycache__/main_parser.cpython-312.pyc | Bin 0 -> 4906 bytes .../cli/__pycache__/parser.cpython-312.pyc | Bin 0 -> 15013 bytes .../__pycache__/progress_bars.cpython-312.pyc | Bin 0 -> 3834 bytes .../__pycache__/req_command.cpython-312.pyc | Bin 0 -> 12241 bytes .../cli/__pycache__/spinners.cpython-312.pyc | Bin 0 -> 7833 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 375 bytes .../pip/_internal/cli/autocompletion.py | 176 + .../pip/_internal/cli/base_command.py | 231 + .../pip/_internal/cli/cmdoptions.py | 1075 +++ .../pip/_internal/cli/command_context.py | 27 + .../pip/_internal/cli/index_command.py | 170 + .../site-packages/pip/_internal/cli/main.py | 80 + .../pip/_internal/cli/main_parser.py | 134 + .../site-packages/pip/_internal/cli/parser.py | 294 + .../pip/_internal/cli/progress_bars.py | 94 + .../pip/_internal/cli/req_command.py | 329 + .../pip/_internal/cli/spinners.py | 159 + .../pip/_internal/cli/status_codes.py | 6 + .../pip/_internal/commands/__init__.py | 132 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4002 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 9701 bytes .../__pycache__/check.cpython-312.pyc | Bin 0 -> 2592 bytes .../__pycache__/completion.cpython-312.pyc | Bin 0 -> 5193 bytes .../__pycache__/configuration.cpython-312.pyc | Bin 0 -> 13163 bytes .../__pycache__/debug.cpython-312.pyc | Bin 0 -> 10068 bytes .../__pycache__/download.cpython-312.pyc | Bin 0 -> 7503 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 0 -> 4385 bytes .../commands/__pycache__/hash.cpython-312.pyc | Bin 0 -> 2968 bytes .../commands/__pycache__/help.cpython-312.pyc | Bin 0 -> 1673 bytes .../__pycache__/index.cpython-312.pyc | Bin 0 -> 6671 bytes .../__pycache__/inspect.cpython-312.pyc | Bin 0 -> 3980 bytes .../__pycache__/install.cpython-312.pyc | Bin 0 -> 29114 bytes .../commands/__pycache__/list.cpython-312.pyc | Bin 0 -> 15757 bytes .../__pycache__/search.cpython-312.pyc | Bin 0 -> 7518 bytes .../commands/__pycache__/show.cpython-312.pyc | Bin 0 -> 10477 bytes .../__pycache__/uninstall.cpython-312.pyc | Bin 0 -> 4709 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 0 -> 8865 bytes .../pip/_internal/commands/cache.py | 225 + .../pip/_internal/commands/check.py | 67 + .../pip/_internal/commands/completion.py | 130 + .../pip/_internal/commands/configuration.py | 280 + .../pip/_internal/commands/debug.py | 201 + .../pip/_internal/commands/download.py | 146 + .../pip/_internal/commands/freeze.py | 109 + .../pip/_internal/commands/hash.py | 59 + .../pip/_internal/commands/help.py | 41 + .../pip/_internal/commands/index.py | 139 + .../pip/_internal/commands/inspect.py | 92 + .../pip/_internal/commands/install.py | 783 ++ .../pip/_internal/commands/list.py | 375 + .../pip/_internal/commands/search.py | 172 + .../pip/_internal/commands/show.py | 217 + .../pip/_internal/commands/uninstall.py | 114 + .../pip/_internal/commands/wheel.py | 182 + .../pip/_internal/configuration.py | 383 + .../pip/_internal/distributions/__init__.py | 21 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 941 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 2893 bytes .../__pycache__/installed.cpython-312.pyc | Bin 0 -> 1700 bytes .../__pycache__/sdist.cpython-312.pyc | Bin 0 -> 8427 bytes .../__pycache__/wheel.cpython-312.pyc | Bin 0 -> 2281 bytes .../pip/_internal/distributions/base.py | 53 + .../pip/_internal/distributions/installed.py | 29 + .../pip/_internal/distributions/sdist.py | 158 + .../pip/_internal/distributions/wheel.py | 42 + .../site-packages/pip/_internal/exceptions.py | 777 ++ .../pip/_internal/index/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 232 bytes .../__pycache__/collector.cpython-312.pyc | Bin 0 -> 21617 bytes .../package_finder.cpython-312.pyc | Bin 0 -> 40648 bytes .../index/__pycache__/sources.cpython-312.pyc | Bin 0 -> 12588 bytes .../pip/_internal/index/collector.py | 494 + .../pip/_internal/index/package_finder.py | 1020 ++ .../pip/_internal/index/sources.py | 285 + .../pip/_internal/locations/__init__.py | 456 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 16440 bytes .../__pycache__/_distutils.cpython-312.pyc | Bin 0 -> 6852 bytes .../__pycache__/_sysconfig.cpython-312.pyc | Bin 0 -> 8028 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 3781 bytes .../pip/_internal/locations/_distutils.py | 172 + .../pip/_internal/locations/_sysconfig.py | 214 + .../pip/_internal/locations/base.py | 81 + .../site-packages/pip/_internal/main.py | 12 + .../pip/_internal/metadata/__init__.py | 128 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5869 bytes .../__pycache__/_json.cpython-312.pyc | Bin 0 -> 2926 bytes .../metadata/__pycache__/base.cpython-312.pyc | Bin 0 -> 35198 bytes .../__pycache__/pkg_resources.cpython-312.pyc | Bin 0 -> 16084 bytes .../pip/_internal/metadata/_json.py | 84 + .../pip/_internal/metadata/base.py | 688 ++ .../_internal/metadata/importlib/__init__.py | 6 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 358 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 0 -> 4491 bytes .../__pycache__/_dists.cpython-312.pyc | Bin 0 -> 12565 bytes .../__pycache__/_envs.cpython-312.pyc | Bin 0 -> 11079 bytes .../_internal/metadata/importlib/_compat.py | 85 + .../_internal/metadata/importlib/_dists.py | 221 + .../pip/_internal/metadata/importlib/_envs.py | 189 + .../pip/_internal/metadata/pkg_resources.py | 301 + .../pip/_internal/models/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 266 bytes .../__pycache__/candidate.cpython-312.pyc | Bin 0 -> 1604 bytes .../__pycache__/direct_url.cpython-312.pyc | Bin 0 -> 10844 bytes .../format_control.cpython-312.pyc | Bin 0 -> 4223 bytes .../models/__pycache__/index.cpython-312.pyc | Bin 0 -> 1694 bytes .../installation_report.cpython-312.pyc | Bin 0 -> 2277 bytes .../models/__pycache__/link.cpython-312.pyc | Bin 0 -> 26617 bytes .../models/__pycache__/scheme.cpython-312.pyc | Bin 0 -> 1023 bytes .../__pycache__/search_scope.cpython-312.pyc | Bin 0 -> 4987 bytes .../selection_prefs.cpython-312.pyc | Bin 0 -> 1851 bytes .../__pycache__/target_python.cpython-312.pyc | Bin 0 -> 4953 bytes .../models/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 5760 bytes .../pip/_internal/models/candidate.py | 25 + .../pip/_internal/models/direct_url.py | 224 + .../pip/_internal/models/format_control.py | 78 + .../pip/_internal/models/index.py | 28 + .../_internal/models/installation_report.py | 56 + .../pip/_internal/models/link.py | 590 ++ .../pip/_internal/models/scheme.py | 25 + .../pip/_internal/models/search_scope.py | 127 + .../pip/_internal/models/selection_prefs.py | 53 + .../pip/_internal/models/target_python.py | 121 + .../pip/_internal/models/wheel.py | 93 + .../pip/_internal/network/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 254 bytes .../network/__pycache__/auth.cpython-312.pyc | Bin 0 -> 22099 bytes .../network/__pycache__/cache.cpython-312.pyc | Bin 0 -> 6451 bytes .../__pycache__/download.cpython-312.pyc | Bin 0 -> 8479 bytes .../__pycache__/lazy_wheel.cpython-312.pyc | Bin 0 -> 11607 bytes .../__pycache__/session.cpython-312.pyc | Bin 0 -> 18874 bytes .../network/__pycache__/utils.cpython-312.pyc | Bin 0 -> 2255 bytes .../__pycache__/xmlrpc.cpython-312.pyc | Bin 0 -> 2949 bytes .../pip/_internal/network/auth.py | 566 ++ .../pip/_internal/network/cache.py | 106 + .../pip/_internal/network/download.py | 187 + .../pip/_internal/network/lazy_wheel.py | 210 + .../pip/_internal/network/session.py | 522 + .../pip/_internal/network/utils.py | 98 + .../pip/_internal/network/xmlrpc.py | 62 + .../pip/_internal/operations/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 197 bytes .../__pycache__/check.cpython-312.pyc | Bin 0 -> 7104 bytes .../__pycache__/freeze.cpython-312.pyc | Bin 0 -> 10128 bytes .../__pycache__/prepare.cpython-312.pyc | Bin 0 -> 25772 bytes .../_internal/operations/build/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 203 bytes .../__pycache__/build_tracker.cpython-312.pyc | Bin 0 -> 7667 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 1857 bytes .../metadata_editable.cpython-312.pyc | Bin 0 -> 1891 bytes .../metadata_legacy.cpython-312.pyc | Bin 0 -> 3011 bytes .../build/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 1677 bytes .../wheel_editable.cpython-312.pyc | Bin 0 -> 2016 bytes .../__pycache__/wheel_legacy.cpython-312.pyc | Bin 0 -> 3846 bytes .../operations/build/build_tracker.py | 138 + .../_internal/operations/build/metadata.py | 39 + .../operations/build/metadata_editable.py | 41 + .../operations/build/metadata_legacy.py | 74 + .../pip/_internal/operations/build/wheel.py | 37 + .../operations/build/wheel_editable.py | 46 + .../operations/build/wheel_legacy.py | 102 + .../pip/_internal/operations/check.py | 181 + .../pip/_internal/operations/freeze.py | 258 + .../_internal/operations/install/__init__.py | 2 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 266 bytes .../editable_legacy.cpython-312.pyc | Bin 0 -> 1798 bytes .../install/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 34103 bytes .../operations/install/editable_legacy.py | 47 + .../pip/_internal/operations/install/wheel.py | 741 ++ .../pip/_internal/operations/prepare.py | 732 ++ .../site-packages/pip/_internal/pyproject.py | 185 + .../pip/_internal/req/__init__.py | 90 + .../req/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3445 bytes .../__pycache__/constructors.cpython-312.pyc | Bin 0 -> 21218 bytes .../req/__pycache__/req_file.cpython-312.pyc | Bin 0 -> 21432 bytes .../__pycache__/req_install.cpython-312.pyc | Bin 0 -> 38475 bytes .../req/__pycache__/req_set.cpython-312.pyc | Bin 0 -> 5483 bytes .../__pycache__/req_uninstall.cpython-312.pyc | Bin 0 -> 32094 bytes .../pip/_internal/req/constructors.py | 560 ++ .../pip/_internal/req/req_file.py | 551 ++ .../pip/_internal/req/req_install.py | 934 ++ .../pip/_internal/req/req_set.py | 82 + .../pip/_internal/req/req_uninstall.py | 633 ++ .../pip/_internal/resolution/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 197 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 1185 bytes .../pip/_internal/resolution/base.py | 20 + .../_internal/resolution/legacy/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 204 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 0 -> 22579 bytes .../_internal/resolution/legacy/resolver.py | 597 ++ .../resolution/resolvelib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 208 bytes .../__pycache__/base.cpython-312.pyc | Bin 0 -> 8149 bytes .../__pycache__/candidates.cpython-312.pyc | Bin 0 -> 29172 bytes .../__pycache__/factory.cpython-312.pyc | Bin 0 -> 32286 bytes .../found_candidates.cpython-312.pyc | Bin 0 -> 6793 bytes .../__pycache__/provider.cpython-312.pyc | Bin 0 -> 10523 bytes .../__pycache__/reporter.cpython-312.pyc | Bin 0 -> 5040 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 0 -> 15356 bytes .../__pycache__/resolver.cpython-312.pyc | Bin 0 -> 12314 bytes .../_internal/resolution/resolvelib/base.py | 139 + .../resolution/resolvelib/candidates.py | 569 ++ .../resolution/resolvelib/factory.py | 817 ++ .../resolution/resolvelib/found_candidates.py | 174 + .../resolution/resolvelib/provider.py | 258 + .../resolution/resolvelib/reporter.py | 81 + .../resolution/resolvelib/requirements.py | 245 + .../resolution/resolvelib/resolver.py | 317 + .../pip/_internal/self_outdated_check.py | 244 + .../pip/_internal/utils/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 192 bytes .../__pycache__/_jaraco_text.cpython-312.pyc | Bin 0 -> 4527 bytes .../utils/__pycache__/_log.cpython-312.pyc | Bin 0 -> 1863 bytes .../utils/__pycache__/appdirs.cpython-312.pyc | Bin 0 -> 2407 bytes .../utils/__pycache__/compat.cpython-312.pyc | Bin 0 -> 2904 bytes .../compatibility_tags.cpython-312.pyc | Bin 0 -> 5560 bytes .../__pycache__/datetime.cpython-312.pyc | Bin 0 -> 681 bytes .../__pycache__/deprecation.cpython-312.pyc | Bin 0 -> 4188 bytes .../direct_url_helpers.cpython-312.pyc | Bin 0 -> 3533 bytes .../__pycache__/egg_link.cpython-312.pyc | Bin 0 -> 3203 bytes .../__pycache__/encoding.cpython-312.pyc | Bin 0 -> 2145 bytes .../__pycache__/entrypoints.cpython-312.pyc | Bin 0 -> 3990 bytes .../__pycache__/filesystem.cpython-312.pyc | Bin 0 -> 7326 bytes .../__pycache__/filetypes.cpython-312.pyc | Bin 0 -> 1161 bytes .../utils/__pycache__/glibc.cpython-312.pyc | Bin 0 -> 2416 bytes .../utils/__pycache__/hashes.cpython-312.pyc | Bin 0 -> 7600 bytes .../utils/__pycache__/logging.cpython-312.pyc | Bin 0 -> 13555 bytes .../utils/__pycache__/misc.cpython-312.pyc | Bin 0 -> 33548 bytes .../__pycache__/packaging.cpython-312.pyc | Bin 0 -> 2580 bytes .../utils/__pycache__/retry.cpython-312.pyc | Bin 0 -> 2105 bytes .../setuptools_build.cpython-312.pyc | Bin 0 -> 4547 bytes .../__pycache__/subprocess.cpython-312.pyc | Bin 0 -> 8636 bytes .../__pycache__/temp_dir.cpython-312.pyc | Bin 0 -> 12021 bytes .../__pycache__/unpacking.cpython-312.pyc | Bin 0 -> 13495 bytes .../utils/__pycache__/urls.cpython-312.pyc | Bin 0 -> 2074 bytes .../__pycache__/virtualenv.cpython-312.pyc | Bin 0 -> 4463 bytes .../utils/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 5900 bytes .../pip/_internal/utils/_jaraco_text.py | 109 + .../site-packages/pip/_internal/utils/_log.py | 38 + .../pip/_internal/utils/appdirs.py | 52 + .../pip/_internal/utils/compat.py | 79 + .../pip/_internal/utils/compatibility_tags.py | 165 + .../pip/_internal/utils/datetime.py | 11 + .../pip/_internal/utils/deprecation.py | 124 + .../pip/_internal/utils/direct_url_helpers.py | 87 + .../pip/_internal/utils/egg_link.py | 80 + .../pip/_internal/utils/encoding.py | 36 + .../pip/_internal/utils/entrypoints.py | 84 + .../pip/_internal/utils/filesystem.py | 149 + .../pip/_internal/utils/filetypes.py | 27 + .../pip/_internal/utils/glibc.py | 101 + .../pip/_internal/utils/hashes.py | 147 + .../pip/_internal/utils/logging.py | 347 + .../site-packages/pip/_internal/utils/misc.py | 777 ++ .../pip/_internal/utils/packaging.py | 57 + .../pip/_internal/utils/retry.py | 42 + .../pip/_internal/utils/setuptools_build.py | 146 + .../pip/_internal/utils/subprocess.py | 245 + .../pip/_internal/utils/temp_dir.py | 296 + .../pip/_internal/utils/unpacking.py | 337 + .../site-packages/pip/_internal/utils/urls.py | 55 + .../pip/_internal/utils/virtualenv.py | 104 + .../pip/_internal/utils/wheel.py | 134 + .../pip/_internal/vcs/__init__.py | 15 + .../vcs/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 531 bytes .../vcs/__pycache__/bazaar.cpython-312.pyc | Bin 0 -> 5052 bytes .../vcs/__pycache__/git.cpython-312.pyc | Bin 0 -> 19017 bytes .../vcs/__pycache__/mercurial.cpython-312.pyc | Bin 0 -> 7605 bytes .../__pycache__/subversion.cpython-312.pyc | Bin 0 -> 12524 bytes .../versioncontrol.cpython-312.pyc | Bin 0 -> 28997 bytes .../site-packages/pip/_internal/vcs/bazaar.py | 112 + .../site-packages/pip/_internal/vcs/git.py | 527 + .../pip/_internal/vcs/mercurial.py | 163 + .../pip/_internal/vcs/subversion.py | 324 + .../pip/_internal/vcs/versioncontrol.py | 688 ++ .../pip/_internal/wheel_builder.py | 354 + .../site-packages/pip/_vendor/__init__.py | 116 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4550 bytes .../typing_extensions.cpython-312.pyc | Bin 0 -> 139452 bytes .../pip/_vendor/cachecontrol/__init__.py | 28 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 903 bytes .../__pycache__/_cmd.cpython-312.pyc | Bin 0 -> 2647 bytes .../__pycache__/adapter.cpython-312.pyc | Bin 0 -> 6465 bytes .../__pycache__/cache.cpython-312.pyc | Bin 0 -> 3788 bytes .../__pycache__/controller.cpython-312.pyc | Bin 0 -> 16225 bytes .../__pycache__/filewrapper.cpython-312.pyc | Bin 0 -> 4348 bytes .../__pycache__/heuristics.cpython-312.pyc | Bin 0 -> 6695 bytes .../__pycache__/serialize.cpython-312.pyc | Bin 0 -> 5262 bytes .../__pycache__/wrapper.cpython-312.pyc | Bin 0 -> 1675 bytes .../pip/_vendor/cachecontrol/_cmd.py | 70 + .../pip/_vendor/cachecontrol/adapter.py | 161 + .../pip/_vendor/cachecontrol/cache.py | 74 + .../_vendor/cachecontrol/caches/__init__.py | 8 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 436 bytes .../__pycache__/file_cache.cpython-312.pyc | Bin 0 -> 7764 bytes .../__pycache__/redis_cache.cpython-312.pyc | Bin 0 -> 2734 bytes .../_vendor/cachecontrol/caches/file_cache.py | 182 + .../cachecontrol/caches/redis_cache.py | 48 + .../pip/_vendor/cachecontrol/controller.py | 499 + .../pip/_vendor/cachecontrol/filewrapper.py | 119 + .../pip/_vendor/cachecontrol/heuristics.py | 154 + .../pip/_vendor/cachecontrol/py.typed | 0 .../pip/_vendor/cachecontrol/serialize.py | 146 + .../pip/_vendor/cachecontrol/wrapper.py | 43 + .../pip/_vendor/certifi/__init__.py | 4 + .../pip/_vendor/certifi/__main__.py | 12 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 319 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 646 bytes .../certifi/__pycache__/core.cpython-312.pyc | Bin 0 -> 3212 bytes .../pip/_vendor/certifi/cacert.pem | 4798 +++++++++ .../site-packages/pip/_vendor/certifi/core.py | 114 + .../pip/_vendor/certifi/py.typed | 0 .../pip/_vendor/distlib/__init__.py | 33 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1270 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 45532 bytes .../__pycache__/database.cpython-312.pyc | Bin 0 -> 65682 bytes .../distlib/__pycache__/index.cpython-312.pyc | Bin 0 -> 24317 bytes .../__pycache__/locators.cpython-312.pyc | Bin 0 -> 59931 bytes .../__pycache__/manifest.cpython-312.pyc | Bin 0 -> 15077 bytes .../__pycache__/markers.cpython-312.pyc | Bin 0 -> 7679 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 41667 bytes .../__pycache__/resources.cpython-312.pyc | Bin 0 -> 17313 bytes .../__pycache__/scripts.cpython-312.pyc | Bin 0 -> 19770 bytes .../distlib/__pycache__/util.cpython-312.pyc | Bin 0 -> 88018 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 30346 bytes .../distlib/__pycache__/wheel.cpython-312.pyc | Bin 0 -> 51449 bytes .../pip/_vendor/distlib/compat.py | 1138 +++ .../pip/_vendor/distlib/database.py | 1359 +++ .../pip/_vendor/distlib/index.py | 508 + .../pip/_vendor/distlib/locators.py | 1303 +++ .../pip/_vendor/distlib/manifest.py | 384 + .../pip/_vendor/distlib/markers.py | 167 + .../pip/_vendor/distlib/metadata.py | 1068 ++ .../pip/_vendor/distlib/resources.py | 358 + .../pip/_vendor/distlib/scripts.py | 466 + .../site-packages/pip/_vendor/distlib/t32.exe | Bin 0 -> 97792 bytes .../pip/_vendor/distlib/t64-arm.exe | Bin 0 -> 182784 bytes .../site-packages/pip/_vendor/distlib/t64.exe | Bin 0 -> 108032 bytes .../site-packages/pip/_vendor/distlib/util.py | 2025 ++++ .../pip/_vendor/distlib/version.py | 751 ++ .../site-packages/pip/_vendor/distlib/w32.exe | Bin 0 -> 91648 bytes .../pip/_vendor/distlib/w64-arm.exe | Bin 0 -> 168448 bytes .../site-packages/pip/_vendor/distlib/w64.exe | Bin 0 -> 101888 bytes .../pip/_vendor/distlib/wheel.py | 1099 +++ .../pip/_vendor/distro/__init__.py | 54 + .../pip/_vendor/distro/__main__.py | 4 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 961 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 293 bytes .../distro/__pycache__/distro.cpython-312.pyc | Bin 0 -> 53793 bytes .../pip/_vendor/distro/distro.py | 1403 +++ .../site-packages/pip/_vendor/distro/py.typed | 0 .../pip/_vendor/idna/__init__.py | 44 + .../idna/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 882 bytes .../idna/__pycache__/codec.cpython-312.pyc | Bin 0 -> 4977 bytes .../idna/__pycache__/compat.cpython-312.pyc | Bin 0 -> 888 bytes .../idna/__pycache__/core.cpython-312.pyc | Bin 0 -> 15792 bytes .../idna/__pycache__/idnadata.cpython-312.pyc | Bin 0 -> 99477 bytes .../__pycache__/intranges.cpython-312.pyc | Bin 0 -> 2634 bytes .../__pycache__/package_data.cpython-312.pyc | Bin 0 -> 217 bytes .../__pycache__/uts46data.cpython-312.pyc | Bin 0 -> 158849 bytes .../site-packages/pip/_vendor/idna/codec.py | 118 + .../site-packages/pip/_vendor/idna/compat.py | 13 + .../site-packages/pip/_vendor/idna/core.py | 395 + .../pip/_vendor/idna/idnadata.py | 4245 ++++++++ .../pip/_vendor/idna/intranges.py | 54 + .../pip/_vendor/idna/package_data.py | 2 + .../site-packages/pip/_vendor/idna/py.typed | 0 .../pip/_vendor/idna/uts46data.py | 8598 +++++++++++++++++ .../pip/_vendor/msgpack/__init__.py | 55 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1742 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 2026 bytes .../msgpack/__pycache__/ext.cpython-312.pyc | Bin 0 -> 8171 bytes .../__pycache__/fallback.cpython-312.pyc | Bin 0 -> 42044 bytes .../pip/_vendor/msgpack/exceptions.py | 48 + .../site-packages/pip/_vendor/msgpack/ext.py | 168 + .../pip/_vendor/msgpack/fallback.py | 951 ++ .../pip/_vendor/packaging/__init__.py | 15 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 559 bytes .../__pycache__/_elffile.cpython-312.pyc | Bin 0 -> 4968 bytes .../__pycache__/_manylinux.cpython-312.pyc | Bin 0 -> 9686 bytes .../__pycache__/_musllinux.cpython-312.pyc | Bin 0 -> 4555 bytes .../__pycache__/_parser.cpython-312.pyc | Bin 0 -> 13986 bytes .../__pycache__/_structures.cpython-312.pyc | Bin 0 -> 3242 bytes .../__pycache__/_tokenizer.cpython-312.pyc | Bin 0 -> 7916 bytes .../__pycache__/markers.cpython-312.pyc | Bin 0 -> 11012 bytes .../__pycache__/metadata.cpython-312.pyc | Bin 0 -> 24954 bytes .../__pycache__/requirements.cpython-312.pyc | Bin 0 -> 4411 bytes .../__pycache__/specifiers.cpython-312.pyc | Bin 0 -> 38740 bytes .../__pycache__/tags.cpython-312.pyc | Bin 0 -> 21345 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 7342 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 19508 bytes .../pip/_vendor/packaging/_elffile.py | 110 + .../pip/_vendor/packaging/_manylinux.py | 262 + .../pip/_vendor/packaging/_musllinux.py | 85 + .../pip/_vendor/packaging/_parser.py | 354 + .../pip/_vendor/packaging/_structures.py | 61 + .../pip/_vendor/packaging/_tokenizer.py | 194 + .../pip/_vendor/packaging/markers.py | 325 + .../pip/_vendor/packaging/metadata.py | 804 ++ .../pip/_vendor/packaging/py.typed | 0 .../pip/_vendor/packaging/requirements.py | 91 + .../pip/_vendor/packaging/specifiers.py | 1009 ++ .../pip/_vendor/packaging/tags.py | 568 ++ .../pip/_vendor/packaging/utils.py | 174 + .../pip/_vendor/packaging/version.py | 563 ++ .../pip/_vendor/pkg_resources/__init__.py | 3676 +++++++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 161262 bytes .../pip/_vendor/platformdirs/__init__.py | 627 ++ .../pip/_vendor/platformdirs/__main__.py | 55 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 19830 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 1949 bytes .../__pycache__/android.cpython-312.pyc | Bin 0 -> 10698 bytes .../__pycache__/api.cpython-312.pyc | Bin 0 -> 12912 bytes .../__pycache__/macos.cpython-312.pyc | Bin 0 -> 8008 bytes .../__pycache__/unix.cpython-312.pyc | Bin 0 -> 15038 bytes .../__pycache__/version.cpython-312.pyc | Bin 0 -> 598 bytes .../__pycache__/windows.cpython-312.pyc | Bin 0 -> 13675 bytes .../pip/_vendor/platformdirs/android.py | 249 + .../pip/_vendor/platformdirs/api.py | 292 + .../pip/_vendor/platformdirs/macos.py | 130 + .../pip/_vendor/platformdirs/py.typed | 0 .../pip/_vendor/platformdirs/unix.py | 275 + .../pip/_vendor/platformdirs/version.py | 16 + .../pip/_vendor/platformdirs/windows.py | 272 + .../pip/_vendor/pygments/__init__.py | 82 + .../pip/_vendor/pygments/__main__.py | 17 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3490 bytes .../__pycache__/__main__.cpython-312.pyc | Bin 0 -> 736 bytes .../__pycache__/cmdline.cpython-312.pyc | Bin 0 -> 26586 bytes .../__pycache__/console.cpython-312.pyc | Bin 0 -> 2630 bytes .../__pycache__/filter.cpython-312.pyc | Bin 0 -> 3223 bytes .../__pycache__/formatter.cpython-312.pyc | Bin 0 -> 4722 bytes .../__pycache__/lexer.cpython-312.pyc | Bin 0 -> 38363 bytes .../__pycache__/modeline.cpython-312.pyc | Bin 0 -> 1561 bytes .../__pycache__/plugin.cpython-312.pyc | Bin 0 -> 2610 bytes .../__pycache__/regexopt.cpython-312.pyc | Bin 0 -> 4079 bytes .../__pycache__/scanner.cpython-312.pyc | Bin 0 -> 4758 bytes .../__pycache__/sphinxext.cpython-312.pyc | Bin 0 -> 12100 bytes .../__pycache__/style.cpython-312.pyc | Bin 0 -> 6695 bytes .../__pycache__/token.cpython-312.pyc | Bin 0 -> 8191 bytes .../__pycache__/unistring.cpython-312.pyc | Bin 0 -> 32974 bytes .../pygments/__pycache__/util.cpython-312.pyc | Bin 0 -> 14071 bytes .../pip/_vendor/pygments/cmdline.py | 668 ++ .../pip/_vendor/pygments/console.py | 70 + .../pip/_vendor/pygments/filter.py | 70 + .../pip/_vendor/pygments/filters/__init__.py | 940 ++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 37913 bytes .../pip/_vendor/pygments/formatter.py | 129 + .../_vendor/pygments/formatters/__init__.py | 157 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 6904 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 4217 bytes .../__pycache__/bbcode.cpython-312.pyc | Bin 0 -> 4224 bytes .../__pycache__/groff.cpython-312.pyc | Bin 0 -> 7295 bytes .../__pycache__/html.cpython-312.pyc | Bin 0 -> 41028 bytes .../__pycache__/img.cpython-312.pyc | Bin 0 -> 28550 bytes .../__pycache__/irc.cpython-312.pyc | Bin 0 -> 6057 bytes .../__pycache__/latex.cpython-312.pyc | Bin 0 -> 20127 bytes .../__pycache__/other.cpython-312.pyc | Bin 0 -> 6879 bytes .../__pycache__/pangomarkup.cpython-312.pyc | Bin 0 -> 2960 bytes .../__pycache__/rtf.cpython-312.pyc | Bin 0 -> 13775 bytes .../__pycache__/svg.cpython-312.pyc | Bin 0 -> 9141 bytes .../__pycache__/terminal.cpython-312.pyc | Bin 0 -> 5821 bytes .../__pycache__/terminal256.cpython-312.pyc | Bin 0 -> 15120 bytes .../_vendor/pygments/formatters/_mapping.py | 23 + .../pip/_vendor/pygments/formatters/bbcode.py | 108 + .../pip/_vendor/pygments/formatters/groff.py | 170 + .../pip/_vendor/pygments/formatters/html.py | 987 ++ .../pip/_vendor/pygments/formatters/img.py | 685 ++ .../pip/_vendor/pygments/formatters/irc.py | 154 + .../pip/_vendor/pygments/formatters/latex.py | 518 + .../pip/_vendor/pygments/formatters/other.py | 160 + .../pygments/formatters/pangomarkup.py | 83 + .../pip/_vendor/pygments/formatters/rtf.py | 349 + .../pip/_vendor/pygments/formatters/svg.py | 185 + .../_vendor/pygments/formatters/terminal.py | 127 + .../pygments/formatters/terminal256.py | 338 + .../pip/_vendor/pygments/lexer.py | 963 ++ .../pip/_vendor/pygments/lexers/__init__.py | 362 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 14623 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 68265 bytes .../lexers/__pycache__/python.cpython-312.pyc | Bin 0 -> 42969 bytes .../pip/_vendor/pygments/lexers/_mapping.py | 589 ++ .../pip/_vendor/pygments/lexers/python.py | 1198 +++ .../pip/_vendor/pygments/modeline.py | 43 + .../pip/_vendor/pygments/plugin.py | 72 + .../pip/_vendor/pygments/regexopt.py | 91 + .../pip/_vendor/pygments/scanner.py | 104 + .../pip/_vendor/pygments/sphinxext.py | 247 + .../pip/_vendor/pygments/style.py | 203 + .../pip/_vendor/pygments/styles/__init__.py | 61 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 2666 bytes .../__pycache__/_mapping.cpython-312.pyc | Bin 0 -> 3650 bytes .../pip/_vendor/pygments/styles/_mapping.py | 54 + .../pip/_vendor/pygments/token.py | 214 + .../pip/_vendor/pygments/unistring.py | 153 + .../pip/_vendor/pygments/util.py | 324 + .../pip/_vendor/pyproject_hooks/__init__.py | 23 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 615 bytes .../__pycache__/_compat.cpython-312.pyc | Bin 0 -> 376 bytes .../__pycache__/_impl.cpython-312.pyc | Bin 0 -> 14695 bytes .../pip/_vendor/pyproject_hooks/_compat.py | 8 + .../pip/_vendor/pyproject_hooks/_impl.py | 330 + .../pyproject_hooks/_in_process/__init__.py | 18 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1082 bytes .../__pycache__/_in_process.cpython-312.pyc | Bin 0 -> 14355 bytes .../_in_process/_in_process.py | 353 + .../pip/_vendor/requests/__init__.py | 179 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5255 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 0 -> 586 bytes .../_internal_utils.cpython-312.pyc | Bin 0 -> 2026 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 0 -> 28433 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 0 -> 7193 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 0 -> 13923 bytes .../__pycache__/certs.cpython-312.pyc | Bin 0 -> 924 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 1679 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 0 -> 25200 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7600 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 0 -> 4230 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 0 -> 1053 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 35430 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 1268 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 27848 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 6025 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 5625 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 36368 bytes .../pip/_vendor/requests/__version__.py | 14 + .../pip/_vendor/requests/_internal_utils.py | 50 + .../pip/_vendor/requests/adapters.py | 719 ++ .../site-packages/pip/_vendor/requests/api.py | 157 + .../pip/_vendor/requests/auth.py | 314 + .../pip/_vendor/requests/certs.py | 24 + .../pip/_vendor/requests/compat.py | 78 + .../pip/_vendor/requests/cookies.py | 561 ++ .../pip/_vendor/requests/exceptions.py | 151 + .../pip/_vendor/requests/help.py | 127 + .../pip/_vendor/requests/hooks.py | 33 + .../pip/_vendor/requests/models.py | 1037 ++ .../pip/_vendor/requests/packages.py | 25 + .../pip/_vendor/requests/sessions.py | 831 ++ .../pip/_vendor/requests/status_codes.py | 128 + .../pip/_vendor/requests/structures.py | 99 + .../pip/_vendor/requests/utils.py | 1096 +++ .../pip/_vendor/resolvelib/__init__.py | 26 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 636 bytes .../__pycache__/providers.cpython-312.pyc | Bin 0 -> 6853 bytes .../__pycache__/reporters.cpython-312.pyc | Bin 0 -> 2656 bytes .../__pycache__/resolvers.cpython-312.pyc | Bin 0 -> 25882 bytes .../__pycache__/structs.cpython-312.pyc | Bin 0 -> 10502 bytes .../pip/_vendor/resolvelib/compat/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 202 bytes .../collections_abc.cpython-312.pyc | Bin 0 -> 422 bytes .../resolvelib/compat/collections_abc.py | 6 + .../pip/_vendor/resolvelib/providers.py | 133 + .../pip/_vendor/resolvelib/py.typed | 0 .../pip/_vendor/resolvelib/reporters.py | 43 + .../pip/_vendor/resolvelib/resolvers.py | 547 ++ .../pip/_vendor/resolvelib/structs.py | 170 + .../pip/_vendor/rich/__init__.py | 177 + .../pip/_vendor/rich/__main__.py | 273 + .../rich/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 7017 bytes .../rich/__pycache__/__main__.cpython-312.pyc | Bin 0 -> 10294 bytes .../__pycache__/_cell_widths.cpython-312.pyc | Bin 0 -> 7874 bytes .../__pycache__/_emoji_codes.cpython-312.pyc | Bin 0 -> 205978 bytes .../_emoji_replace.cpython-312.pyc | Bin 0 -> 1731 bytes .../_export_format.cpython-312.pyc | Bin 0 -> 2351 bytes .../__pycache__/_extension.cpython-312.pyc | Bin 0 -> 539 bytes .../rich/__pycache__/_fileno.cpython-312.pyc | Bin 0 -> 857 bytes .../rich/__pycache__/_inspect.cpython-312.pyc | Bin 0 -> 12075 bytes .../__pycache__/_log_render.cpython-312.pyc | Bin 0 -> 4149 bytes .../rich/__pycache__/_loop.cpython-312.pyc | Bin 0 -> 1872 bytes .../__pycache__/_null_file.cpython-312.pyc | Bin 0 -> 3622 bytes .../__pycache__/_palettes.cpython-312.pyc | Bin 0 -> 5162 bytes .../rich/__pycache__/_pick.cpython-312.pyc | Bin 0 -> 723 bytes .../rich/__pycache__/_ratio.cpython-312.pyc | Bin 0 -> 6572 bytes .../__pycache__/_spinners.cpython-312.pyc | Bin 0 -> 13181 bytes .../rich/__pycache__/_stack.cpython-312.pyc | Bin 0 -> 967 bytes .../rich/__pycache__/_timer.cpython-312.pyc | Bin 0 -> 867 bytes .../_win32_console.cpython-312.pyc | Bin 0 -> 28978 bytes .../rich/__pycache__/_windows.cpython-312.pyc | Bin 0 -> 2492 bytes .../_windows_renderer.cpython-312.pyc | Bin 0 -> 3565 bytes .../rich/__pycache__/_wrap.cpython-312.pyc | Bin 0 -> 3328 bytes .../rich/__pycache__/abc.cpython-312.pyc | Bin 0 -> 1610 bytes .../rich/__pycache__/align.cpython-312.pyc | Bin 0 -> 12289 bytes .../rich/__pycache__/ansi.cpython-312.pyc | Bin 0 -> 9068 bytes .../rich/__pycache__/bar.cpython-312.pyc | Bin 0 -> 4274 bytes .../rich/__pycache__/box.cpython-312.pyc | Bin 0 -> 11840 bytes .../rich/__pycache__/cells.cpython-312.pyc | Bin 0 -> 5812 bytes .../rich/__pycache__/color.cpython-312.pyc | Bin 0 -> 26571 bytes .../__pycache__/color_triplet.cpython-312.pyc | Bin 0 -> 1703 bytes .../rich/__pycache__/columns.cpython-312.pyc | Bin 0 -> 8586 bytes .../rich/__pycache__/console.cpython-312.pyc | Bin 0 -> 113438 bytes .../__pycache__/constrain.cpython-312.pyc | Bin 0 -> 2260 bytes .../__pycache__/containers.cpython-312.pyc | Bin 0 -> 9212 bytes .../rich/__pycache__/control.cpython-312.pyc | Bin 0 -> 10943 bytes .../default_styles.cpython-312.pyc | Bin 0 -> 10368 bytes .../rich/__pycache__/diagnose.cpython-312.pyc | Bin 0 -> 1490 bytes .../rich/__pycache__/emoji.cpython-312.pyc | Bin 0 -> 4214 bytes .../rich/__pycache__/errors.cpython-312.pyc | Bin 0 -> 1847 bytes .../__pycache__/file_proxy.cpython-312.pyc | Bin 0 -> 3573 bytes .../rich/__pycache__/filesize.cpython-312.pyc | Bin 0 -> 3074 bytes .../__pycache__/highlighter.cpython-312.pyc | Bin 0 -> 9889 bytes .../rich/__pycache__/json.cpython-312.pyc | Bin 0 -> 6037 bytes .../rich/__pycache__/jupyter.cpython-312.pyc | Bin 0 -> 5210 bytes .../rich/__pycache__/layout.cpython-312.pyc | Bin 0 -> 20160 bytes .../rich/__pycache__/live.cpython-312.pyc | Bin 0 -> 19011 bytes .../__pycache__/live_render.cpython-312.pyc | Bin 0 -> 4891 bytes .../rich/__pycache__/logging.cpython-312.pyc | Bin 0 -> 13556 bytes .../rich/__pycache__/markup.cpython-312.pyc | Bin 0 -> 9569 bytes .../rich/__pycache__/measure.cpython-312.pyc | Bin 0 -> 6380 bytes .../rich/__pycache__/padding.cpython-312.pyc | Bin 0 -> 7126 bytes .../rich/__pycache__/pager.cpython-312.pyc | Bin 0 -> 1813 bytes .../rich/__pycache__/palette.cpython-312.pyc | Bin 0 -> 5299 bytes .../rich/__pycache__/panel.cpython-312.pyc | Bin 0 -> 12185 bytes .../rich/__pycache__/pretty.cpython-312.pyc | Bin 0 -> 40149 bytes .../rich/__pycache__/progress.cpython-312.pyc | Bin 0 -> 74937 bytes .../__pycache__/progress_bar.cpython-312.pyc | Bin 0 -> 10379 bytes .../rich/__pycache__/prompt.cpython-312.pyc | Bin 0 -> 14789 bytes .../rich/__pycache__/protocol.cpython-312.pyc | Bin 0 -> 1794 bytes .../rich/__pycache__/region.cpython-312.pyc | Bin 0 -> 569 bytes .../rich/__pycache__/repr.cpython-312.pyc | Bin 0 -> 6615 bytes .../rich/__pycache__/rule.cpython-312.pyc | Bin 0 -> 6570 bytes .../rich/__pycache__/scope.cpython-312.pyc | Bin 0 -> 3827 bytes .../rich/__pycache__/screen.cpython-312.pyc | Bin 0 -> 2481 bytes .../rich/__pycache__/segment.cpython-312.pyc | Bin 0 -> 28117 bytes .../rich/__pycache__/spinner.cpython-312.pyc | Bin 0 -> 6066 bytes .../rich/__pycache__/status.cpython-312.pyc | Bin 0 -> 6063 bytes .../rich/__pycache__/style.cpython-312.pyc | Bin 0 -> 33502 bytes .../rich/__pycache__/styled.cpython-312.pyc | Bin 0 -> 2141 bytes .../rich/__pycache__/syntax.cpython-312.pyc | Bin 0 -> 39950 bytes .../rich/__pycache__/table.cpython-312.pyc | Bin 0 -> 43541 bytes .../terminal_theme.cpython-312.pyc | Bin 0 -> 3350 bytes .../rich/__pycache__/text.cpython-312.pyc | Bin 0 -> 60851 bytes .../rich/__pycache__/theme.cpython-312.pyc | Bin 0 -> 6337 bytes .../rich/__pycache__/themes.cpython-312.pyc | Bin 0 -> 316 bytes .../__pycache__/traceback.cpython-312.pyc | Bin 0 -> 31513 bytes .../rich/__pycache__/tree.cpython-312.pyc | Bin 0 -> 11438 bytes .../pip/_vendor/rich/_cell_widths.py | 454 + .../pip/_vendor/rich/_emoji_codes.py | 3610 +++++++ .../pip/_vendor/rich/_emoji_replace.py | 32 + .../pip/_vendor/rich/_export_format.py | 76 + .../pip/_vendor/rich/_extension.py | 10 + .../site-packages/pip/_vendor/rich/_fileno.py | 24 + .../pip/_vendor/rich/_inspect.py | 270 + .../pip/_vendor/rich/_log_render.py | 94 + .../site-packages/pip/_vendor/rich/_loop.py | 43 + .../pip/_vendor/rich/_null_file.py | 69 + .../pip/_vendor/rich/_palettes.py | 309 + .../site-packages/pip/_vendor/rich/_pick.py | 17 + .../site-packages/pip/_vendor/rich/_ratio.py | 159 + .../pip/_vendor/rich/_spinners.py | 482 + .../site-packages/pip/_vendor/rich/_stack.py | 16 + .../site-packages/pip/_vendor/rich/_timer.py | 19 + .../pip/_vendor/rich/_win32_console.py | 662 ++ .../pip/_vendor/rich/_windows.py | 71 + .../pip/_vendor/rich/_windows_renderer.py | 56 + .../site-packages/pip/_vendor/rich/_wrap.py | 93 + .../site-packages/pip/_vendor/rich/abc.py | 33 + .../site-packages/pip/_vendor/rich/align.py | 311 + .../site-packages/pip/_vendor/rich/ansi.py | 240 + .../site-packages/pip/_vendor/rich/bar.py | 93 + .../site-packages/pip/_vendor/rich/box.py | 480 + .../site-packages/pip/_vendor/rich/cells.py | 167 + .../site-packages/pip/_vendor/rich/color.py | 621 ++ .../pip/_vendor/rich/color_triplet.py | 38 + .../site-packages/pip/_vendor/rich/columns.py | 187 + .../site-packages/pip/_vendor/rich/console.py | 2633 +++++ .../pip/_vendor/rich/constrain.py | 37 + .../pip/_vendor/rich/containers.py | 167 + .../site-packages/pip/_vendor/rich/control.py | 225 + .../pip/_vendor/rich/default_styles.py | 190 + .../pip/_vendor/rich/diagnose.py | 37 + .../site-packages/pip/_vendor/rich/emoji.py | 96 + .../site-packages/pip/_vendor/rich/errors.py | 34 + .../pip/_vendor/rich/file_proxy.py | 57 + .../pip/_vendor/rich/filesize.py | 89 + .../pip/_vendor/rich/highlighter.py | 232 + .../site-packages/pip/_vendor/rich/json.py | 139 + .../site-packages/pip/_vendor/rich/jupyter.py | 101 + .../site-packages/pip/_vendor/rich/layout.py | 442 + .../site-packages/pip/_vendor/rich/live.py | 375 + .../pip/_vendor/rich/live_render.py | 112 + .../site-packages/pip/_vendor/rich/logging.py | 289 + .../site-packages/pip/_vendor/rich/markup.py | 251 + .../site-packages/pip/_vendor/rich/measure.py | 151 + .../site-packages/pip/_vendor/rich/padding.py | 141 + .../site-packages/pip/_vendor/rich/pager.py | 34 + .../site-packages/pip/_vendor/rich/palette.py | 100 + .../site-packages/pip/_vendor/rich/panel.py | 312 + .../site-packages/pip/_vendor/rich/pretty.py | 995 ++ .../pip/_vendor/rich/progress.py | 1699 ++++ .../pip/_vendor/rich/progress_bar.py | 223 + .../site-packages/pip/_vendor/rich/prompt.py | 375 + .../pip/_vendor/rich/protocol.py | 42 + .../site-packages/pip/_vendor/rich/py.typed | 0 .../site-packages/pip/_vendor/rich/region.py | 10 + .../site-packages/pip/_vendor/rich/repr.py | 149 + .../site-packages/pip/_vendor/rich/rule.py | 130 + .../site-packages/pip/_vendor/rich/scope.py | 86 + .../site-packages/pip/_vendor/rich/screen.py | 54 + .../site-packages/pip/_vendor/rich/segment.py | 738 ++ .../site-packages/pip/_vendor/rich/spinner.py | 137 + .../site-packages/pip/_vendor/rich/status.py | 131 + .../site-packages/pip/_vendor/rich/style.py | 796 ++ .../site-packages/pip/_vendor/rich/styled.py | 42 + .../site-packages/pip/_vendor/rich/syntax.py | 958 ++ .../site-packages/pip/_vendor/rich/table.py | 1000 ++ .../pip/_vendor/rich/terminal_theme.py | 153 + .../site-packages/pip/_vendor/rich/text.py | 1357 +++ .../site-packages/pip/_vendor/rich/theme.py | 115 + .../site-packages/pip/_vendor/rich/themes.py | 5 + .../pip/_vendor/rich/traceback.py | 753 ++ .../site-packages/pip/_vendor/rich/tree.py | 249 + .../pip/_vendor/tomli/__init__.py | 11 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 386 bytes .../tomli/__pycache__/_parser.cpython-312.pyc | Bin 0 -> 26901 bytes .../tomli/__pycache__/_re.cpython-312.pyc | Bin 0 -> 3910 bytes .../tomli/__pycache__/_types.cpython-312.pyc | Bin 0 -> 368 bytes .../pip/_vendor/tomli/_parser.py | 691 ++ .../site-packages/pip/_vendor/tomli/_re.py | 107 + .../site-packages/pip/_vendor/tomli/_types.py | 10 + .../site-packages/pip/_vendor/tomli/py.typed | 1 + .../pip/_vendor/truststore/__init__.py | 13 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 620 bytes .../__pycache__/_api.cpython-312.pyc | Bin 0 -> 16542 bytes .../__pycache__/_macos.cpython-312.pyc | Bin 0 -> 16574 bytes .../__pycache__/_openssl.cpython-312.pyc | Bin 0 -> 2207 bytes .../_ssl_constants.cpython-312.pyc | Bin 0 -> 1101 bytes .../__pycache__/_windows.cpython-312.pyc | Bin 0 -> 15742 bytes .../pip/_vendor/truststore/_api.py | 313 + .../pip/_vendor/truststore/_macos.py | 499 + .../pip/_vendor/truststore/_openssl.py | 66 + .../pip/_vendor/truststore/_ssl_constants.py | 31 + .../pip/_vendor/truststore/_windows.py | 564 ++ .../pip/_vendor/truststore/py.typed | 0 .../pip/_vendor/typing_extensions.py | 3641 +++++++ .../pip/_vendor/urllib3/__init__.py | 102 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 3407 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 0 -> 16366 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 220 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 20405 bytes .../connectionpool.cpython-312.pyc | Bin 0 -> 36439 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 13495 bytes .../__pycache__/fields.cpython-312.pyc | Bin 0 -> 10404 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 0 -> 4014 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 0 -> 20431 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 7296 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 33945 bytes .../pip/_vendor/urllib3/_collections.py | 355 + .../pip/_vendor/urllib3/_version.py | 2 + .../pip/_vendor/urllib3/connection.py | 572 ++ .../pip/_vendor/urllib3/connectionpool.py | 1137 +++ .../pip/_vendor/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 200 bytes .../_appengine_environ.cpython-312.pyc | Bin 0 -> 1850 bytes .../__pycache__/appengine.cpython-312.pyc | Bin 0 -> 11566 bytes .../__pycache__/ntlmpool.cpython-312.pyc | Bin 0 -> 5716 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 0 -> 24450 bytes .../securetransport.cpython-312.pyc | Bin 0 -> 35503 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 0 -> 7513 bytes .../urllib3/contrib/_appengine_environ.py | 36 + .../contrib/_securetransport/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 217 bytes .../__pycache__/bindings.cpython-312.pyc | Bin 0 -> 17429 bytes .../__pycache__/low_level.cpython-312.pyc | Bin 0 -> 14765 bytes .../contrib/_securetransport/bindings.py | 519 + .../contrib/_securetransport/low_level.py | 397 + .../pip/_vendor/urllib3/contrib/appengine.py | 314 + .../pip/_vendor/urllib3/contrib/ntlmpool.py | 130 + .../pip/_vendor/urllib3/contrib/pyopenssl.py | 518 + .../urllib3/contrib/securetransport.py | 920 ++ .../pip/_vendor/urllib3/contrib/socks.py | 216 + .../pip/_vendor/urllib3/exceptions.py | 323 + .../pip/_vendor/urllib3/fields.py | 274 + .../pip/_vendor/urllib3/filepost.py | 98 + .../pip/_vendor/urllib3/packages/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 201 bytes .../packages/__pycache__/six.cpython-312.pyc | Bin 0 -> 41257 bytes .../urllib3/packages/backports/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 211 bytes .../__pycache__/makefile.cpython-312.pyc | Bin 0 -> 1827 bytes .../weakref_finalize.cpython-312.pyc | Bin 0 -> 7338 bytes .../urllib3/packages/backports/makefile.py | 51 + .../packages/backports/weakref_finalize.py | 155 + .../pip/_vendor/urllib3/packages/six.py | 1076 +++ .../pip/_vendor/urllib3/poolmanager.py | 540 ++ .../pip/_vendor/urllib3/request.py | 191 + .../pip/_vendor/urllib3/response.py | 879 ++ .../pip/_vendor/urllib3/util/__init__.py | 49 + .../util/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1148 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 4749 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 0 -> 1554 bytes .../util/__pycache__/queue.cpython-312.pyc | Bin 0 -> 1354 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 0 -> 4185 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 0 -> 2994 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 0 -> 21703 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 0 -> 15086 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 0 -> 5053 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 0 -> 10755 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 0 -> 11141 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 0 -> 15787 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 0 -> 4405 bytes .../pip/_vendor/urllib3/util/connection.py | 149 + .../pip/_vendor/urllib3/util/proxy.py | 57 + .../pip/_vendor/urllib3/util/queue.py | 22 + .../pip/_vendor/urllib3/util/request.py | 137 + .../pip/_vendor/urllib3/util/response.py | 107 + .../pip/_vendor/urllib3/util/retry.py | 620 ++ .../pip/_vendor/urllib3/util/ssl_.py | 495 + .../urllib3/util/ssl_match_hostname.py | 159 + .../pip/_vendor/urllib3/util/ssltransport.py | 221 + .../pip/_vendor/urllib3/util/timeout.py | 271 + .../pip/_vendor/urllib3/util/url.py | 435 + .../pip/_vendor/urllib3/util/wait.py | 152 + .../site-packages/pip/_vendor/vendor.txt | 18 + .../lib/python3.12/site-packages/pip/py.typed | 4 + .../pyClamd-0.4.0.dist-info/INSTALLER | 1 + .../pyClamd-0.4.0.dist-info/METADATA | 21 + .../pyClamd-0.4.0.dist-info/RECORD | 12 + .../pyClamd-0.4.0.dist-info/REQUESTED | 0 .../pyClamd-0.4.0.dist-info/WHEEL | 5 + .../pyClamd-0.4.0.dist-info/top_level.txt | 1 + .../site-packages/pyclamd/__init__.py | 13 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 438 bytes .../__pycache__/pyclamd.cpython-312.pyc | Bin 0 -> 30384 bytes .../__pycache__/test_pyclamd.cpython-312.pyc | Bin 0 -> 9109 bytes .../site-packages/pyclamd/pyclamd.py | 896 ++ .../site-packages/pyclamd/test_pyclamd.py | 245 + .../python_dotenv-1.0.1.dist-info/INSTALLER | 1 + .../python_dotenv-1.0.1.dist-info/LICENSE | 27 + .../python_dotenv-1.0.1.dist-info/METADATA | 692 ++ .../python_dotenv-1.0.1.dist-info/RECORD | 26 + .../python_dotenv-1.0.1.dist-info/REQUESTED | 0 .../python_dotenv-1.0.1.dist-info/WHEEL | 5 + .../entry_points.txt | 2 + .../top_level.txt | 1 + .../python_engineio-4.9.1.dist-info/INSTALLER | 1 + .../python_engineio-4.9.1.dist-info/LICENSE | 20 + .../python_engineio-4.9.1.dist-info/METADATA | 48 + .../python_engineio-4.9.1.dist-info/RECORD | 59 + .../python_engineio-4.9.1.dist-info/REQUESTED | 0 .../python_engineio-4.9.1.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../INSTALLER | 1 + .../python_socketio-5.11.3.dist-info/LICENSE | 20 + .../python_socketio-5.11.3.dist-info/METADATA | 71 + .../python_socketio-5.11.3.dist-info/RECORD | 69 + .../REQUESTED | 0 .../python_socketio-5.11.3.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../requests-2.32.3.dist-info/INSTALLER | 1 + .../requests-2.32.3.dist-info/LICENSE | 175 + .../requests-2.32.3.dist-info/METADATA | 119 + .../requests-2.32.3.dist-info/RECORD | 43 + .../requests-2.32.3.dist-info/REQUESTED | 0 .../requests-2.32.3.dist-info/WHEEL | 5 + .../requests-2.32.3.dist-info/top_level.txt | 1 + .../site-packages/requests/__init__.py | 184 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 5410 bytes .../__pycache__/__version__.cpython-312.pyc | Bin 0 -> 574 bytes .../_internal_utils.cpython-312.pyc | Bin 0 -> 2014 bytes .../__pycache__/adapters.cpython-312.pyc | Bin 0 -> 28348 bytes .../requests/__pycache__/api.cpython-312.pyc | Bin 0 -> 7181 bytes .../requests/__pycache__/auth.cpython-312.pyc | Bin 0 -> 13911 bytes .../__pycache__/certs.cpython-312.pyc | Bin 0 -> 656 bytes .../__pycache__/compat.cpython-312.pyc | Bin 0 -> 2070 bytes .../__pycache__/cookies.cpython-312.pyc | Bin 0 -> 25188 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7575 bytes .../requests/__pycache__/help.cpython-312.pyc | Bin 0 -> 4317 bytes .../__pycache__/hooks.cpython-312.pyc | Bin 0 -> 1041 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 35346 bytes .../__pycache__/packages.cpython-312.pyc | Bin 0 -> 1108 bytes .../__pycache__/sessions.cpython-312.pyc | Bin 0 -> 27836 bytes .../__pycache__/status_codes.cpython-312.pyc | Bin 0 -> 6013 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 5613 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 36344 bytes .../site-packages/requests/__version__.py | 14 + .../site-packages/requests/_internal_utils.py | 50 + .../site-packages/requests/adapters.py | 719 ++ .../python3.12/site-packages/requests/api.py | 157 + .../python3.12/site-packages/requests/auth.py | 314 + .../site-packages/requests/certs.py | 17 + .../site-packages/requests/compat.py | 94 + .../site-packages/requests/cookies.py | 561 ++ .../site-packages/requests/exceptions.py | 151 + .../python3.12/site-packages/requests/help.py | 134 + .../site-packages/requests/hooks.py | 33 + .../site-packages/requests/models.py | 1037 ++ .../site-packages/requests/packages.py | 23 + .../site-packages/requests/sessions.py | 831 ++ .../site-packages/requests/status_codes.py | 128 + .../site-packages/requests/structures.py | 99 + .../site-packages/requests/utils.py | 1096 +++ .../INSTALLER | 1 + .../simple_websocket-1.0.0.dist-info/LICENSE | 21 + .../simple_websocket-1.0.0.dist-info/METADATA | 33 + .../simple_websocket-1.0.0.dist-info/RECORD | 17 + .../REQUESTED | 0 .../simple_websocket-1.0.0.dist-info/WHEEL | 5 + .../top_level.txt | 1 + .../simple_websocket/__init__.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 379 bytes .../__pycache__/aiows.cpython-312.pyc | Bin 0 -> 24589 bytes .../__pycache__/asgi.cpython-312.pyc | Bin 0 -> 3258 bytes .../__pycache__/errors.cpython-312.pyc | Bin 0 -> 1410 bytes .../__pycache__/ws.cpython-312.pyc | Bin 0 -> 24325 bytes .../site-packages/simple_websocket/aiows.py | 467 + .../site-packages/simple_websocket/asgi.py | 50 + .../site-packages/simple_websocket/errors.py | 16 + .../site-packages/simple_websocket/ws.py | 478 + .../site-packages/socketio/__init__.py | 28 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1392 bytes .../__pycache__/admin.cpython-312.pyc | Bin 0 -> 25745 bytes .../socketio/__pycache__/asgi.cpython-312.pyc | Bin 0 -> 2533 bytes .../__pycache__/async_admin.cpython-312.pyc | Bin 0 -> 27300 bytes .../async_aiopika_manager.cpython-312.pyc | Bin 0 -> 7988 bytes .../__pycache__/async_client.cpython-312.pyc | Bin 0 -> 34035 bytes .../__pycache__/async_manager.cpython-312.pyc | Bin 0 -> 5572 bytes .../async_namespace.cpython-312.pyc | Bin 0 -> 12381 bytes .../async_pubsub_manager.cpython-312.pyc | Bin 0 -> 13619 bytes .../async_redis_manager.cpython-312.pyc | Bin 0 -> 5936 bytes .../__pycache__/async_server.cpython-312.pyc | Bin 0 -> 42785 bytes .../async_simple_client.cpython-312.pyc | Bin 0 -> 12213 bytes .../__pycache__/base_client.cpython-312.pyc | Bin 0 -> 13183 bytes .../__pycache__/base_manager.cpython-312.pyc | Bin 0 -> 8690 bytes .../base_namespace.cpython-312.pyc | Bin 0 -> 2336 bytes .../__pycache__/base_server.cpython-312.pyc | Bin 0 -> 12361 bytes .../__pycache__/client.cpython-312.pyc | Bin 0 -> 30248 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 1991 bytes .../__pycache__/kafka_manager.cpython-312.pyc | Bin 0 -> 3715 bytes .../__pycache__/kombu_manager.cpython-312.pyc | Bin 0 -> 7679 bytes .../__pycache__/manager.cpython-312.pyc | Bin 0 -> 4507 bytes .../__pycache__/middleware.cpython-312.pyc | Bin 0 -> 2241 bytes .../msgpack_packet.cpython-312.pyc | Bin 0 -> 1235 bytes .../__pycache__/namespace.cpython-312.pyc | Bin 0 -> 10196 bytes .../__pycache__/packet.cpython-312.pyc | Bin 0 -> 8864 bytes .../pubsub_manager.cpython-312.pyc | Bin 0 -> 11699 bytes .../__pycache__/redis_manager.cpython-312.pyc | Bin 0 -> 6118 bytes .../__pycache__/server.cpython-312.pyc | Bin 0 -> 39199 bytes .../__pycache__/simple_client.cpython-312.pyc | Bin 0 -> 11013 bytes .../__pycache__/tornado.cpython-312.pyc | Bin 0 -> 542 bytes .../__pycache__/zmq_manager.cpython-312.pyc | Bin 0 -> 4878 bytes .../site-packages/socketio/admin.py | 405 + .../python3.12/site-packages/socketio/asgi.py | 47 + .../site-packages/socketio/async_admin.py | 398 + .../socketio/async_aiopika_manager.py | 126 + .../site-packages/socketio/async_client.py | 586 ++ .../site-packages/socketio/async_manager.py | 119 + .../site-packages/socketio/async_namespace.py | 255 + .../socketio/async_pubsub_manager.py | 242 + .../socketio/async_redis_manager.py | 107 + .../site-packages/socketio/async_server.py | 697 ++ .../socketio/async_simple_client.py | 209 + .../site-packages/socketio/base_client.py | 292 + .../site-packages/socketio/base_manager.py | 162 + .../site-packages/socketio/base_namespace.py | 33 + .../site-packages/socketio/base_server.py | 263 + .../site-packages/socketio/client.py | 542 ++ .../site-packages/socketio/exceptions.py | 38 + .../site-packages/socketio/kafka_manager.py | 66 + .../site-packages/socketio/kombu_manager.py | 134 + .../site-packages/socketio/manager.py | 92 + .../site-packages/socketio/middleware.py | 40 + .../site-packages/socketio/msgpack_packet.py | 18 + .../site-packages/socketio/namespace.py | 198 + .../site-packages/socketio/packet.py | 190 + .../site-packages/socketio/pubsub_manager.py | 232 + .../site-packages/socketio/redis_manager.py | 115 + .../site-packages/socketio/server.py | 666 ++ .../site-packages/socketio/simple_client.py | 191 + .../site-packages/socketio/tornado.py | 9 + .../site-packages/socketio/zmq_manager.py | 105 + .../urllib3-2.2.2.dist-info/INSTALLER | 1 + .../urllib3-2.2.2.dist-info/METADATA | 154 + .../urllib3-2.2.2.dist-info/RECORD | 76 + .../urllib3-2.2.2.dist-info/REQUESTED | 0 .../urllib3-2.2.2.dist-info/WHEEL | 4 + .../licenses/LICENSE.txt | 21 + .../site-packages/urllib3/__init__.py | 211 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 7305 bytes .../_base_connection.cpython-312.pyc | Bin 0 -> 6852 bytes .../__pycache__/_collections.cpython-312.pyc | Bin 0 -> 22594 bytes .../_request_methods.cpython-312.pyc | Bin 0 -> 10667 bytes .../__pycache__/_version.cpython-312.pyc | Bin 0 -> 258 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 32253 bytes .../connectionpool.cpython-312.pyc | Bin 0 -> 39733 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 15827 bytes .../__pycache__/fields.cpython-312.pyc | Bin 0 -> 12049 bytes .../__pycache__/filepost.cpython-312.pyc | Bin 0 -> 3498 bytes .../urllib3/__pycache__/http2.cpython-312.pyc | Bin 0 -> 10966 bytes .../__pycache__/poolmanager.cpython-312.pyc | Bin 0 -> 24026 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 50438 bytes .../site-packages/urllib3/_base_connection.py | 172 + .../site-packages/urllib3/_collections.py | 483 + .../site-packages/urllib3/_request_methods.py | 279 + .../site-packages/urllib3/_version.py | 4 + .../site-packages/urllib3/connection.py | 929 ++ .../site-packages/urllib3/connectionpool.py | 1182 +++ .../site-packages/urllib3/contrib/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 188 bytes .../__pycache__/pyopenssl.cpython-312.pyc | Bin 0 -> 26926 bytes .../contrib/__pycache__/socks.cpython-312.pyc | Bin 0 -> 8166 bytes .../urllib3/contrib/emscripten/__init__.py | 16 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 896 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 10230 bytes .../__pycache__/fetch.cpython-312.pyc | Bin 0 -> 18366 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 1416 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 12693 bytes .../urllib3/contrib/emscripten/connection.py | 254 + .../emscripten/emscripten_fetch_worker.js | 110 + .../urllib3/contrib/emscripten/fetch.py | 418 + .../urllib3/contrib/emscripten/request.py | 22 + .../urllib3/contrib/emscripten/response.py | 285 + .../urllib3/contrib/pyopenssl.py | 548 ++ .../site-packages/urllib3/contrib/socks.py | 228 + .../site-packages/urllib3/exceptions.py | 321 + .../site-packages/urllib3/fields.py | 341 + .../site-packages/urllib3/filepost.py | 89 + .../python3.12/site-packages/urllib3/http2.py | 230 + .../site-packages/urllib3/poolmanager.py | 637 ++ .../python3.12/site-packages/urllib3/py.typed | 2 + .../site-packages/urllib3/response.py | 1265 +++ .../site-packages/urllib3/util/__init__.py | 42 + .../util/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1001 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 4735 bytes .../util/__pycache__/proxy.cpython-312.pyc | Bin 0 -> 1213 bytes .../util/__pycache__/request.cpython-312.pyc | Bin 0 -> 8032 bytes .../util/__pycache__/response.cpython-312.pyc | Bin 0 -> 2872 bytes .../util/__pycache__/retry.cpython-312.pyc | Bin 0 -> 20287 bytes .../util/__pycache__/ssl_.cpython-312.pyc | Bin 0 -> 16550 bytes .../ssl_match_hostname.cpython-312.pyc | Bin 0 -> 5533 bytes .../__pycache__/ssltransport.cpython-312.pyc | Bin 0 -> 13528 bytes .../util/__pycache__/timeout.cpython-312.pyc | Bin 0 -> 11685 bytes .../util/__pycache__/url.cpython-312.pyc | Bin 0 -> 16219 bytes .../util/__pycache__/util.cpython-312.pyc | Bin 0 -> 1990 bytes .../util/__pycache__/wait.cpython-312.pyc | Bin 0 -> 3436 bytes .../site-packages/urllib3/util/connection.py | 137 + .../site-packages/urllib3/util/proxy.py | 43 + .../site-packages/urllib3/util/request.py | 256 + .../site-packages/urllib3/util/response.py | 101 + .../site-packages/urllib3/util/retry.py | 533 + .../site-packages/urllib3/util/ssl_.py | 509 + .../urllib3/util/ssl_match_hostname.py | 159 + .../urllib3/util/ssltransport.py | 279 + .../site-packages/urllib3/util/timeout.py | 275 + .../site-packages/urllib3/util/url.py | 471 + .../site-packages/urllib3/util/util.py | 42 + .../site-packages/urllib3/util/wait.py | 124 + .../werkzeug-3.0.3.dist-info/INSTALLER | 1 + .../werkzeug-3.0.3.dist-info/LICENSE.txt | 28 + .../werkzeug-3.0.3.dist-info/METADATA | 99 + .../werkzeug-3.0.3.dist-info/RECORD | 126 + .../werkzeug-3.0.3.dist-info/REQUESTED | 0 .../werkzeug-3.0.3.dist-info/WHEEL | 4 + .../site-packages/werkzeug/__init__.py | 25 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1082 bytes .../__pycache__/_internal.cpython-312.pyc | Bin 0 -> 9758 bytes .../__pycache__/_reloader.cpython-312.pyc | Bin 0 -> 20216 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 32936 bytes .../__pycache__/formparser.cpython-312.pyc | Bin 0 -> 16921 bytes .../werkzeug/__pycache__/http.cpython-312.pyc | Bin 0 -> 49138 bytes .../__pycache__/local.cpython-312.pyc | Bin 0 -> 28459 bytes .../__pycache__/security.cpython-312.pyc | Bin 0 -> 6973 bytes .../__pycache__/serving.cpython-312.pyc | Bin 0 -> 45841 bytes .../werkzeug/__pycache__/test.cpython-312.pyc | Bin 0 -> 59837 bytes .../__pycache__/testapp.cpython-312.pyc | Bin 0 -> 8858 bytes .../werkzeug/__pycache__/urls.cpython-312.pyc | Bin 0 -> 8259 bytes .../__pycache__/user_agent.cpython-312.pyc | Bin 0 -> 2148 bytes .../__pycache__/utils.cpython-312.pyc | Bin 0 -> 28127 bytes .../werkzeug/__pycache__/wsgi.cpython-312.pyc | Bin 0 -> 25204 bytes .../site-packages/werkzeug/_internal.py | 211 + .../site-packages/werkzeug/_reloader.py | 460 + .../werkzeug/datastructures/__init__.py | 34 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 1597 bytes .../__pycache__/accept.cpython-312.pyc | Bin 0 -> 13787 bytes .../__pycache__/auth.cpython-312.pyc | Bin 0 -> 14402 bytes .../__pycache__/cache_control.cpython-312.pyc | Bin 0 -> 7881 bytes .../__pycache__/csp.cpython-312.pyc | Bin 0 -> 5254 bytes .../__pycache__/etag.cpython-312.pyc | Bin 0 -> 5047 bytes .../__pycache__/file_storage.cpython-312.pyc | Bin 0 -> 7915 bytes .../__pycache__/headers.cpython-312.pyc | Bin 0 -> 23190 bytes .../__pycache__/mixins.cpython-312.pyc | Bin 0 -> 11388 bytes .../__pycache__/range.cpython-312.pyc | Bin 0 -> 8233 bytes .../__pycache__/structures.cpython-312.pyc | Bin 0 -> 48361 bytes .../werkzeug/datastructures/accept.py | 326 + .../werkzeug/datastructures/accept.pyi | 54 + .../werkzeug/datastructures/auth.py | 316 + .../werkzeug/datastructures/cache_control.py | 175 + .../werkzeug/datastructures/cache_control.pyi | 115 + .../werkzeug/datastructures/csp.py | 94 + .../werkzeug/datastructures/csp.pyi | 169 + .../werkzeug/datastructures/etag.py | 95 + .../werkzeug/datastructures/etag.pyi | 30 + .../werkzeug/datastructures/file_storage.py | 196 + .../werkzeug/datastructures/file_storage.pyi | 49 + .../werkzeug/datastructures/headers.py | 515 + .../werkzeug/datastructures/headers.pyi | 109 + .../werkzeug/datastructures/mixins.py | 242 + .../werkzeug/datastructures/mixins.pyi | 97 + .../werkzeug/datastructures/range.py | 180 + .../werkzeug/datastructures/range.pyi | 57 + .../werkzeug/datastructures/structures.py | 1010 ++ .../werkzeug/datastructures/structures.pyi | 206 + .../site-packages/werkzeug/debug/__init__.py | 560 ++ .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 23049 bytes .../debug/__pycache__/console.cpython-312.pyc | Bin 0 -> 11627 bytes .../debug/__pycache__/repr.cpython-312.pyc | Bin 0 -> 13769 bytes .../debug/__pycache__/tbtools.cpython-312.pyc | Bin 0 -> 16628 bytes .../site-packages/werkzeug/debug/console.py | 219 + .../site-packages/werkzeug/debug/repr.py | 282 + .../werkzeug/debug/shared/ICON_LICENSE.md | 6 + .../werkzeug/debug/shared/console.png | Bin 0 -> 507 bytes .../werkzeug/debug/shared/debugger.js | 360 + .../werkzeug/debug/shared/less.png | Bin 0 -> 191 bytes .../werkzeug/debug/shared/more.png | Bin 0 -> 200 bytes .../werkzeug/debug/shared/style.css | 150 + .../site-packages/werkzeug/debug/tbtools.py | 439 + .../site-packages/werkzeug/exceptions.py | 881 ++ .../site-packages/werkzeug/formparser.py | 423 + .../python3.12/site-packages/werkzeug/http.py | 1370 +++ .../site-packages/werkzeug/local.py | 653 ++ .../werkzeug/middleware/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 192 bytes .../__pycache__/dispatcher.cpython-312.pyc | Bin 0 -> 3310 bytes .../__pycache__/http_proxy.cpython-312.pyc | Bin 0 -> 9406 bytes .../__pycache__/lint.cpython-312.pyc | Bin 0 -> 17778 bytes .../__pycache__/profiler.cpython-312.pyc | Bin 0 -> 7196 bytes .../__pycache__/proxy_fix.cpython-312.pyc | Bin 0 -> 7193 bytes .../__pycache__/shared_data.cpython-312.pyc | Bin 0 -> 12695 bytes .../werkzeug/middleware/dispatcher.py | 81 + .../werkzeug/middleware/http_proxy.py | 236 + .../site-packages/werkzeug/middleware/lint.py | 439 + .../werkzeug/middleware/profiler.py | 155 + .../werkzeug/middleware/proxy_fix.py | 183 + .../werkzeug/middleware/shared_data.py | 282 + .../site-packages/werkzeug/py.typed | 0 .../werkzeug/routing/__init__.py | 134 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4665 bytes .../__pycache__/converters.cpython-312.pyc | Bin 0 -> 10912 bytes .../__pycache__/exceptions.cpython-312.pyc | Bin 0 -> 7908 bytes .../routing/__pycache__/map.cpython-312.pyc | Bin 0 -> 39793 bytes .../__pycache__/matcher.cpython-312.pyc | Bin 0 -> 8231 bytes .../routing/__pycache__/rules.cpython-312.pyc | Bin 0 -> 38542 bytes .../werkzeug/routing/converters.py | 261 + .../werkzeug/routing/exceptions.py | 152 + .../site-packages/werkzeug/routing/map.py | 951 ++ .../site-packages/werkzeug/routing/matcher.py | 202 + .../site-packages/werkzeug/routing/rules.py | 917 ++ .../site-packages/werkzeug/sansio/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 188 bytes .../sansio/__pycache__/http.cpython-312.pyc | Bin 0 -> 5712 bytes .../__pycache__/multipart.cpython-312.pyc | Bin 0 -> 14035 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 21881 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 31393 bytes .../sansio/__pycache__/utils.cpython-312.pyc | Bin 0 -> 6007 bytes .../site-packages/werkzeug/sansio/http.py | 171 + .../werkzeug/sansio/multipart.py | 321 + .../site-packages/werkzeug/sansio/request.py | 536 + .../site-packages/werkzeug/sansio/response.py | 754 ++ .../site-packages/werkzeug/sansio/utils.py | 159 + .../site-packages/werkzeug/security.py | 161 + .../site-packages/werkzeug/serving.py | 1116 +++ .../python3.12/site-packages/werkzeug/test.py | 1464 +++ .../site-packages/werkzeug/testapp.py | 194 + .../python3.12/site-packages/werkzeug/urls.py | 203 + .../site-packages/werkzeug/user_agent.py | 47 + .../site-packages/werkzeug/utils.py | 691 ++ .../werkzeug/wrappers/__init__.py | 3 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 312 bytes .../__pycache__/request.cpython-312.pyc | Bin 0 -> 26116 bytes .../__pycache__/response.cpython-312.pyc | Bin 0 -> 34553 bytes .../werkzeug/wrappers/request.py | 647 ++ .../werkzeug/wrappers/response.py | 831 ++ .../python3.12/site-packages/werkzeug/wsgi.py | 595 ++ .../wsproto-1.2.0.dist-info/INSTALLER | 1 + .../wsproto-1.2.0.dist-info/LICENSE | 21 + .../wsproto-1.2.0.dist-info/METADATA | 177 + .../wsproto-1.2.0.dist-info/RECORD | 24 + .../wsproto-1.2.0.dist-info/REQUESTED | 0 .../wsproto-1.2.0.dist-info/WHEEL | 5 + .../wsproto-1.2.0.dist-info/top_level.txt | 1 + .../site-packages/wsproto/__init__.py | 94 + .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 4370 bytes .../__pycache__/connection.cpython-312.pyc | Bin 0 -> 8672 bytes .../__pycache__/events.cpython-312.pyc | Bin 0 -> 10526 bytes .../__pycache__/extensions.cpython-312.pyc | Bin 0 -> 13716 bytes .../frame_protocol.cpython-312.pyc | Bin 0 -> 26256 bytes .../__pycache__/handshake.cpython-312.pyc | Bin 0 -> 20874 bytes .../__pycache__/typing.cpython-312.pyc | Bin 0 -> 287 bytes .../__pycache__/utilities.cpython-312.pyc | Bin 0 -> 3714 bytes .../site-packages/wsproto/connection.py | 189 + .../site-packages/wsproto/events.py | 295 + .../site-packages/wsproto/extensions.py | 315 + .../site-packages/wsproto/frame_protocol.py | 673 ++ .../site-packages/wsproto/handshake.py | 491 + .../python3.12/site-packages/wsproto/py.typed | 1 + .../site-packages/wsproto/typing.py | 3 + .../site-packages/wsproto/utilities.py | 88 + venv/lib64 | 1 + venv/pyvenv.cfg | 5 + 1937 files changed, 306731 insertions(+), 1 deletion(-) create mode 100644 venv/bin/Activate.ps1 create mode 100644 venv/bin/activate create mode 100644 venv/bin/activate.csh create mode 100644 venv/bin/activate.fish create mode 100755 venv/bin/dotenv create mode 100755 venv/bin/filetype create mode 100755 venv/bin/flask create mode 100755 venv/bin/normalizer create mode 100755 venv/bin/pip create mode 100755 venv/bin/pip3 create mode 100755 venv/bin/pip3.12 create mode 120000 venv/bin/python create mode 120000 venv/bin/python3 create mode 120000 venv/bin/python3.12 create mode 100644 venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst create mode 100644 venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt create mode 100755 venv/lib/python3.12/site-packages/_mysql_connector.cpython-312-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/bidict/__init__.py create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_abc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_bidict.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_dup.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_exc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_frozen.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_iter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_orderedbase.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_orderedbidict.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/_typing.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/__pycache__/metadata.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/bidict/_abc.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_base.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_bidict.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_dup.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_exc.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_frozen.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_iter.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_orderedbase.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_orderedbidict.py create mode 100644 venv/lib/python3.12/site-packages/bidict/_typing.py create mode 100644 venv/lib/python3.12/site-packages/bidict/metadata.py create mode 100644 venv/lib/python3.12/site-packages/bidict/py.typed create mode 100644 venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/blinker/__init__.py create mode 100644 venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/blinker/__pycache__/_utilities.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/blinker/_utilities.py create mode 100644 venv/lib/python3.12/site-packages/blinker/base.py create mode 100644 venv/lib/python3.12/site-packages/blinker/py.typed create mode 100644 venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/certifi/__init__.py create mode 100644 venv/lib/python3.12/site-packages/certifi/__main__.py create mode 100644 venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/certifi/__pycache__/core.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/certifi/cacert.pem create mode 100644 venv/lib/python3.12/site-packages/certifi/core.py create mode 100644 venv/lib/python3.12/site-packages/certifi/py.typed create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__init__.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__main__.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/constant.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/legacy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/models.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/api.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cd.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/constant.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/legacy.py create mode 100755 venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/md.py create mode 100755 venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/models.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/py.typed create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/utils.py create mode 100644 venv/lib/python3.12/site-packages/charset_normalizer/version.py create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/DESCRIPTION.rst create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/metadata.json create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/zip-safe create mode 100644 venv/lib/python3.12/site-packages/clamd/__init__.py create mode 100644 venv/lib/python3.12/site-packages/clamd/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click-8.1.7.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/click-8.1.7.dist-info/LICENSE.rst create mode 100644 venv/lib/python3.12/site-packages/click-8.1.7.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/click-8.1.7.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/click-8.1.7.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/click-8.1.7.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/click-8.1.7.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/click/__init__.py create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_termui_impl.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_textwrap.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/shell_completion.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/termui.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/testing.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/types.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/click/_compat.py create mode 100644 venv/lib/python3.12/site-packages/click/_termui_impl.py create mode 100644 venv/lib/python3.12/site-packages/click/_textwrap.py create mode 100644 venv/lib/python3.12/site-packages/click/_winconsole.py create mode 100644 venv/lib/python3.12/site-packages/click/core.py create mode 100644 venv/lib/python3.12/site-packages/click/decorators.py create mode 100644 venv/lib/python3.12/site-packages/click/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/click/formatting.py create mode 100644 venv/lib/python3.12/site-packages/click/globals.py create mode 100644 venv/lib/python3.12/site-packages/click/parser.py create mode 100644 venv/lib/python3.12/site-packages/click/py.typed create mode 100644 venv/lib/python3.12/site-packages/click/shell_completion.py create mode 100644 venv/lib/python3.12/site-packages/click/termui.py create mode 100644 venv/lib/python3.12/site-packages/click/testing.py create mode 100644 venv/lib/python3.12/site-packages/click/types.py create mode 100644 venv/lib/python3.12/site-packages/click/utils.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/__init__.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/__main__.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/cli.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/ipython.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/main.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/variables.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/dotenv/cli.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/ipython.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/main.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/parser.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/py.typed create mode 100644 venv/lib/python3.12/site-packages/dotenv/variables.py create mode 100644 venv/lib/python3.12/site-packages/dotenv/version.py create mode 100644 venv/lib/python3.12/site-packages/engineio/__init__.py create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/async_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/async_server.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/async_socket.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/base_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/base_server.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/base_socket.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/json.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/middleware.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/packet.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/payload.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/server.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/socket.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/__pycache__/static_files.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_client.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__init__.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/_websocket_wsgi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/aiohttp.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/asgi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/eventlet.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/gevent.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/gevent_uwsgi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/sanic.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/threading.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/tornado.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/_websocket_wsgi.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/aiohttp.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/asgi.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/eventlet.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/gevent.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/gevent_uwsgi.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/sanic.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/threading.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_drivers/tornado.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_server.py create mode 100644 venv/lib/python3.12/site-packages/engineio/async_socket.py create mode 100644 venv/lib/python3.12/site-packages/engineio/base_client.py create mode 100644 venv/lib/python3.12/site-packages/engineio/base_server.py create mode 100644 venv/lib/python3.12/site-packages/engineio/base_socket.py create mode 100644 venv/lib/python3.12/site-packages/engineio/client.py create mode 100644 venv/lib/python3.12/site-packages/engineio/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/engineio/json.py create mode 100644 venv/lib/python3.12/site-packages/engineio/middleware.py create mode 100644 venv/lib/python3.12/site-packages/engineio/packet.py create mode 100644 venv/lib/python3.12/site-packages/engineio/payload.py create mode 100644 venv/lib/python3.12/site-packages/engineio/server.py create mode 100644 venv/lib/python3.12/site-packages/engineio/socket.py create mode 100644 venv/lib/python3.12/site-packages/engineio/static_files.py create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/zip-safe create mode 100644 venv/lib/python3.12/site-packages/filetype/__init__.py create mode 100644 venv/lib/python3.12/site-packages/filetype/__main__.py create mode 100644 venv/lib/python3.12/site-packages/filetype/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/__pycache__/filetype.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/__pycache__/helpers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/__pycache__/match.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/filetype.py create mode 100644 venv/lib/python3.12/site-packages/filetype/helpers.py create mode 100644 venv/lib/python3.12/site-packages/filetype/match.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__init__.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/application.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/archive.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/audio.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/document.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/font.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/image.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/isobmff.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/__pycache__/video.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/filetype/types/application.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/archive.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/audio.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/base.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/document.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/font.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/image.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/isobmff.py create mode 100644 venv/lib/python3.12/site-packages/filetype/types/video.py create mode 100644 venv/lib/python3.12/site-packages/filetype/utils.py create mode 100644 venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/flask/__init__.py create mode 100644 venv/lib/python3.12/site-packages/flask/__main__.py create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/app.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/blueprints.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/cli.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/config.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/ctx.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/debughelpers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/globals.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/helpers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/logging.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/sessions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/signals.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/templating.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/testing.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/typing.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/views.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/__pycache__/wrappers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/app.py create mode 100644 venv/lib/python3.12/site-packages/flask/blueprints.py create mode 100644 venv/lib/python3.12/site-packages/flask/cli.py create mode 100644 venv/lib/python3.12/site-packages/flask/config.py create mode 100644 venv/lib/python3.12/site-packages/flask/ctx.py create mode 100644 venv/lib/python3.12/site-packages/flask/debughelpers.py create mode 100644 venv/lib/python3.12/site-packages/flask/globals.py create mode 100644 venv/lib/python3.12/site-packages/flask/helpers.py create mode 100644 venv/lib/python3.12/site-packages/flask/json/__init__.py create mode 100644 venv/lib/python3.12/site-packages/flask/json/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/json/__pycache__/provider.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/json/__pycache__/tag.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/json/provider.py create mode 100644 venv/lib/python3.12/site-packages/flask/json/tag.py create mode 100644 venv/lib/python3.12/site-packages/flask/logging.py create mode 100644 venv/lib/python3.12/site-packages/flask/py.typed create mode 100644 venv/lib/python3.12/site-packages/flask/sansio/README.md create mode 100644 venv/lib/python3.12/site-packages/flask/sansio/__pycache__/app.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/sansio/__pycache__/blueprints.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/sansio/__pycache__/scaffold.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask/sansio/app.py create mode 100644 venv/lib/python3.12/site-packages/flask/sansio/blueprints.py create mode 100644 venv/lib/python3.12/site-packages/flask/sansio/scaffold.py create mode 100644 venv/lib/python3.12/site-packages/flask/sessions.py create mode 100644 venv/lib/python3.12/site-packages/flask/signals.py create mode 100644 venv/lib/python3.12/site-packages/flask/templating.py create mode 100644 venv/lib/python3.12/site-packages/flask/testing.py create mode 100644 venv/lib/python3.12/site-packages/flask/typing.py create mode 100644 venv/lib/python3.12/site-packages/flask/views.py create mode 100644 venv/lib/python3.12/site-packages/flask/wrappers.py create mode 100644 venv/lib/python3.12/site-packages/flask_socketio/__init__.py create mode 100644 venv/lib/python3.12/site-packages/flask_socketio/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask_socketio/__pycache__/namespace.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask_socketio/__pycache__/test_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/flask_socketio/namespace.py create mode 100644 venv/lib/python3.12/site-packages/flask_socketio/test_client.py create mode 100644 venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/h11/__init__.py create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_abnf.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_events.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_headers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_readers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_receivebuffer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_state.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_util.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/__pycache__/_writers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/_abnf.py create mode 100644 venv/lib/python3.12/site-packages/h11/_connection.py create mode 100644 venv/lib/python3.12/site-packages/h11/_events.py create mode 100644 venv/lib/python3.12/site-packages/h11/_headers.py create mode 100644 venv/lib/python3.12/site-packages/h11/_readers.py create mode 100644 venv/lib/python3.12/site-packages/h11/_receivebuffer.py create mode 100644 venv/lib/python3.12/site-packages/h11/_state.py create mode 100644 venv/lib/python3.12/site-packages/h11/_util.py create mode 100644 venv/lib/python3.12/site-packages/h11/_version.py create mode 100644 venv/lib/python3.12/site-packages/h11/_writers.py create mode 100644 venv/lib/python3.12/site-packages/h11/py.typed create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__init__.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/helpers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_against_stdlib_http.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_events.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_headers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_helpers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_io.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_receivebuffer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_state.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_util.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/h11/tests/data/test-file create mode 100644 venv/lib/python3.12/site-packages/h11/tests/helpers.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_against_stdlib_http.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_connection.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_events.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_headers.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_helpers.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_io.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_receivebuffer.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_state.py create mode 100644 venv/lib/python3.12/site-packages/h11/tests/test_util.py create mode 100644 venv/lib/python3.12/site-packages/idna-3.7.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/idna-3.7.dist-info/LICENSE.md create mode 100644 venv/lib/python3.12/site-packages/idna-3.7.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/idna-3.7.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/idna-3.7.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/idna-3.7.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/idna/__init__.py create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/idna/codec.py create mode 100644 venv/lib/python3.12/site-packages/idna/compat.py create mode 100644 venv/lib/python3.12/site-packages/idna/core.py create mode 100644 venv/lib/python3.12/site-packages/idna/idnadata.py create mode 100644 venv/lib/python3.12/site-packages/idna/intranges.py create mode 100644 venv/lib/python3.12/site-packages/idna/package_data.py create mode 100644 venv/lib/python3.12/site-packages/idna/py.typed create mode 100644 venv/lib/python3.12/site-packages/idna/uts46data.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__init__.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/_json.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/encoding.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/exc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/serializer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/signer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/timed.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/__pycache__/url_safe.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/_json.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/encoding.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/exc.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/py.typed create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/serializer.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/signer.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/timed.py create mode 100644 venv/lib/python3.12/site-packages/itsdangerous/url_safe.py create mode 100644 venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/jinja2/__init__.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/_identifier.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/async_utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/bccache.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/compiler.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/constants.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/debug.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/defaults.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/environment.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/ext.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/filters.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/idtracking.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/lexer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/loaders.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/meta.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/nativetypes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/nodes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/optimizer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/runtime.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/sandbox.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/tests.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/__pycache__/visitor.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/jinja2/_identifier.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/async_utils.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/bccache.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/compiler.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/constants.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/debug.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/defaults.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/environment.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/ext.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/filters.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/idtracking.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/lexer.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/loaders.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/meta.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/nativetypes.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/nodes.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/optimizer.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/parser.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/py.typed create mode 100644 venv/lib/python3.12/site-packages/jinja2/runtime.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/sandbox.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/tests.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/utils.py create mode 100644 venv/lib/python3.12/site-packages/jinja2/visitor.py create mode 100644 venv/lib/python3.12/site-packages/markupsafe/__init__.py create mode 100644 venv/lib/python3.12/site-packages/markupsafe/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/markupsafe/__pycache__/_native.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/markupsafe/_native.py create mode 100644 venv/lib/python3.12/site-packages/markupsafe/_speedups.c create mode 100755 venv/lib/python3.12/site-packages/markupsafe/_speedups.cpython-312-x86_64-linux-gnu.so create mode 100644 venv/lib/python3.12/site-packages/markupsafe/_speedups.pyi create mode 100644 venv/lib/python3.12/site-packages/markupsafe/py.typed create mode 100644 venv/lib/python3.12/site-packages/mysql/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/abstracts.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/authentication.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/charsets.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/connection_cext.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/constants.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/conversion.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/cursor.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/cursor_cext.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/custom_types.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/dbapi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/errorcode.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/errors.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/logger.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/network.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/optionfiles.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/pooling.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/protocol.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/tls_ciphers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/types.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/abstracts.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/abstracts.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/authentication.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/charsets.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/cursor.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/logger.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/network.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/protocol.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/abstracts.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/authentication.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/charsets.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/connection.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/cursor.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/logger.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/network.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/authentication_kerberos_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/authentication_ldap_sasl_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/authentication_oci_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/authentication_webauthn_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/caching_sha2_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/mysql_clear_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/mysql_native_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/__pycache__/sha256_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/authentication_kerberos_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/authentication_ldap_sasl_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/authentication_oci_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/authentication_webauthn_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/caching_sha2_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/mysql_clear_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/mysql_native_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/plugins/sha256_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/protocol.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/py.typed create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/aio/utils.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/authentication.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/charsets.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/connection.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/connection_cext.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/constants.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/conversion.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/cursor.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/cursor_cext.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/custom_types.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/dbapi.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/compiler.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/creation.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/features.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/introspection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/operations.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/schema.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/__pycache__/validation.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/base.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/compiler.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/creation.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/features.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/introspection.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/operations.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/schema.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/django/validation.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/errorcode.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/errors.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/locales/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/locales/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/locales/eng/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/locales/eng/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/locales/eng/__pycache__/client_error.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/locales/eng/client_error.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/logger.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/network.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/__pycache__/constants.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/__pycache__/context_propagation.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/__pycache__/instrumentation.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/constants.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/context_propagation.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/opentelemetry/instrumentation.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/optionfiles.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__init__.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/authentication_kerberos_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/authentication_ldap_sasl_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/authentication_oci_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/authentication_webauthn_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/caching_sha2_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/mysql_clear_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/mysql_native_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/__pycache__/sha256_password.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/authentication_kerberos_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/authentication_ldap_sasl_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/authentication_oci_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/authentication_webauthn_client.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/caching_sha2_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/mysql_clear_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/mysql_native_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/plugins/sha256_password.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/pooling.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/protocol.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/py.typed create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/tls_ciphers.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/types.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/utils.py create mode 100644 venv/lib/python3.12/site-packages/mysql/connector/version.py create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/libcrypto.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/libssl.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/plugin/authentication_kerberos_client.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/plugin/authentication_ldap_sasl_client.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/plugin/authentication_oci_client.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/plugin/authentication_webauthn_client.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libcom_err.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libcom_err.so.3.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libfido2.so.1 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libfido2.so.1.13.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libgssapi_krb5.so.2 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libgssapi_krb5.so.2.2 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libk5crypto.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libk5crypto.so.3.1 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libkrb5.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libkrb5.so.3.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libkrb5support.so.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libkrb5support.so.0.1 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libsasl2.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/libsasl2.so.3.0.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libanonymous.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libanonymous.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libanonymous.so.3.0.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libcrammd5.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libcrammd5.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libcrammd5.so.3.0.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libdigestmd5.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libdigestmd5.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libdigestmd5.so.3.0.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libgs2.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libgs2.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libgs2.so.3.0.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libgssapiv2.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libgssapiv2.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libgssapiv2.so.3.0.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libplain.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libplain.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libplain.so.3.0.0 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libscram.so create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libscram.so.3 create mode 100755 venv/lib/python3.12/site-packages/mysql/vendor/private/sasl2/libscram.so.3.0.0 create mode 100644 venv/lib/python3.12/site-packages/mysql_connector_python-9.0.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/mysql_connector_python-9.0.0.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/mysql_connector_python-9.0.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/mysql_connector_python-9.0.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/mysql_connector_python-9.0.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/mysql_connector_python-9.0.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/mysql_connector_python-9.0.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/AUTHORS.txt create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/pip-24.2.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/pip/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/__main__.py create mode 100644 venv/lib/python3.12/site-packages/pip/__pip-runner__.py create mode 100644 venv/lib/python3.12/site-packages/pip/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/__pycache__/__pip-runner__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/build_env.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/cache.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/configuration.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/main.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/pyproject.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/self_outdated_check.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/__pycache__/wheel_builder.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/build_env.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cache.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/autocompletion.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/base_command.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/cmdoptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/command_context.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/index_command.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/main_parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/progress_bars.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/req_command.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/spinners.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/__pycache__/status_codes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/autocompletion.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/base_command.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/cmdoptions.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/command_context.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/index_command.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/main.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/main_parser.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/parser.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/progress_bars.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/req_command.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/spinners.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/cli/status_codes.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/cache.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/check.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/completion.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/configuration.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/debug.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/download.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/freeze.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/hash.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/help.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/index.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/inspect.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/install.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/list.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/search.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/show.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/uninstall.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/__pycache__/wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/cache.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/check.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/completion.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/configuration.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/debug.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/download.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/freeze.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/hash.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/help.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/index.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/inspect.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/install.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/list.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/search.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/show.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/uninstall.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/commands/wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/configuration.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/installed.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/sdist.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/__pycache__/wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/base.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/installed.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/sdist.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/distributions/wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/collector.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/package_finder.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/__pycache__/sources.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/collector.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/package_finder.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/index/sources.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_distutils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/_sysconfig.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/_distutils.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/_sysconfig.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/locations/base.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/main.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/_json.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/__pycache__/pkg_resources.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/_json.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/base.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_dists.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/__pycache__/_envs.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_compat.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_dists.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/importlib/_envs.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/metadata/pkg_resources.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/candidate.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/direct_url.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/format_control.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/index.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/installation_report.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/link.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/scheme.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/search_scope.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/selection_prefs.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/target_python.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/__pycache__/wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/candidate.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/direct_url.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/format_control.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/index.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/installation_report.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/link.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/scheme.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/search_scope.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/selection_prefs.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/target_python.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/models/wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/auth.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/cache.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/download.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/lazy_wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/session.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/__pycache__/xmlrpc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/auth.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/cache.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/download.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/lazy_wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/session.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/utils.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/network/xmlrpc.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/check.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/freeze.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/__pycache__/prepare.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/build_tracker.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_editable.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/metadata_legacy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_editable.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/__pycache__/wheel_legacy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/build_tracker.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_editable.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/metadata_legacy.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_editable.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/build/wheel_legacy.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/check.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/freeze.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/editable_legacy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/__pycache__/wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/editable_legacy.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/install/wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/operations/prepare.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/pyproject.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/constructors.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_file.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_install.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_set.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/__pycache__/req_uninstall.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/constructors.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_file.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_install.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_set.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/req/req_uninstall.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/base.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/__pycache__/resolver.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/legacy/resolver.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/base.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/candidates.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/factory.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/found_candidates.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/provider.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/reporter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/requirements.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/__pycache__/resolver.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/base.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/candidates.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/factory.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/found_candidates.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/provider.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/reporter.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/requirements.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/resolution/resolvelib/resolver.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/self_outdated_check.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_jaraco_text.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/_log.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/appdirs.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/compatibility_tags.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/datetime.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/deprecation.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/direct_url_helpers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/egg_link.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/encoding.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/entrypoints.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filesystem.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/filetypes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/glibc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/hashes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/logging.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/misc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/packaging.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/retry.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/setuptools_build.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/subprocess.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/temp_dir.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/unpacking.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/urls.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/virtualenv.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/__pycache__/wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/_jaraco_text.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/_log.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/appdirs.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/compat.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/compatibility_tags.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/datetime.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/deprecation.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/direct_url_helpers.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/egg_link.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/encoding.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/entrypoints.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/filesystem.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/filetypes.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/glibc.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/hashes.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/logging.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/misc.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/packaging.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/retry.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/setuptools_build.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/subprocess.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/temp_dir.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/unpacking.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/urls.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/virtualenv.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/utils/wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/bazaar.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/git.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/mercurial.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/subversion.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/__pycache__/versioncontrol.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/bazaar.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/git.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/mercurial.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/subversion.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/vcs/versioncontrol.py create mode 100644 venv/lib/python3.12/site-packages/pip/_internal/wheel_builder.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/__pycache__/typing_extensions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/_cmd.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/adapter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/cache.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/controller.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/filewrapper.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/heuristics.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/serialize.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/__pycache__/wrapper.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/_cmd.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/adapter.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/cache.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/file_cache.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/__pycache__/redis_cache.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/file_cache.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/caches/redis_cache.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/controller.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/filewrapper.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/heuristics.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/serialize.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/cachecontrol/wrapper.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__main__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/__pycache__/core.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/cacert.pem create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/core.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/certifi/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/database.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/index.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/locators.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/manifest.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/markers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/metadata.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/resources.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/scripts.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/util.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/__pycache__/wheel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/compat.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/database.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/index.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/locators.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/manifest.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/markers.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/metadata.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/resources.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/scripts.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/t32.exe create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64-arm.exe create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/t64.exe create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/util.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/version.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/w32.exe create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64-arm.exe create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/w64.exe create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distlib/wheel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__main__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/__pycache__/distro.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/distro.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/distro/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/codec.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/core.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/idnadata.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/intranges.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/package_data.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/__pycache__/uts46data.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/codec.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/compat.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/core.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/idnadata.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/intranges.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/package_data.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/idna/uts46data.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/ext.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/__pycache__/fallback.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/ext.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/msgpack/fallback.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_elffile.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_manylinux.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_musllinux.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_structures.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/_tokenizer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/markers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/metadata.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/requirements.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/specifiers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/tags.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_elffile.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_manylinux.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_musllinux.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_parser.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_structures.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/_tokenizer.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/markers.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/metadata.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/requirements.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/specifiers.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/tags.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/utils.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/packaging/version.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pkg_resources/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__main__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/android.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/api.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/macos.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/unix.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/__pycache__/windows.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/android.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/api.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/macos.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/unix.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/version.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/platformdirs/windows.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__main__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/cmdline.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/console.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/filter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/formatter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/lexer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/modeline.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/plugin.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/regexopt.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/scanner.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/sphinxext.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/style.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/token.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/unistring.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/__pycache__/util.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/cmdline.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/console.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/filter.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/filters/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatter.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/_mapping.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/bbcode.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/groff.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/html.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/img.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/irc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/latex.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/other.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/pangomarkup.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/rtf.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/svg.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/__pycache__/terminal256.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/_mapping.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/bbcode.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/groff.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/html.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/img.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/irc.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/latex.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/other.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/pangomarkup.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/rtf.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/svg.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/formatters/terminal256.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexer.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/_mapping.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/__pycache__/python.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/_mapping.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/lexers/python.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/modeline.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/plugin.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/regexopt.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/scanner.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/sphinxext.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/style.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/__pycache__/_mapping.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/styles/_mapping.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/token.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/unistring.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pygments/util.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/__pycache__/_impl.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_compat.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_impl.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/__pycache__/_in_process.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/pyproject_hooks/_in_process/_in_process.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/__version__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/_internal_utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/adapters.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/api.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/auth.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/certs.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/cookies.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/help.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/hooks.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/models.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/packages.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/sessions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/status_codes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/structures.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/__version__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/_internal_utils.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/adapters.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/api.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/auth.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/certs.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/compat.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/cookies.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/help.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/hooks.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/models.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/packages.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/sessions.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/status_codes.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/structures.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/requests/utils.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/providers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/reporters.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/resolvers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/__pycache__/structs.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/__pycache__/collections_abc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/compat/collections_abc.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/providers.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/reporters.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/resolvers.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/resolvelib/structs.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__main__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/__main__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_cell_widths.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_codes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_emoji_replace.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_export_format.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_extension.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_fileno.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_inspect.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_log_render.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_loop.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_null_file.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_palettes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_pick.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_ratio.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_spinners.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_stack.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_timer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_win32_console.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_windows_renderer.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/_wrap.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/abc.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/align.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/ansi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/bar.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/box.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/cells.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/color_triplet.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/columns.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/console.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/constrain.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/containers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/control.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/default_styles.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/diagnose.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/emoji.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/errors.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/file_proxy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/filesize.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/highlighter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/json.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/jupyter.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/layout.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/live_render.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/logging.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/markup.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/measure.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/padding.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/palette.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/panel.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/pretty.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/progress_bar.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/prompt.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/protocol.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/region.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/repr.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/rule.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/scope.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/screen.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/segment.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/spinner.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/status.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/style.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/styled.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/syntax.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/table.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/terminal_theme.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/text.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/theme.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/themes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/traceback.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/__pycache__/tree.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_cell_widths.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_codes.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_emoji_replace.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_export_format.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_extension.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_fileno.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_inspect.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_log_render.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_loop.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_null_file.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_palettes.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_pick.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_ratio.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_spinners.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_stack.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_timer.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_win32_console.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_windows_renderer.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/_wrap.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/abc.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/align.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/ansi.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/bar.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/box.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/cells.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/color.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/color_triplet.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/columns.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/console.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/constrain.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/containers.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/control.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/default_styles.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/diagnose.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/emoji.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/errors.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/file_proxy.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/filesize.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/highlighter.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/json.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/jupyter.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/layout.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/live.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/live_render.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/logging.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/markup.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/measure.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/padding.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/pager.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/palette.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/panel.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/pretty.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/progress.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/progress_bar.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/prompt.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/protocol.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/region.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/repr.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/rule.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/scope.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/screen.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/segment.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/spinner.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/status.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/style.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/styled.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/syntax.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/table.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/terminal_theme.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/text.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/theme.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/themes.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/traceback.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/rich/tree.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_parser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_re.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/__pycache__/_types.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/_parser.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/_re.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/_types.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/tomli/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_api.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_macos.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_openssl.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_ssl_constants.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/__pycache__/_windows.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_api.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_macos.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_openssl.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_ssl_constants.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/_windows.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/truststore/py.typed create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/typing_extensions.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_collections.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/_version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/connectionpool.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/fields.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/filepost.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/poolmanager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/request.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/__pycache__/response.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_collections.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/_version.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connection.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/connectionpool.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/_appengine_environ.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/appengine.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/ntlmpool.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/securetransport.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/__pycache__/socks.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_appengine_environ.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/bindings.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/__pycache__/low_level.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/bindings.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/_securetransport/low_level.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/appengine.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/ntlmpool.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/pyopenssl.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/securetransport.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/contrib/socks.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/fields.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/filepost.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/__pycache__/six.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/makefile.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/__pycache__/weakref_finalize.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/makefile.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/backports/weakref_finalize.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/packages/six.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/poolmanager.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/request.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/response.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/proxy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/queue.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/request.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/response.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/retry.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/ssltransport.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/timeout.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/url.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/__pycache__/wait.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/connection.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/proxy.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/queue.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/request.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/response.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/retry.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssl_match_hostname.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/ssltransport.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/timeout.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/url.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/urllib3/util/wait.py create mode 100644 venv/lib/python3.12/site-packages/pip/_vendor/vendor.txt create mode 100644 venv/lib/python3.12/site-packages/pip/py.typed create mode 100644 venv/lib/python3.12/site-packages/pyClamd-0.4.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/pyClamd-0.4.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/pyClamd-0.4.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/pyClamd-0.4.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/pyClamd-0.4.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/pyClamd-0.4.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/pyclamd/__init__.py create mode 100644 venv/lib/python3.12/site-packages/pyclamd/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pyclamd/__pycache__/pyclamd.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pyclamd/__pycache__/test_pyclamd.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/pyclamd/pyclamd.py create mode 100644 venv/lib/python3.12/site-packages/pyclamd/test_pyclamd.py create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/entry_points.txt create mode 100644 venv/lib/python3.12/site-packages/python_dotenv-1.0.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/python_engineio-4.9.1.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/python_engineio-4.9.1.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/python_engineio-4.9.1.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/python_engineio-4.9.1.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/python_engineio-4.9.1.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/python_engineio-4.9.1.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/python_engineio-4.9.1.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/python_socketio-5.11.3.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/python_socketio-5.11.3.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/python_socketio-5.11.3.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/python_socketio-5.11.3.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/python_socketio-5.11.3.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/python_socketio-5.11.3.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/python_socketio-5.11.3.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/requests-2.32.3.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/requests/__init__.py create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/__version__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/_internal_utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/adapters.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/api.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/auth.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/certs.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/compat.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/cookies.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/help.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/hooks.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/models.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/packages.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/sessions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/status_codes.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/structures.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/requests/__version__.py create mode 100644 venv/lib/python3.12/site-packages/requests/_internal_utils.py create mode 100644 venv/lib/python3.12/site-packages/requests/adapters.py create mode 100644 venv/lib/python3.12/site-packages/requests/api.py create mode 100644 venv/lib/python3.12/site-packages/requests/auth.py create mode 100644 venv/lib/python3.12/site-packages/requests/certs.py create mode 100644 venv/lib/python3.12/site-packages/requests/compat.py create mode 100644 venv/lib/python3.12/site-packages/requests/cookies.py create mode 100644 venv/lib/python3.12/site-packages/requests/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/requests/help.py create mode 100644 venv/lib/python3.12/site-packages/requests/hooks.py create mode 100644 venv/lib/python3.12/site-packages/requests/models.py create mode 100644 venv/lib/python3.12/site-packages/requests/packages.py create mode 100644 venv/lib/python3.12/site-packages/requests/sessions.py create mode 100644 venv/lib/python3.12/site-packages/requests/status_codes.py create mode 100644 venv/lib/python3.12/site-packages/requests/structures.py create mode 100644 venv/lib/python3.12/site-packages/requests/utils.py create mode 100644 venv/lib/python3.12/site-packages/simple_websocket-1.0.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/simple_websocket-1.0.0.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/simple_websocket-1.0.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/simple_websocket-1.0.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/simple_websocket-1.0.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/simple_websocket-1.0.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/simple_websocket-1.0.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/__init__.py create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/__pycache__/aiows.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/__pycache__/asgi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/__pycache__/errors.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/__pycache__/ws.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/aiows.py create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/asgi.py create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/errors.py create mode 100644 venv/lib/python3.12/site-packages/simple_websocket/ws.py create mode 100644 venv/lib/python3.12/site-packages/socketio/__init__.py create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/admin.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/asgi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_admin.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_aiopika_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_namespace.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_pubsub_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_redis_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_server.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/async_simple_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/base_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/base_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/base_namespace.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/base_server.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/kafka_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/kombu_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/middleware.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/msgpack_packet.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/namespace.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/packet.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/pubsub_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/redis_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/server.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/simple_client.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/tornado.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/__pycache__/zmq_manager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/socketio/admin.py create mode 100644 venv/lib/python3.12/site-packages/socketio/asgi.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_admin.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_aiopika_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_client.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_namespace.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_pubsub_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_redis_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_server.py create mode 100644 venv/lib/python3.12/site-packages/socketio/async_simple_client.py create mode 100644 venv/lib/python3.12/site-packages/socketio/base_client.py create mode 100644 venv/lib/python3.12/site-packages/socketio/base_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/base_namespace.py create mode 100644 venv/lib/python3.12/site-packages/socketio/base_server.py create mode 100644 venv/lib/python3.12/site-packages/socketio/client.py create mode 100644 venv/lib/python3.12/site-packages/socketio/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/socketio/kafka_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/kombu_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/middleware.py create mode 100644 venv/lib/python3.12/site-packages/socketio/msgpack_packet.py create mode 100644 venv/lib/python3.12/site-packages/socketio/namespace.py create mode 100644 venv/lib/python3.12/site-packages/socketio/packet.py create mode 100644 venv/lib/python3.12/site-packages/socketio/pubsub_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/redis_manager.py create mode 100644 venv/lib/python3.12/site-packages/socketio/server.py create mode 100644 venv/lib/python3.12/site-packages/socketio/simple_client.py create mode 100644 venv/lib/python3.12/site-packages/socketio/tornado.py create mode 100644 venv/lib/python3.12/site-packages/socketio/zmq_manager.py create mode 100644 venv/lib/python3.12/site-packages/urllib3-2.2.2.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/urllib3-2.2.2.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/urllib3-2.2.2.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/urllib3-2.2.2.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/urllib3-2.2.2.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/urllib3-2.2.2.dist-info/licenses/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/urllib3/__init__.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/_base_connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/_collections.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/_request_methods.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/_version.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/connectionpool.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/fields.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/filepost.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/http2.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/poolmanager.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/__pycache__/response.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/_base_connection.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/_collections.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/_request_methods.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/_version.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/connection.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/connectionpool.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__init__.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/pyopenssl.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/__pycache__/socks.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__init__.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/fetch.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/request.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/__pycache__/response.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/connection.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/emscripten_fetch_worker.js create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/fetch.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/request.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/emscripten/response.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/pyopenssl.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/contrib/socks.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/fields.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/filepost.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/http2.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/poolmanager.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/py.typed create mode 100644 venv/lib/python3.12/site-packages/urllib3/response.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__init__.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/proxy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/request.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/response.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/retry.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssl_match_hostname.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/ssltransport.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/timeout.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/url.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/util.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/__pycache__/wait.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/connection.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/proxy.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/request.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/response.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/retry.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/ssl_.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/ssl_match_hostname.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/ssltransport.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/timeout.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/url.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/util.py create mode 100644 venv/lib/python3.12/site-packages/urllib3/util/wait.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.0.3.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.0.3.dist-info/LICENSE.txt create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.0.3.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.0.3.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.0.3.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/werkzeug-3.0.3.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__init__.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/_internal.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/_reloader.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/formparser.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/http.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/local.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/security.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/serving.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/test.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/testapp.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/urls.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/user_agent.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/__pycache__/wsgi.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/_internal.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/_reloader.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__init__.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/accept.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/auth.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/cache_control.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/csp.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/etag.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/file_storage.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/headers.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/mixins.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/range.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/__pycache__/structures.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/accept.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/accept.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/auth.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/cache_control.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/cache_control.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/csp.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/csp.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/etag.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/etag.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/file_storage.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/file_storage.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/headers.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/headers.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/mixins.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/mixins.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/range.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/range.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/structures.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/datastructures/structures.pyi create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/__init__.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/console.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/repr.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/__pycache__/tbtools.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/console.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/repr.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/shared/ICON_LICENSE.md create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/shared/console.png create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/shared/debugger.js create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/shared/less.png create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/shared/more.png create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/shared/style.css create mode 100644 venv/lib/python3.12/site-packages/werkzeug/debug/tbtools.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/formparser.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/http.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/local.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__init__.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/dispatcher.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/http_proxy.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/lint.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/profiler.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/proxy_fix.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/__pycache__/shared_data.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/dispatcher.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/http_proxy.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/lint.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/profiler.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/proxy_fix.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/middleware/shared_data.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/py.typed create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/__init__.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/converters.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/exceptions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/map.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/matcher.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/__pycache__/rules.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/converters.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/exceptions.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/map.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/matcher.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/routing/rules.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/__init__.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/http.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/multipart.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/request.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/response.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/__pycache__/utils.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/http.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/multipart.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/request.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/response.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/sansio/utils.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/security.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/serving.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/test.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/testapp.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/urls.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/user_agent.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/utils.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/wrappers/__init__.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/wrappers/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/wrappers/__pycache__/request.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/wrappers/__pycache__/response.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/werkzeug/wrappers/request.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/wrappers/response.py create mode 100644 venv/lib/python3.12/site-packages/werkzeug/wsgi.py create mode 100644 venv/lib/python3.12/site-packages/wsproto-1.2.0.dist-info/INSTALLER create mode 100644 venv/lib/python3.12/site-packages/wsproto-1.2.0.dist-info/LICENSE create mode 100644 venv/lib/python3.12/site-packages/wsproto-1.2.0.dist-info/METADATA create mode 100644 venv/lib/python3.12/site-packages/wsproto-1.2.0.dist-info/RECORD create mode 100644 venv/lib/python3.12/site-packages/wsproto-1.2.0.dist-info/REQUESTED create mode 100644 venv/lib/python3.12/site-packages/wsproto-1.2.0.dist-info/WHEEL create mode 100644 venv/lib/python3.12/site-packages/wsproto-1.2.0.dist-info/top_level.txt create mode 100644 venv/lib/python3.12/site-packages/wsproto/__init__.py create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/__init__.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/connection.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/events.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/extensions.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/frame_protocol.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/handshake.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/typing.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/__pycache__/utilities.cpython-312.pyc create mode 100644 venv/lib/python3.12/site-packages/wsproto/connection.py create mode 100644 venv/lib/python3.12/site-packages/wsproto/events.py create mode 100644 venv/lib/python3.12/site-packages/wsproto/extensions.py create mode 100644 venv/lib/python3.12/site-packages/wsproto/frame_protocol.py create mode 100644 venv/lib/python3.12/site-packages/wsproto/handshake.py create mode 100644 venv/lib/python3.12/site-packages/wsproto/py.typed create mode 100644 venv/lib/python3.12/site-packages/wsproto/typing.py create mode 100644 venv/lib/python3.12/site-packages/wsproto/utilities.py create mode 120000 venv/lib64 create mode 100644 venv/pyvenv.cfg diff --git a/.gitignore b/.gitignore index 5306746..fc129eb 100644 --- a/.gitignore +++ b/.gitignore @@ -5,6 +5,7 @@ /templates/result.html /templates/scan.html /templates/upload.html +/venv app.py~ app2.py .env diff --git a/app.py b/app.py index 7123945..af50022 100644 --- a/app.py +++ b/app.py @@ -186,5 +186,6 @@ def format_scan_result(scan_result): return formatted_result if __name__ == '__main__': - socketio.run(app, debug=True) + socketio.run(app, host='0.0.0.0', port=5001, debug=os.getenv('FLASK_DEBUG', 'False').lower() == 'true') + diff --git a/venv/bin/Activate.ps1 b/venv/bin/Activate.ps1 new file mode 100644 index 0000000..b49d77b --- /dev/null +++ b/venv/bin/Activate.ps1 @@ -0,0 +1,247 @@ +<# +.Synopsis +Activate a Python virtual environment for the current PowerShell session. + +.Description +Pushes the python executable for a virtual environment to the front of the +$Env:PATH environment variable and sets the prompt to signify that you are +in a Python virtual environment. Makes use of the command line switches as +well as the `pyvenv.cfg` file values present in the virtual environment. + +.Parameter VenvDir +Path to the directory that contains the virtual environment to activate. The +default value for this is the parent of the directory that the Activate.ps1 +script is located within. + +.Parameter Prompt +The prompt prefix to display when this virtual environment is activated. By +default, this prompt is the name of the virtual environment folder (VenvDir) +surrounded by parentheses and followed by a single space (ie. '(.venv) '). + +.Example +Activate.ps1 +Activates the Python virtual environment that contains the Activate.ps1 script. + +.Example +Activate.ps1 -Verbose +Activates the Python virtual environment that contains the Activate.ps1 script, +and shows extra information about the activation as it executes. + +.Example +Activate.ps1 -VenvDir C:\Users\MyUser\Common\.venv +Activates the Python virtual environment located in the specified location. + +.Example +Activate.ps1 -Prompt "MyPython" +Activates the Python virtual environment that contains the Activate.ps1 script, +and prefixes the current prompt with the specified string (surrounded in +parentheses) while the virtual environment is active. + +.Notes +On Windows, it may be required to enable this Activate.ps1 script by setting the +execution policy for the user. You can do this by issuing the following PowerShell +command: + +PS C:\> Set-ExecutionPolicy -ExecutionPolicy RemoteSigned -Scope CurrentUser + +For more information on Execution Policies: +https://go.microsoft.com/fwlink/?LinkID=135170 + +#> +Param( + [Parameter(Mandatory = $false)] + [String] + $VenvDir, + [Parameter(Mandatory = $false)] + [String] + $Prompt +) + +<# Function declarations --------------------------------------------------- #> + +<# +.Synopsis +Remove all shell session elements added by the Activate script, including the +addition of the virtual environment's Python executable from the beginning of +the PATH variable. + +.Parameter NonDestructive +If present, do not remove this function from the global namespace for the +session. + +#> +function global:deactivate ([switch]$NonDestructive) { + # Revert to original values + + # The prior prompt: + if (Test-Path -Path Function:_OLD_VIRTUAL_PROMPT) { + Copy-Item -Path Function:_OLD_VIRTUAL_PROMPT -Destination Function:prompt + Remove-Item -Path Function:_OLD_VIRTUAL_PROMPT + } + + # The prior PYTHONHOME: + if (Test-Path -Path Env:_OLD_VIRTUAL_PYTHONHOME) { + Copy-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME -Destination Env:PYTHONHOME + Remove-Item -Path Env:_OLD_VIRTUAL_PYTHONHOME + } + + # The prior PATH: + if (Test-Path -Path Env:_OLD_VIRTUAL_PATH) { + Copy-Item -Path Env:_OLD_VIRTUAL_PATH -Destination Env:PATH + Remove-Item -Path Env:_OLD_VIRTUAL_PATH + } + + # Just remove the VIRTUAL_ENV altogether: + if (Test-Path -Path Env:VIRTUAL_ENV) { + Remove-Item -Path env:VIRTUAL_ENV + } + + # Just remove VIRTUAL_ENV_PROMPT altogether. + if (Test-Path -Path Env:VIRTUAL_ENV_PROMPT) { + Remove-Item -Path env:VIRTUAL_ENV_PROMPT + } + + # Just remove the _PYTHON_VENV_PROMPT_PREFIX altogether: + if (Get-Variable -Name "_PYTHON_VENV_PROMPT_PREFIX" -ErrorAction SilentlyContinue) { + Remove-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Scope Global -Force + } + + # Leave deactivate function in the global namespace if requested: + if (-not $NonDestructive) { + Remove-Item -Path function:deactivate + } +} + +<# +.Description +Get-PyVenvConfig parses the values from the pyvenv.cfg file located in the +given folder, and returns them in a map. + +For each line in the pyvenv.cfg file, if that line can be parsed into exactly +two strings separated by `=` (with any amount of whitespace surrounding the =) +then it is considered a `key = value` line. The left hand string is the key, +the right hand is the value. + +If the value starts with a `'` or a `"` then the first and last character is +stripped from the value before being captured. + +.Parameter ConfigDir +Path to the directory that contains the `pyvenv.cfg` file. +#> +function Get-PyVenvConfig( + [String] + $ConfigDir +) { + Write-Verbose "Given ConfigDir=$ConfigDir, obtain values in pyvenv.cfg" + + # Ensure the file exists, and issue a warning if it doesn't (but still allow the function to continue). + $pyvenvConfigPath = Join-Path -Resolve -Path $ConfigDir -ChildPath 'pyvenv.cfg' -ErrorAction Continue + + # An empty map will be returned if no config file is found. + $pyvenvConfig = @{ } + + if ($pyvenvConfigPath) { + + Write-Verbose "File exists, parse `key = value` lines" + $pyvenvConfigContent = Get-Content -Path $pyvenvConfigPath + + $pyvenvConfigContent | ForEach-Object { + $keyval = $PSItem -split "\s*=\s*", 2 + if ($keyval[0] -and $keyval[1]) { + $val = $keyval[1] + + # Remove extraneous quotations around a string value. + if ("'""".Contains($val.Substring(0, 1))) { + $val = $val.Substring(1, $val.Length - 2) + } + + $pyvenvConfig[$keyval[0]] = $val + Write-Verbose "Adding Key: '$($keyval[0])'='$val'" + } + } + } + return $pyvenvConfig +} + + +<# Begin Activate script --------------------------------------------------- #> + +# Determine the containing directory of this script +$VenvExecPath = Split-Path -Parent $MyInvocation.MyCommand.Definition +$VenvExecDir = Get-Item -Path $VenvExecPath + +Write-Verbose "Activation script is located in path: '$VenvExecPath'" +Write-Verbose "VenvExecDir Fullname: '$($VenvExecDir.FullName)" +Write-Verbose "VenvExecDir Name: '$($VenvExecDir.Name)" + +# Set values required in priority: CmdLine, ConfigFile, Default +# First, get the location of the virtual environment, it might not be +# VenvExecDir if specified on the command line. +if ($VenvDir) { + Write-Verbose "VenvDir given as parameter, using '$VenvDir' to determine values" +} +else { + Write-Verbose "VenvDir not given as a parameter, using parent directory name as VenvDir." + $VenvDir = $VenvExecDir.Parent.FullName.TrimEnd("\\/") + Write-Verbose "VenvDir=$VenvDir" +} + +# Next, read the `pyvenv.cfg` file to determine any required value such +# as `prompt`. +$pyvenvCfg = Get-PyVenvConfig -ConfigDir $VenvDir + +# Next, set the prompt from the command line, or the config file, or +# just use the name of the virtual environment folder. +if ($Prompt) { + Write-Verbose "Prompt specified as argument, using '$Prompt'" +} +else { + Write-Verbose "Prompt not specified as argument to script, checking pyvenv.cfg value" + if ($pyvenvCfg -and $pyvenvCfg['prompt']) { + Write-Verbose " Setting based on value in pyvenv.cfg='$($pyvenvCfg['prompt'])'" + $Prompt = $pyvenvCfg['prompt']; + } + else { + Write-Verbose " Setting prompt based on parent's directory's name. (Is the directory name passed to venv module when creating the virtual environment)" + Write-Verbose " Got leaf-name of $VenvDir='$(Split-Path -Path $venvDir -Leaf)'" + $Prompt = Split-Path -Path $venvDir -Leaf + } +} + +Write-Verbose "Prompt = '$Prompt'" +Write-Verbose "VenvDir='$VenvDir'" + +# Deactivate any currently active virtual environment, but leave the +# deactivate function in place. +deactivate -nondestructive + +# Now set the environment variable VIRTUAL_ENV, used by many tools to determine +# that there is an activated venv. +$env:VIRTUAL_ENV = $VenvDir + +if (-not $Env:VIRTUAL_ENV_DISABLE_PROMPT) { + + Write-Verbose "Setting prompt to '$Prompt'" + + # Set the prompt to include the env name + # Make sure _OLD_VIRTUAL_PROMPT is global + function global:_OLD_VIRTUAL_PROMPT { "" } + Copy-Item -Path function:prompt -Destination function:_OLD_VIRTUAL_PROMPT + New-Variable -Name _PYTHON_VENV_PROMPT_PREFIX -Description "Python virtual environment prompt prefix" -Scope Global -Option ReadOnly -Visibility Public -Value $Prompt + + function global:prompt { + Write-Host -NoNewline -ForegroundColor Green "($_PYTHON_VENV_PROMPT_PREFIX) " + _OLD_VIRTUAL_PROMPT + } + $env:VIRTUAL_ENV_PROMPT = $Prompt +} + +# Clear PYTHONHOME +if (Test-Path -Path Env:PYTHONHOME) { + Copy-Item -Path Env:PYTHONHOME -Destination Env:_OLD_VIRTUAL_PYTHONHOME + Remove-Item -Path Env:PYTHONHOME +} + +# Add the venv to the PATH +Copy-Item -Path Env:PATH -Destination Env:_OLD_VIRTUAL_PATH +$Env:PATH = "$VenvExecDir$([System.IO.Path]::PathSeparator)$Env:PATH" diff --git a/venv/bin/activate b/venv/bin/activate new file mode 100644 index 0000000..67edbb3 --- /dev/null +++ b/venv/bin/activate @@ -0,0 +1,70 @@ +# This file must be used with "source bin/activate" *from bash* +# You cannot run it directly + +deactivate () { + # reset old environment variables + if [ -n "${_OLD_VIRTUAL_PATH:-}" ] ; then + PATH="${_OLD_VIRTUAL_PATH:-}" + export PATH + unset _OLD_VIRTUAL_PATH + fi + if [ -n "${_OLD_VIRTUAL_PYTHONHOME:-}" ] ; then + PYTHONHOME="${_OLD_VIRTUAL_PYTHONHOME:-}" + export PYTHONHOME + unset _OLD_VIRTUAL_PYTHONHOME + fi + + # Call hash to forget past commands. Without forgetting + # past commands the $PATH changes we made may not be respected + hash -r 2> /dev/null + + if [ -n "${_OLD_VIRTUAL_PS1:-}" ] ; then + PS1="${_OLD_VIRTUAL_PS1:-}" + export PS1 + unset _OLD_VIRTUAL_PS1 + fi + + unset VIRTUAL_ENV + unset VIRTUAL_ENV_PROMPT + if [ ! "${1:-}" = "nondestructive" ] ; then + # Self destruct! + unset -f deactivate + fi +} + +# unset irrelevant variables +deactivate nondestructive + +# on Windows, a path can contain colons and backslashes and has to be converted: +if [ "${OSTYPE:-}" = "cygwin" ] || [ "${OSTYPE:-}" = "msys" ] ; then + # transform D:\path\to\venv to /d/path/to/venv on MSYS + # and to /cygdrive/d/path/to/venv on Cygwin + export VIRTUAL_ENV=$(cygpath "/home/mrhacker/Descargas/web2/venv") +else + # use the path as-is + export VIRTUAL_ENV="/home/mrhacker/Descargas/web2/venv" +fi + +_OLD_VIRTUAL_PATH="$PATH" +PATH="$VIRTUAL_ENV/bin:$PATH" +export PATH + +# unset PYTHONHOME if set +# this will fail if PYTHONHOME is set to the empty string (which is bad anyway) +# could use `if (set -u; : $PYTHONHOME) ;` in bash +if [ -n "${PYTHONHOME:-}" ] ; then + _OLD_VIRTUAL_PYTHONHOME="${PYTHONHOME:-}" + unset PYTHONHOME +fi + +if [ -z "${VIRTUAL_ENV_DISABLE_PROMPT:-}" ] ; then + _OLD_VIRTUAL_PS1="${PS1:-}" + PS1="(venv) ${PS1:-}" + export PS1 + VIRTUAL_ENV_PROMPT="(venv) " + export VIRTUAL_ENV_PROMPT +fi + +# Call hash to forget past commands. Without forgetting +# past commands the $PATH changes we made may not be respected +hash -r 2> /dev/null diff --git a/venv/bin/activate.csh b/venv/bin/activate.csh new file mode 100644 index 0000000..dc10723 --- /dev/null +++ b/venv/bin/activate.csh @@ -0,0 +1,27 @@ +# This file must be used with "source bin/activate.csh" *from csh*. +# You cannot run it directly. + +# Created by Davide Di Blasi . +# Ported to Python 3.3 venv by Andrew Svetlov + +alias deactivate 'test $?_OLD_VIRTUAL_PATH != 0 && setenv PATH "$_OLD_VIRTUAL_PATH" && unset _OLD_VIRTUAL_PATH; rehash; test $?_OLD_VIRTUAL_PROMPT != 0 && set prompt="$_OLD_VIRTUAL_PROMPT" && unset _OLD_VIRTUAL_PROMPT; unsetenv VIRTUAL_ENV; unsetenv VIRTUAL_ENV_PROMPT; test "\!:*" != "nondestructive" && unalias deactivate' + +# Unset irrelevant variables. +deactivate nondestructive + +setenv VIRTUAL_ENV "/home/mrhacker/Descargas/web2/venv" + +set _OLD_VIRTUAL_PATH="$PATH" +setenv PATH "$VIRTUAL_ENV/bin:$PATH" + + +set _OLD_VIRTUAL_PROMPT="$prompt" + +if (! "$?VIRTUAL_ENV_DISABLE_PROMPT") then + set prompt = "(venv) $prompt" + setenv VIRTUAL_ENV_PROMPT "(venv) " +endif + +alias pydoc python -m pydoc + +rehash diff --git a/venv/bin/activate.fish b/venv/bin/activate.fish new file mode 100644 index 0000000..67b1a33 --- /dev/null +++ b/venv/bin/activate.fish @@ -0,0 +1,69 @@ +# This file must be used with "source /bin/activate.fish" *from fish* +# (https://fishshell.com/). You cannot run it directly. + +function deactivate -d "Exit virtual environment and return to normal shell environment" + # reset old environment variables + if test -n "$_OLD_VIRTUAL_PATH" + set -gx PATH $_OLD_VIRTUAL_PATH + set -e _OLD_VIRTUAL_PATH + end + if test -n "$_OLD_VIRTUAL_PYTHONHOME" + set -gx PYTHONHOME $_OLD_VIRTUAL_PYTHONHOME + set -e _OLD_VIRTUAL_PYTHONHOME + end + + if test -n "$_OLD_FISH_PROMPT_OVERRIDE" + set -e _OLD_FISH_PROMPT_OVERRIDE + # prevents error when using nested fish instances (Issue #93858) + if functions -q _old_fish_prompt + functions -e fish_prompt + functions -c _old_fish_prompt fish_prompt + functions -e _old_fish_prompt + end + end + + set -e VIRTUAL_ENV + set -e VIRTUAL_ENV_PROMPT + if test "$argv[1]" != "nondestructive" + # Self-destruct! + functions -e deactivate + end +end + +# Unset irrelevant variables. +deactivate nondestructive + +set -gx VIRTUAL_ENV "/home/mrhacker/Descargas/web2/venv" + +set -gx _OLD_VIRTUAL_PATH $PATH +set -gx PATH "$VIRTUAL_ENV/bin" $PATH + +# Unset PYTHONHOME if set. +if set -q PYTHONHOME + set -gx _OLD_VIRTUAL_PYTHONHOME $PYTHONHOME + set -e PYTHONHOME +end + +if test -z "$VIRTUAL_ENV_DISABLE_PROMPT" + # fish uses a function instead of an env var to generate the prompt. + + # Save the current fish_prompt function as the function _old_fish_prompt. + functions -c fish_prompt _old_fish_prompt + + # With the original prompt function renamed, we can override with our own. + function fish_prompt + # Save the return status of the last command. + set -l old_status $status + + # Output the venv prompt; color taken from the blue of the Python logo. + printf "%s%s%s" (set_color 4B8BBE) "(venv) " (set_color normal) + + # Restore the return status of the previous command. + echo "exit $old_status" | . + # Output the original/"old" prompt. + _old_fish_prompt + end + + set -gx _OLD_FISH_PROMPT_OVERRIDE "$VIRTUAL_ENV" + set -gx VIRTUAL_ENV_PROMPT "(venv) " +end diff --git a/venv/bin/dotenv b/venv/bin/dotenv new file mode 100755 index 0000000..2da4834 --- /dev/null +++ b/venv/bin/dotenv @@ -0,0 +1,8 @@ +#!/home/mrhacker/Descargas/web2/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from dotenv.__main__ import cli +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli()) diff --git a/venv/bin/filetype b/venv/bin/filetype new file mode 100755 index 0000000..b589bdd --- /dev/null +++ b/venv/bin/filetype @@ -0,0 +1,8 @@ +#!/home/mrhacker/Descargas/web2/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from filetype.__main__ import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/flask b/venv/bin/flask new file mode 100755 index 0000000..306062a --- /dev/null +++ b/venv/bin/flask @@ -0,0 +1,8 @@ +#!/home/mrhacker/Descargas/web2/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from flask.cli import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/normalizer b/venv/bin/normalizer new file mode 100755 index 0000000..e3492d5 --- /dev/null +++ b/venv/bin/normalizer @@ -0,0 +1,8 @@ +#!/home/mrhacker/Descargas/web2/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from charset_normalizer.cli import cli_detect +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(cli_detect()) diff --git a/venv/bin/pip b/venv/bin/pip new file mode 100755 index 0000000..472b744 --- /dev/null +++ b/venv/bin/pip @@ -0,0 +1,8 @@ +#!/home/mrhacker/Descargas/web2/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3 b/venv/bin/pip3 new file mode 100755 index 0000000..472b744 --- /dev/null +++ b/venv/bin/pip3 @@ -0,0 +1,8 @@ +#!/home/mrhacker/Descargas/web2/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/pip3.12 b/venv/bin/pip3.12 new file mode 100755 index 0000000..472b744 --- /dev/null +++ b/venv/bin/pip3.12 @@ -0,0 +1,8 @@ +#!/home/mrhacker/Descargas/web2/venv/bin/python +# -*- coding: utf-8 -*- +import re +import sys +from pip._internal.cli.main import main +if __name__ == '__main__': + sys.argv[0] = re.sub(r'(-script\.pyw|\.exe)?$', '', sys.argv[0]) + sys.exit(main()) diff --git a/venv/bin/python b/venv/bin/python new file mode 120000 index 0000000..acd4152 --- /dev/null +++ b/venv/bin/python @@ -0,0 +1 @@ +/usr/bin/python \ No newline at end of file diff --git a/venv/bin/python3 b/venv/bin/python3 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/venv/bin/python3 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/venv/bin/python3.12 b/venv/bin/python3.12 new file mode 120000 index 0000000..d8654aa --- /dev/null +++ b/venv/bin/python3.12 @@ -0,0 +1 @@ +python \ No newline at end of file diff --git a/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/LICENSE b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/LICENSE new file mode 100644 index 0000000..f5c10ab --- /dev/null +++ b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/LICENSE @@ -0,0 +1,20 @@ +The MIT License (MIT) + +Copyright (c) 2014 Miguel Grinberg + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/METADATA b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/METADATA new file mode 100644 index 0000000..ddec6b0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/METADATA @@ -0,0 +1,77 @@ +Metadata-Version: 2.1 +Name: Flask-SocketIO +Version: 5.3.6 +Summary: Socket.IO integration for Flask applications +Home-page: https://github.com/miguelgrinberg/flask-socketio +Author: Miguel Grinberg +Author-email: miguel.grinberg@gmail.com +Project-URL: Bug Tracker, https://github.com/miguelgrinberg/flask-socketio/issues +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: Programming Language :: Python :: 3 +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Requires-Python: >=3.6 +Description-Content-Type: text/markdown +License-File: LICENSE +Requires-Dist: Flask >=0.9 +Requires-Dist: python-socketio >=5.0.2 +Provides-Extra: docs +Requires-Dist: sphinx ; extra == 'docs' + +Flask-SocketIO +============== + +[![Build status](https://github.com/miguelgrinberg/flask-socketio/workflows/build/badge.svg)](https://github.com/miguelgrinberg/Flask-SocketIO/actions) [![codecov](https://codecov.io/gh/miguelgrinberg/flask-socketio/branch/main/graph/badge.svg)](https://codecov.io/gh/miguelgrinberg/flask-socketio) + +Socket.IO integration for Flask applications. + +Sponsors +-------- + +The following organizations are funding this project: + +![Socket.IO](https://images.opencollective.com/socketio/050e5eb/logo/64.png)
[Socket.IO](https://socket.io) | [Add your company here!](https://github.com/sponsors/miguelgrinberg)| +-|- + +Many individual sponsors also support this project through small ongoing contributions. Why not [join them](https://github.com/sponsors/miguelgrinberg)? + +Installation +------------ + +You can install this package as usual with pip: + + pip install flask-socketio + +Example +------- + +```py +from flask import Flask, render_template +from flask_socketio import SocketIO, emit + +app = Flask(__name__) +app.config['SECRET_KEY'] = 'secret!' +socketio = SocketIO(app) + +@app.route('/') +def index(): + return render_template('index.html') + +@socketio.event +def my_event(message): + emit('my response', {'data': 'got it!'}) + +if __name__ == '__main__': + socketio.run(app) +``` + +Resources +--------- + +- [Tutorial](http://blog.miguelgrinberg.com/post/easy-websockets-with-flask-and-gevent) +- [Documentation](http://flask-socketio.readthedocs.io/en/latest/) +- [PyPI](https://pypi.python.org/pypi/Flask-SocketIO) +- [Change Log](https://github.com/miguelgrinberg/Flask-SocketIO/blob/main/CHANGES.md) +- Questions? See the [questions](https://stackoverflow.com/questions/tagged/flask-socketio) others have asked on Stack Overflow, or [ask](https://stackoverflow.com/questions/ask?tags=python+flask-socketio+python-socketio) your own question. + diff --git a/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/RECORD b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/RECORD new file mode 100644 index 0000000..3d931b9 --- /dev/null +++ b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/RECORD @@ -0,0 +1,13 @@ +Flask_SocketIO-5.3.6.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +Flask_SocketIO-5.3.6.dist-info/LICENSE,sha256=aNCWbkgKjS_T1cJtACyZbvCM36KxWnfQ0LWTuavuYKQ,1082 +Flask_SocketIO-5.3.6.dist-info/METADATA,sha256=vmIOzjkNLXRjmocRXtso6hLV27aiJgH7_A55TVJyD4k,2631 +Flask_SocketIO-5.3.6.dist-info/RECORD,, +Flask_SocketIO-5.3.6.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +Flask_SocketIO-5.3.6.dist-info/WHEEL,sha256=yQN5g4mg4AybRjkgi-9yy4iQEFibGQmlz78Pik5Or-A,92 +Flask_SocketIO-5.3.6.dist-info/top_level.txt,sha256=C1ugzQBJ3HHUJsWGzyt70XRVOX-y4CUAR8MWKjwJOQ8,15 +flask_socketio/__init__.py,sha256=ea3QXRYKBje4JQGcNSEOmj42qlf2peRNbCzZZWfD9DE,54731 +flask_socketio/__pycache__/__init__.cpython-312.pyc,, +flask_socketio/__pycache__/namespace.cpython-312.pyc,, +flask_socketio/__pycache__/test_client.cpython-312.pyc,, +flask_socketio/namespace.py,sha256=b3oyXEemu2po-wpoy4ILTHQMVuVQqicogCDxfymfz_w,2020 +flask_socketio/test_client.py,sha256=9_R1y_vP8yr8wzimQUEMAUyVqX12FMXurLj8t1ecDdc,11034 diff --git a/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/WHEEL b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/WHEEL new file mode 100644 index 0000000..7e68873 --- /dev/null +++ b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.41.2) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/top_level.txt new file mode 100644 index 0000000..ba82ec3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/Flask_SocketIO-5.3.6.dist-info/top_level.txt @@ -0,0 +1 @@ +flask_socketio diff --git a/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst new file mode 100644 index 0000000..9d227a0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/LICENSE.rst @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/METADATA b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/METADATA new file mode 100644 index 0000000..dfe37d5 --- /dev/null +++ b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/METADATA @@ -0,0 +1,93 @@ +Metadata-Version: 2.1 +Name: MarkupSafe +Version: 2.1.5 +Summary: Safely add untrusted strings to HTML/XML markup. +Home-page: https://palletsprojects.com/p/markupsafe/ +Maintainer: Pallets +Maintainer-email: contact@palletsprojects.com +License: BSD-3-Clause +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Documentation, https://markupsafe.palletsprojects.com/ +Project-URL: Changes, https://markupsafe.palletsprojects.com/changes/ +Project-URL: Source Code, https://github.com/pallets/markupsafe/ +Project-URL: Issue Tracker, https://github.com/pallets/markupsafe/issues/ +Project-URL: Chat, https://discord.gg/pallets +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Text Processing :: Markup :: HTML +Requires-Python: >=3.7 +Description-Content-Type: text/x-rst +License-File: LICENSE.rst + +MarkupSafe +========== + +MarkupSafe implements a text object that escapes characters so it is +safe to use in HTML and XML. Characters that have special meanings are +replaced so that they display as the actual characters. This mitigates +injection attacks, meaning untrusted user input can safely be displayed +on a page. + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + pip install -U MarkupSafe + +.. _pip: https://pip.pypa.io/en/stable/getting-started/ + + +Examples +-------- + +.. code-block:: pycon + + >>> from markupsafe import Markup, escape + + >>> # escape replaces special characters and wraps in Markup + >>> escape("") + Markup('<script>alert(document.cookie);</script>') + + >>> # wrap in Markup to mark text "safe" and prevent escaping + >>> Markup("Hello") + Markup('hello') + + >>> escape(Markup("Hello")) + Markup('hello') + + >>> # Markup is a str subclass + >>> # methods and operators escape their arguments + >>> template = Markup("Hello {name}") + >>> template.format(name='"World"') + Markup('Hello "World"') + + +Donate +------ + +The Pallets organization develops and supports MarkupSafe and other +popular packages. In order to grow the community of contributors and +users, and allow the maintainers to devote more time to the projects, +`please donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +- Documentation: https://markupsafe.palletsprojects.com/ +- Changes: https://markupsafe.palletsprojects.com/changes/ +- PyPI Releases: https://pypi.org/project/MarkupSafe/ +- Source Code: https://github.com/pallets/markupsafe/ +- Issue Tracker: https://github.com/pallets/markupsafe/issues/ +- Chat: https://discord.gg/pallets diff --git a/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/RECORD b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/RECORD new file mode 100644 index 0000000..b5d8783 --- /dev/null +++ b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/RECORD @@ -0,0 +1,15 @@ +MarkupSafe-2.1.5.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +MarkupSafe-2.1.5.dist-info/LICENSE.rst,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 +MarkupSafe-2.1.5.dist-info/METADATA,sha256=2dRDPam6OZLfpX0wg1JN5P3u9arqACxVSfdGmsJU7o8,3003 +MarkupSafe-2.1.5.dist-info/RECORD,, +MarkupSafe-2.1.5.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +MarkupSafe-2.1.5.dist-info/WHEEL,sha256=vJMp7mUkE-fMIYyE5xJ9Q2cYPnWVgHf20clVdwMSXAg,152 +MarkupSafe-2.1.5.dist-info/top_level.txt,sha256=qy0Plje5IJuvsCBjejJyhDCjEAdcDLK_2agVcex8Z6U,11 +markupsafe/__init__.py,sha256=r7VOTjUq7EMQ4v3p4R1LoVOGJg6ysfYRncLr34laRBs,10958 +markupsafe/__pycache__/__init__.cpython-312.pyc,, +markupsafe/__pycache__/_native.cpython-312.pyc,, +markupsafe/_native.py,sha256=GR86Qvo_GcgKmKreA1WmYN9ud17OFwkww8E-fiW-57s,1713 +markupsafe/_speedups.c,sha256=X2XvQVtIdcK4Usz70BvkzoOfjTCmQlDkkjYSn-swE0g,7083 +markupsafe/_speedups.cpython-312-x86_64-linux-gnu.so,sha256=Y2jIPiSLPZlb82iRu9UUj27sbTui5o7SSoi-2SIXEUg,54072 +markupsafe/_speedups.pyi,sha256=vfMCsOgbAXRNLUXkyuyonG8uEWKYU4PDqNuMaDELAYw,229 +markupsafe/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL new file mode 100644 index 0000000..bd099b7 --- /dev/null +++ b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.42.0) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_17_x86_64 +Tag: cp312-cp312-manylinux2014_x86_64 + diff --git a/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt new file mode 100644 index 0000000..75bf729 --- /dev/null +++ b/venv/lib/python3.12/site-packages/MarkupSafe-2.1.5.dist-info/top_level.txt @@ -0,0 +1 @@ +markupsafe diff --git a/venv/lib/python3.12/site-packages/_mysql_connector.cpython-312-x86_64-linux-gnu.so b/venv/lib/python3.12/site-packages/_mysql_connector.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..981243d1f69e1df6c7b9d194eee6cd2876859814 GIT binary patch literal 10852888 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%0AKm1 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

S^mAsAsIdrk=I_f_lz+Lp^W( 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

!> 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�vq_(NWKIQH_;jQnkR#GSDdFe5?T@plg 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Ë!hzAfE+nG+p{BC~mRVRx(bp)>& zAlOtb6Fk@hMk2|huM&c`Dt~A7&<5{80g}C97ZY*=s|>b zbTwXC`6KJpVXggkLfO^)_-B5rSRDLIOJ-1KmrZ2OX;oX{ESqWW?%%b^Et*>SQ-qc~o>G%Md$#mV_MVW$i*?J%SamVM^ zlh-Obruco$sCQ8+#oxuED}G-!>b-5$d&|i8@VA4^N(U|uFB|n4mFDW%>xhVgSaZX)vZVl>rP zk!|i2u5Mu>OyK&(&ZNyPwyc$UI+HpChkRPCr!(oM zF8gXMhB}kh35xmp?|M3uZp+x$yYzG>{djd_X)a1 z$g;|>7qIT(Bitd-X~_5~f&SSq#Bh;y;?5p17wG~XCsFW1SUMSIb|rRkrqpwN#&D!( zvCvT!NPY~7Leq)S)Ztw6!_n45G_cO;5b^y`DGlk-&)|nRzXqRf>5ZPLG|kty?P&Uz z+grM8lbA%QgJ&(RK&N9<6)(=CJ5sNo5c*ZP_AfZ?dsQNfwik%USe{io;8-Bjbgv^k za8ib^T)N9RsLb8qbjTeaB|WT?!VjM~T;9%bXlM3zy&E~fP%e3A&yh-0`xpj;9)p@` zIv>MFh=C7}k*``YA0Oqr%O;5G2NrrN-Q|;+9C4kY``Da7(`AVD>#Hjv9;S|za#=hT zPS2B_rslgIt~6CWO^*)MKFyES&#;=LyR$l-t6hX0R3(nX&!Lk=NwsxU# zHgi{M3+j%hDTX8l4~NZoJ$wR<99&^$Et{rEh4p0V;}{Oj<|U9AqTXvn9&gIS6kt;6 zT|345R=M9u3t_dC$3jox(U!vYHIKg4VfG+cd7-DxcJCfexNkGIPsl9E>|Er;q1x?X zH|Na4nKg4T#+lVC2?^J?ymO|6Yw;d3>i}Ly>)k&@O1Fngx7UZ>LOTiIEj3o!pqP{W zsqJIxLwjLalpFqNed+$%*S&Kp;Xb;vreLxov{zABvQJEeH<_AMRSGXgEHu&b8BJ~# z2UG95#e4R(XV46A>YdmS7zFm@Za9>Y(B5!wt}Hd=Tz^^tzoh46G=E+><)$Z><27;@ zlz5rjz{QxMq%TuVrUX2n?D0HpK4Gt2H~@y|6s}afPkQ**r_YxDP4f`|U(+{fU%6$s zdmCFwX#=X|@y?l!c*5w_YBVaNGa{L#N0{;O=1%LIHI=%+nJIIoCFl;=p`6j!4-v+~(g07B z=%q*uqQ>2&#--0={PK;9ro(o;@Q#BJY-ak5BWs_cafjSPuDI8zR`w^Kx2@}~i_|{$ z?O$f+1J=QKT(`^)#zGB-AMSlev*E0sO$wl4c&h48iM;1HjGP}c4*B`{%?*2uS=QmR zh2}L6|4)bKotHkfJW!j7xlfn{0Hc*PkowmJrCw}`vj#u+Z{d~U#4YJCBn>`<4ug}7 z#n+OzB9(}?UgbT(Ieev5C=>2q;@m9Tp}Z*Ooco5`JSBn!`sti!0q$|=#GZnO;yKe} zY0T1-5Pb;UQ}wsump)9wDY|1y`OTk@dkTc2@#=C0Xl8%U6ab45%39@w_Uwz-W|mA~ z%%n&hdJMiEtb>=u`ks!-Ja_K2n%!uQAAvnPqzqnLwIKuNPQ?Nvxno@DU;4#_%SdIp zeii4OhF#t&IAN-FN@@rPSKlR_@J>gFj%xPW#2F$c`C*LLa`g~DlghPoRWXSjKV=D$ z+a(70-%IXjX8$?OdB;TXD(+p9UqeoLv2DMs{n2z;U7s#uSbFJ@#+e5E*5mlt5#aeS?0(!Jd$Xow{|w`;ldKewU1qiw=*0lS(0FIU+y9*; zgDi}?68EAh?m%{$MfIeUqRn{~-kd4fO2rlQ4MueR22K~*BWYOCcZ1Rr>8}sbGxT^L zF#^2OCR`W4s>a^9j4ZN*)$}RnRc$<6!@~ijj(N|Zc zBBG^SNm$0Qn_Yk_;BK_|LW^k2!eHp!(xWT@28IpF1(^I{e&Lm4c^C~w#liM_fe8Ka z?M;FZZ??T~3dA3Z_O(cLUVnW?eO@6Fm9W8%F!iY`-`+*#aqsdf%z96cd-$XVF`xk< z>PYJu54xHVJe6cy9_ z5UQ&aKTwoC$;KT<4XreJG=X?{d)e5NZOoYDgdk?jsb8Scc<;2DLBm6A@omEG6FrI} z@?lH4?jCUMLUi#&l|geQ)-y2Ef!Zn( zjyT|yo{t&r#B?m(N?#YAV^>^vG7rG%ZE+)=eUWV^Gcx}C^9|(%nfFS$lz7p;@Y;U| zD8<~p;Da!h_-^fH%H!!{$NY?&rRLWAqS9D;vl1;D7j`=o2wxD!*~t72{-3UbPD*W~ z*~#u)a=IH?gOzqNKlamOSop8Q@j?S|eJn`s;kLL+tnw7uBMMYnX~vj`lXogLxOVkA9EkPi`g;-rPhW;N6^zofBdLk z_M%@!C-=bvu$`oX@B(3bO5br|8RrvIVz_Y;yU<~kLKjyx_^IBT?ALQLou2F`grn{BW99mWb(*7gUobK9iy*i8lmWW7XH*urCJhh zR3}fhGifvu8~n1Mrx5o&b~4TR#+$!E#4v_QBT%QHf%#otV+$SJ8+IpF$4a+)k6yDi=48|7iX z;7&!u-0%hdlZz}k#aynxYc1bSKOk_>$QmC<<*je4t|dlwv2e9Ij|%S)paj&fiUSc& z#}9~f9^h^aW{T=oO^>FQcQW0n3RY??{T)4=wr{XCW9LG(D}gzTXnJ{9 zxB=QKX8@A+y~yPVHz5qM-oG00A+Xmi)D=s;y$VK0VLuxIWQ|&z2FUgn9R-+IwfDeS ztZhAR=Et;i3_`iORajNRscULW%c_d3=y-d6b{>dyIS(Z6V4T2Z^f9u&ci%Yl!eN8< zxLeTrD%}YVNKgI_9aY)|X3exY}(f4U}zL=qZD-u~JjueOFTeWG6z0#n4Z1&m=U2I<=V~@4LPT zh|u;U_JLt^%fr1{F>ddlqjzT4L)Z9MfNu)xV+6kj7u?L~RBueZHy_B2WSF*oP>wgV z3|4|Sv)ql`XVii-nw-?~ejEbbsUY|v=B=qVO4%~Td}H-KS{(E4s}_k8PcH;SA{h<` z>YWH>4hs7l!nymZCDt?c@57gbFO}pAPBOPwh8}j>@1_VYnN?c(VVLsQ1E(TZq~9K< z@MU_(k;e|+sh~2B3VytHdB3y5F|Aq-x&e7LR%)+LmkohRv86R0Uuvu7fbb6(dN9Tf z?B;18OSvxa04+Bde)RpY=n*4L+npZz>PqTAy#bnx|ZbXO9g z-^Y628JoI3TFMQ}WLZ6~bd8K<0Di6BJEsf@Ag4vlS|8;eMW9Rtq)_%<+0OWI6&pqwB0uj)_fziK zWgOVK(&{^H@?C?l@7r6;nBr5na)St6*4pi0!ai|#PW-iYF=yr1>4p2cM1yOv(wW09 zZx z5VQLjz&w77pvWak0i9mIZmZR2+Q3MJy+`bP=bFwi^WwflQvYXvL>nT2!Tf~hCp$mW z*=rfBeEGl^Y>(yrW1R;oxUWLZRHX$FHaemJ1t!Ic;2(%zb$7f6Ufr3V^A0lu;|Z1IlQBgcy#je%*>^eH&xxjw z`1#=(tckLLVg9<3tmo?m($PpC`^%h3AS258^Ua)!K#v^lamH;t4`YnXez){}p4t3l zz($OY*s3AhVR1EIncAo|IWC&sT*m@wKEu2DP2Sm={CW7H3^+m~?r-K;lG=VoEbx>z#ke{D=iiWnh^ed;&%1*Hlou1A8)8 zZd>%xO)Vh0_NgUP+^0gnO0RBV_BLgx3{8E_8m-}z#vUR79llIEB`)?+E^Lm=) zw(4dr?Y)?!(b`m$$C5?JIi62KE9;f79Sf^Vm;xM7TnQz8R`%ve*mK%|WW3_KOsn3~W z&F$jsd={D=A1bmX+Zo}t+f>vSF$@LXGkVudO(hc(Ii1Ofr<0r__AxHdHyU6jX+Pj< zSW%HKQk|~pX3zJ>UM4z5l%p?2L&h7twVv&g2@hXLN&`ynq5Pz$S83AyiHSqG%flCQ z`8zA*(+R}f0>pSXuc0>0rsnY$O7!j(taxTg!esMrUrK$PRZa6ydoZ91k9a+Bt-om6 zz$;D9p~190+pS*FzUDjfW1b(9>^dsW;}0&YsheuP+l$i-lm{3AA6AmcW&fJGL%B;X zv;8!Rh**bmw`#Y-8|Dw8~s z0xFw73|kYoGNS(cwU3w^^ZhIjbJv2_s)3}VM^CB+!S#IC^dcaaz-UT^=?z1|_m4oM z7Jnmjg3)&g*_Dzdou{;(7^bv}^?}3#T>p##Xfr}~)W`>gYa(!%LqUV-V10S_nm)ai zyw&!`e|)1h-KN!WnGm@du~~Q(rjAVggRMazn*?Z4YR<~w{P64}e>Bdw@W1sR(m6cv zyo|D8)4Q-=74e%A0*>&7;YXMUa}k_lDB55i7KS5LZsSiO4l81NUVtMSt9>%=%z54% zMmZ+Lo%-jQS|%0^MwC&wdc@~_=4Q04NEk63CU1~}OccMC0Wm|HXm;1(8+EK+S@0ZxoXtZ*+uJEhoAJW&OAW8p7q<|B|-bP{+F~9Yu*C79H~@+ zG0zIF2%M8{`|J=pg>Y2*`G?t)eLTAP*AvHB4giC3CjbUpsPz7IiWk$_pGDL3VZ?Jz+t=BkBi_tP$o{4YhQj}%DE#zBnM96x6RX)yaw^Z| zdN3p-DyPCyvGgO=It9Y0T%{9`7{^ifs2H@Fg04AoN7MJ(H0EF$O)mihK5BRqFe6;g z#vS6~i6WIe()r{jD2XlG-P4<$Vm4X2h&MBKSBb!2`RLHE+==w+A5vws z^<`}iamzQlAeO#auk5@phvzoL(koA7P8FG}+TfHO`_JK-vIYDhHCuySve7M_1my>QnnB|sf~6YF zY{b&nmu+gH7+|^6pCn@4vi&@hk3qbcW^}gixD-gx)M0aFDqey$wY3nYE1x1nOZWw} zHC$>_Fx;l`9SIto-Orj0_9N3O_Ef`7hK1khfB#G;X0DU9h9CX2SkQ zuw&r_0xs(>gQ5}i5G7Iw=m}p6F2vu}7yPe%Z5VhuF>46yyhF5L!hh`Rr zS7XZ%zt`~o;u;Znjh*3(SzXE(jHy7ibW8XWbGI50AH8J$f9rNDoVj!qazZS+6@ynUW&ojK4+y&0&r($ z>Cv%tWTIj^t|!KG>bpTN7Yfm$_r_s<}Ss`v9D^~wUItRmu~ z-UA}(Mr@=tnT5I}5cfPo3;*)eL%B;Y5%OO8QGiSGiM;Kl&uW#9KD$$fxsq)&4?(NAq%-aW*; zJahsL6M~@3?LuDAxZw-q=@v~PUIxc3I%1yo1OHnO3N6UOt%`VpB1DZ~H3>p0ee{%n zI|d1px3QZ_9y*yKl?kSPi&)zJ=YzcLkUc^Eo0K0L8ERDe=rbv9(Ky5)Vun9-YLFlF z3KPFnnXv{W0me3lDZ|)CCu`8_$74fo2vTl6rsPbA#HwGnrJkz<@Ow%JvJGbUfWD&U z4Kk2qj(sm#qe<#D>S{Oo4r@$H(QeLygkazYfBK+B$V(mHrURztx<>b!K zr((OZ25c?2$z1KA3=F2W4oC+Sl9^x?rp*cV=tg8{fAq{#DAieclqOy<<>IICjTk1} z+{ZDPgGsFDnOmtAFTrZ6w;UnnZae}=OyM?m`|~#m88vqEB@@S=k)rwD*yYdS3$Y9Z zi7^NKs$XMc`Y{IVuLX%I4`FrFZ@2HXO7Go%(!9%32xW6x#0U^Tc1X{@y7I$Gb0luQ z*xU}^xugM@Va}l#4zXc~W&YocQVbiPG4BIvfTS4s%{yZS#8K%v>B(orT+G*SG-^Gl z{x5Z~Mjv!^rmwbgUU(jxy`xR?0R4GkD`6qPgD; z?IT~@$s@yW^`gsu36ylS&)Alw4A6_Afm!RfMyV$G$zWe*xd?e!{dlK61-J`&#NCm+ zKlrpam4G8+-e&R8!d^!w4^A8tVzqyD+GM3Y=B*Pq4-iGbEB0J8^mNQ!w@S%5GKLO^ z-Ob8`$CD6L;e$#H@hd;lEB~E^58gItymTOuE;}RPcBmqmi98-)!7&P_!6on4Y$kJ?AYaA@1br70R-#>6DN2ltAE@osy8 zu@ULOKvom3wA&0tm*D+P_A@5WxRp`Vwh@ zonepJ22$Y$U(8M=^?^S`(+%(VcfSfG(Hp}h`ML7YjJC%JAc{nYAv>DPX1RUa5BGY0 z3rDuGSG!{+!I?ECUWzh62vie-j_K>rabJIwAv)B3g#+A-WT$g;=48VeUw;JRQfK9b zwsp`OYek~dwpjYXPHh>Uq2SR;r=E|FYBdaa!t?S~2JvBY? z{k5-OJ0Uz{on{pS9eo}8qCYQjW2~=3oLT+JPPcT)%xu-}TJo7w8gH!KvUEb&T_-Sc z2g0=mnwE@bMpaf(NkzqwN^D@0N`Y8vvpA1*So~t65{GHtS?ar*w2{kWxbvnva7)$jRPc{U4S<%>hCdKcY3f z3M2yC4qdoEf+t#3_bs0m6{$&mxamxKEWSHJFkn0{2V+uUQHhD2VA)ds8!=3Z=Xp|G zZ+@IApcfM9*<<4~m|ZJOM=nhkU;*StO>eNuW~R&bqo@f$%z4Mi^m6{k*&57 zhc$g2!y2qJf7cl!M|I^2Mj+vC&1Rq)^WzgJ7G!^F;_61vU-NVCn!AF0lH-Mc&2Sxq z-`Bnjrpd6Q#=P4soZe=nD^|$D2vrIm&+36N7x5Ffd5_s)w= z2%AVP`V{jXR2_72nFtgplind{*{x37k+dM6L z{}jeHdtz*D4{1x2zf&57Jv#NGOq;}@eqBk;v&e}*FubA1({|C~p5?9i zu|^C_gF5C%?ZAP+1r`2D_iKpEmzvC?QuH;Zn-Kv|k#wz@UhjSlZ^PW&{Ti*H9N+%~ zg-I%8aMbTvmq9tKRo&IU$v`Bg!S%9kK;v0z_(giZZJ&8Ja}o>nD(c7ki2@#O(hMl# zo)TJ3#JU#y;kHiu{Bf6k-qX!9KErmoe^tQR6Vev4)f@0r3 z&9vRez{dVfztX5QuIK2W%{PBOH0VWW`jamid?XDVBoz3>0Lxf>*1nKRVq-g`-Wnfk zNTrx--V&v^8D&?=ar($2iVvw6a-JRyp)+%DwwvezKFF`B<=t9LMr`IjY6pMhy87QQ zC#70j{X+kU-`go>lgfS)G+My#G54LUOf@hP5{$8Tm5ZjU zebQ;W)NCR*4H3;=$R0hBFDRhWr)1kgp4!VvtB3*ZgITb4N z9V@S3kn%e3Pdcd!d1a{;^xnhngDO6IhK5)QnYFjp(fTDvzZIz{Z5q#ZK|#PJ==v1% zCHomel3NT0RnI0QK#6+>R}`!w_5cM!7uIremVH_~QuduUHD&d*(lh1>(N-KXVE3Z` z9c1I#>|aoAch{*&2t{frAlNLzMoAfA%H(Q@wf$oX+r_H6V*`Aeb%)G&YWF2-u^xDq zGY`|;>_QT_+hdT{l+Tcxof-4yVXgfYE}OsEoRAt_uV0nC5E|M+ z@4q$E@K1?K_dLu%Jq2NauE!j>+&leApJD&X-+L{<>OX>fOL~{yT84 z@7z-xvvkt-Ib$rb%pN9^iTiS?vr0*#6HIbeK!`VenmcoKbXV%b>x?|zUAKUD)ViZQ z^hdBE2wJ%Vh3ut}tr!%(P2{{e4{^BB*)yKL=LPZ@YpYV#iXzQ8re2C#d9pmw4Yt`w z8otb{fF{`nve|FnFRQXdGKK19Ajn&(u4YU6afJG#T0eZ0{ePPr+Hns*uMUImwCOd#lGIv&1?RMGU>;iHumQkljxo< zUa`5v!*-i`c}mp4fi zcV<5ipCz??TPdetEF@5{;3k|~yjW{Ew|F7{7Qk@m@lUEbl#?v=IiY?Q7H8#1m-b8M z1zNa86IMIWe7yJ>%*+YRli4+Y$gJyXin%}==@}f4{GCP!h}D>y-E7h<`~48xHG)tG>IBD0>v<(Ck z>DzRAVGXUqTh zy-Hnr6!ft9&L{0$4{A=RU4zS+MB9V@2=31Z-Hufd&GqfXTmtn=3Wue33h%24)4smW(xy1`+&@N==s># zbt+5Nd{=x+dgwFO9mDt0m4KMs5$>5f(<(v3HP48bjfr=e3e-3@0=BOL7D1;LE|hR#bTGcB_4v?&Uh_? z1M;^zF>EufcLuRDc`>YE6ROx3rcgLDO zihggm(4XPDoIv~H?ypd=u>}YVLQ%o{?r5Mq(si43x_V1S7S;CL00~GGeEADsVx<{+ zqlzJDAbHjk(#jA-t2KSCvdN1qJ0P z55)?^sYDnduHl}_%84Ga7bOF*noVlf32!#3AwoF1I2|8VyYuY}nsSqb0YsV>1?VwA z@7ew4cw4WN(}N4h3&S6~fCLihQzye;`65BtRfs#0{n_sr<63Q|KSltpD~k-?{C@u( z!>KR>*q@aVE^LjQ3&z)&G3shG_tR;F8Z3NG+ckP9Ger+z@(62icpLfEwJ2N__Yk?f z@QUdsgQ*eZ|B~!NOX|{Y4vuPs|2r#vgj|gD1Wt}y)X-o*z!X4sQ89g-k7r&qJo+Bs=Y@G;V#6;~g=i|x1Byg)Lx-$EX? z-}~ryhwb-3-U=Sv&)#c4F+6FSCJrJ6d>Zr{xHU^Zbp(rrR%`X@4~cwVhgPQkvdj5s z`XT1y#R3M4Qi}>P1YUN%nfN;KO4}9!i|U=o<`KBX6Z&yF|znwR{AD4o%6qp>KZ zm~_KgBR7!ds~L_9{=b8PvqCPL{vlA%+S3-*bQL`{3o*1SHp48BYtJU2aW8-nB`OII zDNJVDir_g955Ng3Kj;VBg(4fS?~ttUx?`}{!pSJuM(m6@#De#M-nKnETRo9)m%ZS0jM)Q%aO^Fw0-Y;1ODHmjBJm40vn$E9oNx;>ZYD+05s241xo z^QKbK1Zw^g(gWst^LmZ2_n-y+g9rvJ=oc;d*YisrgB8DaRt(uGQ3i&=g8#1ya~1#| zADL!=b*Cvl=uaQrPzGnk-HQI3eX6v5>N{S-=}1?x%GW4}{nGywV#8{{KZ3jrJteK0 z_n@bA{rzumtkZ!2H6LJ*iw6Axa;GaceZ+>uF?t))th*iNAg>86(LW-}$v~<$n`*yZ z(N#ey*(*7n+j$;w)tDPvI4V!rI7pp5ri zH~&caRT`Cdmmi}{q6J>rGxO!Yd)?@OuD|Tk14aB1oO}2ei@Tqv5aiEheoywdBohBG zUk>;nL{u?8SPc)M`29HsulW7{=v|N-Mv}GWcKGo5zeDt?{w%p_=+x|tJU%JRtJz*V8#ITxfnSyHPoYtvhC)5B3?OPs*7;uVMH$8ixC5Y_aHb zFN_5+dA)q-vQRDi!C8x)g)^#4o9fwe_ZI0z>|@?>#i>F9jk#ix7KmG-pyuDRsR?)GA*$igUm-)n%Wacm+-<;0&geN~v}DB-PCs`~1OxNo5SLsR4IX zzd!`6b6J_o-^6l4#vq#$GJ1|qXn6~EEjyi1qRR=%K<506GwIGUGPvzi_*FHMW2(HL zR_j3Kro}dso^j+xeQh8P)_XOP)TZhd2l=}ALUjvxC2_{DMZ$?{gz&Vkuj%}cVzhuD z-#COdO~(gD>yMBflS#T}<5O(dSoDwWc~KD?Sdqp6HuLRm^m#+)R@duHaL<3Y?|=_? zWA!WKi#zqcOdWjWWMS@&LrP0RJ&_ps<81W)AX-lj$o^|5DRs(XBGbYpT(>cS{4G8d z^R=OBT)25h2=B(_&ZK)y5XDA)c%*t2ADl@W_0U+YS2{PPhq^4Onw!$E-nz`2e)ZPE zu(&DxD&s1iWHb+NT-1e&ztY@G39hGv4l)$dSd^_%tFW3q8Vb~JKSj42>+u0;WzVqB z#0gkb;{V{e5&mGagAxLx)t}2QRr2&;6=l% z0h?8BHTGn23B@UkTV(OShbpKI07hB#RF(btCstUrh=<9mnfg`hHc5AWz(T+a`bYi8?iy zT5P$GQH7UQJt<>{3f0u`LnSBC^xG)Tmb094f`Vy? zq}$%DrZ}%%O^RAy&VB9b!Kw5hQThz6Rc{la0a{D7O78!u$}~`6TX1!81NRagq)Z*0 z;B-jD8#K^ctD9UkLfCNI9e8qGqQTj4orI5VF(laMUXPDkO9e0v0>>U|?D3^ODXJ_Ab-1Q{A4SUy? z#X=ePUR`tx>vHEtp_4>yfAjkya1~0%ltg6V1mh<4p`8|W)UFj=UW?ZBnnt-#EVS#a zlBOgVY-!WeNmN{zTcrP<^x0vooDi$+zxG3@0e&D>yZ_orm}EUVUfYLpfzZCeBf%T2 z^XCNs#X5`0Pp~g*trlsrn+eZ;o^iFIBgkaiHTYfswvQF#28-_uZa}XrJTGu*Zv3tyXep5C~g!sF>B3&r#N z9xNQwymaGa_=k&Fo?YZZH3pp%3oHKGb@_2zdhEy{(bX3A$+&lvTpRR7&Hz(mrhGaT zsLAEx65>-C?X->-McHxF+&4Xd$I4Xq2Z>~mM;NObmfvrmb+LFz5yslo6H8xM%@vC0 zhfpmPxO`dNZ2r=SE}{^`sE(Dsl-uWD`XRc<*kymoB0v?Cy9Q}F(nRf1aDt-5qEd{h zG&cAp?EDCCrW@qBQtp!Do_W#ZGr%eC6EXLxrYg8#thxI)P>+8Wiy?+>E+EN7s4Rhx zv_~P}Pl=^dB_)S*Q5@dAlWPWc%eWSu!Ks$BQpQod+4b1&a@sf06l5AzMiu0Bt}#k; zW{;5_aUU|0;NB2qn%HwP1XdvveAKv6bX(DEokPL=G8mtFue`CJDWZcbhwKSyJ^$yDBEtmw^m^~t`F+Cg}b2pg|4Vybf?}m z$^CaglKHHLu(*;56p2db3SB}i8JH*g=>enm%*amyRhp+dBikYp-I36IcOGn@ic?lyUq!x57p^|BPZvV~$fUz#x?jz44H2vU^nkSLUDHMs zTm5xx1qNw!9AQ*H>T!Q_iY#o;VDcE6rq2m&E#!)+bUD47I{_o^V;t|Mj4t4o=vZ@s z-%aTQsRU;37Wd}-p+-0|mcFlASUZ2X(VEPkY|P!$m`s~!*we;#oL)PHTg@Fky|!6RCXB*O&K7v-xd|4bn2PN882{@Mcd3aNCC%8ixHd{JUPDI$KbBE>LP_fbdeW z4CXB;g4fFyJ0U~+!G&_!+`u!VTd^`C+2gn3V-$ z_RT^lFgeupdX!lA{5OE*v|Yq&I%+J`a;@d90>?uf7i-u8j)yo7Qu{YhCvwEFJ}5_IPjD3WcK5{H>G;-t_%o%!nrkOrj3i+FiY zj*2Gh+tmwUlL%edw`E046H$&}i1mC_Bi8Ub%rp_axGCY6><>n)@BFAStm@h5e)-qF zn%xFiF%;coR_ZQ_67%Pc3K1u5)&0Cv?_QPt5#W(KkM|Q*;_o6s_7yVwABQ9h_DAt2 z4TXdY9eh=Ylqsf;d_y0M>xDkx7OhIgUQC-#4>(Yjj)B#mO5$dCqp#QG(caC|m>Xl1 z{HS zeP5(&LdeAQqh&qd?>?HT=`+NaNjbtn0tNx(CdNPWxREEUB7TxgoMQq)_8;CUsA5$t zD)noBnZu?;%*FCy{@jDYNYR9F@dp7%Mx7DPQ8tpq@x7g zR@)_-8XPN&PGN7YE^o-TM+@l_p#$N*2mz5mIhZf|6@p)&ae%Cx9AhU{*lKD*Kl0sJ zLwGGw`d9zZG^X_;AxEtP%u$-MGs%zU3&jr6V0U4E=-al9wAqiD40X^~2V&_*C5rM} zkJLHj?XgS05O&AY&NAaZCx8=n?3x|1^xA#Y9caU!xXfad<{7Gq5=zW5@QiWAepAuM zlm1=y0pUXFgIoQ)>|ObHcU$)RgcI&xv)|>Jy)INdW1WovV8AUCMQ`Q`(j4oVsNugd z72@?Ln*mPDeR3L30vU}^7Rkz{qjgU9SARguH_4&2U62jq&JwEJ9Y!P9zZ?}kO>*;v z46#Vk7&&-1`Od#$f0{S^+(zCgZEUU2M~lxw2oIT09(_Z+d_nGHXO69BALzd;AAYfJ#|J)2ko1B%xS)NzNSdD{aGCwU(4+=M|hqiO39y_4)_BfltSxE zem~E_wKjfuT%S#52LITp!j3eBWwp!8UC{SPp1mSizeV_)VSiAAO5>Z3WniUA1WK3G z1qpIfV~$zesG0CT&Q4%7x%*Oj*B_X4@o><1zaSQ7h)U$4S>myPM}BfzOg{9-K`_pgceKRNBfhf%BS7@e_MV6tS120`|%wVf%(szS9@TV1F} zjChGbZ!;gGfi{$sp`;5XRj8V0HDhfzsUtd)Z6c5xVCWXh;skRTcddDeVL#F{jKF?L zoBuFa=YL$W99(F?ldA^T8vLsrxVYIG`B}gLgFmVnZ5loUV6nc(GW7lnG*TvzjejUj zboa4L^k>aPgYRGRyYwy@8$) zH6EG4@8*!2eg9t$vf)S}4_C6|c(L&5b!fO?Tz$+8QDFDwZT~*bP_$ZrZ`M0#(adKs zumyPzm%>JjcP2UC6g0vCxEW^uOBAUgo~9xGIE61Tg)<}z3DmpyYQY7aD!^sI47Os} z&qr7r=iPSh7SLp{-gGtn#di$mH6A$1naX4c6G)Z5BE-OhLC>?uEqENw>(e!n!xRflj@i4a6L}g{82Q<_cp4p*?q_nT8M>mN5 zpzj}XeF$r|inEbCsl&EP)8nC4?sxnq`AU_j|CYg`I_7Sf3yG9GOR7`a;eoOYgmYb)+CA7f18>9S9A ze{R3<;zNQP;z}6UxND_Vsh1!=ZmrN@xR07Kam|e_gkgqaaLo;;?dIkig2!njR4Lrf znobZYiqml!MY?I7MJS@gmSp5<_QD^Vp40X@(!f(P95bFq4I!Ft8zUkH56=sTGh8yB zmMv!Xf^()jljhbrlfKX(FTEXqpI<4Kn`2+@&NHF;CEGp ztg5@u<(W^BsTfvw6D_&qddqvlTCnR`=F{sKqX|ysxnxUUN=zI5S$oNOo5Bm}o3$)# zuc+k=4=#6q)Wp}B-_y;n#wKU3v*iq%BzJ$MiP1RcjDR?2I4(IOq{|r=jeiUmz>ql& zP_Ln5C*b;UaGa%^MsR?WPIQDIWvhR(StMZjTg2m_^TutTjH0<0Rd~1P#P3WRkLQmO z5X)YdYdXs75J$}5htd8JvTq**)fQm9Gy8=}#RP28`dD$U)<={1y_#SDL{6peS|8cR z4~-~~L;ILwq}aGw5iB}?=9ELZ`J9o)7d2S&0Hprb7osqMJwU|VH_Z)Pv@G`div$!p z1RQJ0HUBGv2aVf^p;fri-C}oSkZpk9RLVs$7ymEDJ{*QZO;Hjx{WUn1AQQmk-ur@b zmtw(egd-fY?j^EjOMmC(gSPT#nSrr}uoTbj9I1K7tA!HhO4%ECAOycKo!}R%>j+*^ zNASw(27+I0Ao#WF1q7EYAlOvBnBaAb2|iNY0%Y)((vt`%C>!DFNyLrST{hxoJ&9Oj z+zyiE2i-Q}ht(MZMBJ_?DekBixM@%Ov^89ze%y)Hqz2LHZ~#{^4Muc%7$9`gQHE;3 z&t~|8)@Ek#m%)Cf@y)xIDjHgFD#O}1;3oF^J>zWNrSDTU)@ww5zYfOrPOR6MN&P+R z9f3a@+b_vf{dC+x$`JkO{_RKMqF$!k%`A^7r~tj-cY~jSnxdxorw8>5VpOny(TKA0 zG+YbARMLZDOEJ6xzlU>05UTRcS*11iU6x$)d9AsdwDdY=@SDmV*>pwfwJTG(tDBL( z9=q{#*q6DY>|qdiZl4`5V4Fj1j%&NzH{OLPNjoy;@T#H{cCtWAT65BjY~I_NdxhuH z)6+M-AF{;m9((rvI*Rm9u%8hN_thUW4Zd+jpYcd<_DCS|U((I+QG@$ED1!ONVqQznOsM*byGlphk zai+wW(Q_itIQ6@teZA_ZPLSF6n_}#Gr2KIz|9BO32v902A01{1W6XLp^^xy}>~Dw~ zuFv<5IFxg@`d1!4m~*!v>9mXr2oQ69=waRT&HkvkTto6d%qW#)zf&B~5SmWPMfPy{ zl*71{JY25ymlmhD@uuA~i{mNhI3@mPmD5Rnjgl@Am1I9uoNgocf~7#>-q{$X(vO`O6gNx01|D-naQ`UP!8h=u)1$z4j^hDJQX? z()`PmB+;{ZVNsG^=iJ`fUG6R?(NCTJ45_vaSJX#EefX%OBD}$E{)#H99GPT0Nw$Y; zse>ekH!o6>zesIixD*`wo%>k0_BSTUJDb0%B)dsMThuY!&P^dTjpw>wSG|k4%zJV*RGZjRW=8T%+@5|7iE)LAu{&NNWsmF*`(npJu{-=^^@(}L&_Z5OgQU$%YWIBm8#c)eUp77zI&2Bl+bb4C7-*Lh0x#a}EbK-H(y zDlYHh1_pY7Cd?`e?6tBMB_G8HVLgJ;2}R9l{y6!{b?Fqi#NXpVU505@muq>idMzyLwVDwx#*WJ^4*lf_>0_vR(t`?Jaagr57Er5lF*Ij=49=lroFG^@vc`m~~^7{unE5mee-L4^}-h0f|T%HWg) zOI=_$ydI6627g>W*E8gLDrn}f!tM`^G|b(bokAZC9kBT=(6;}SS#r?)|3Uh@g7p8c z^!L%#=oMSDgJw&uE7|-PrN1jk?{qAsAR$hW1BPoXj{O(H$}5VQx}?QWSdW|ERQ{_A z`9Bln7aK31|0Kf5%bw+?au`P-Ybb^wW}%HSJ3Ee>rQ_otUnu8QDp5P+FE(G!GlbQS zPTP*DymoGWL-}6(aDFO9-YDPCi}H!QQN9~(zWuNUhui3<>r(jfoWi}L?Vkbf2V zHFozfx{&`fLHa{7@-vcQNU|sJZF3hP{||^m?UMdEaVqaFp84{= zPgvzGpu9nNekyBn(AO!%Ngc(KSGN?(xjHE4vZ8XN(V}uH$#Z*9&OzFwxXHxb6vQ=v zITTl+ar{;g`A(2f3_&`bxMo|bZ+ziQR10} z#OQ{Y#K@xyCGS*XSWCIhIvD!L783tAaccALrPUI2Fb4o;pHN~QdVOC~U^A~hLE`SB z#Gg{)+mv`vi8mG!dqLt!Dp3tkO+J78ed5KG;tb@Ul%1FRN_rU2p<(#{gtW1 zS2j&d&;Gt~b}J2$zB$qyfNs!^?zF8S+&s1Qu$t2xZ9ROOo~J?|G<`CC?hk{_9#6eX zs|=sPk{^?oekQ$I9D>64ispUD11hqAM&<~;kY0Vdc0NmWpkKK3d2-jIPPFws$?G2JY9xFRR(DT&hl@GBGFT zZ*61%=s$;D*k)L#<=kJyt9nwW33Nydqq8+%`THTU%WVS+awnPJIN+~_gjV^@zsL7{ zp*_of6T~6{FpZgGI-l=%acPFXJF*Rb^~>`WAE`=JWgR!I#W*`YU*C(=rvcUw_~q0$ z+}HW)=zGrZ-#Oade~gxVaI`xrKhwYy=I%F%`Jvjoo(%ehS@g-9#KTbRck;12P*mNd z^RQx@^0D{grhSu+zKXppAA76UShY#3T(Qx7Y=_ray-EBC#eOP?bvope#A}?oNhm~L zD)}-@RG^UMGHDEpX{q28;%oRy||ji;)bUXzB&EiflIyXZ`Uw-9p<<77P1 zo{Y!A6jO1dAv}M+GlFGvKc#TKi(c^u9eGD_k-|nR>a!pe4qWVC$OKd1f%ZmX+7Q$y zc*fGV=;(sAboj=thf27^?c9RY)`Z6p?k(+CxDKpz%NFN>-K9wOowi>vdJl`cTDvFe zoV%xHhs;PtcSXOFX@d%grYA}l3zZ~prcGWIO&{?_h{Hzd0DVSW*ihlsiJ#n!ewi+j zwmfE@2d=%GHqN{IIO);w<*A<{^R>$ zTyD+A0UE6<+Bf)XfA$-Bd3XN&i{Y_AzG$4MK8Yg0pXpk3)O=}nl1E0bm{%vHao+PD zp3E`18OeJ}hl#k}AA(*@UAI6NjMgWynAP=R4Rm@5-l4h8@Uq`?z8MKKbYKiKdbpX= zv4r~`?;1Gwy3qp{@WFw&qCWrnuN?H6cbCJK{EH1~~c={@2l5Y!?Q?E=f?vpqh z8=gOy!|NK=bLc-F34oD~T8&U3O0HQm$2jXUCk}*qy}9uKqqgt9;S*j8etijL%6dDM z=I+htJ-uXsVV6^1!=jwu&*dDm_`JWtBzcfI3g*+UXBvE`1bb?5>njql8aBeHhKp@r zI7Y$p=D&TEd3ZlK+JP`$b79;ypwfpIdE6wDCK@joWE ziFb2`L`GhRk5(&!(3*`LLVV4naz)oW=i8FkIgud>VY14QMW5~&=@k=zjDBI!JkFYu zpF%Y0Q`eQ5DeO0M%RCllPP0WDE-*8u={oL~_nNLx6%7abgfV*aS}qSbLF0|Bq;#|t z-ItcZANtR|S}dD1^veHwe!p<--<#ime*EC5`Ta04|KR-Y-+55;8&a$D=W~l6bP4&i zUDdb_;1cpRUBgbVz!2{8HO153kA%1{vYwfQ5~_F34dhU`n*S#G9~PE2Ms90%)Qebn z&8Je~#bHGHE(EX)OEYHu)b4F|P&_S9)E>YRy!XMu2Rn;$Cc5-(ICrpDeJ-Ed-AX=~ ziZV`KyBC1p8^*?~EHc;EUbV(aU&4apV}HR+JU+0Lb|k~lKk`q-lWN8XX-Yhu><$}6 zVI#L0jb^w$hhp@(m{xef(sO1JU?SbxVGwP#MI<=}?8s_16vQcJ*X=LtAf3+~%o$%{ zGxw#omTE-8wZC6}Kbd6zq3okm8FM(eFad`*6E`Sd&JKQz#Fp-Gfx zTVK)kMwu1$-c@XY=GH~jHTHDPoH5zf1qa(>f6Z>)f7cB)W6YYB*-y{>w+^T;#&=1i zogROqT{ZMYjH|RnI&HbO##DngS!13q4pBInLW&5tAw11?s~aP>x&3Kb1x!- z{N?$g+e!Yn=BX}IJr}2?GBHB4fxE{#Q6#6sWUqu1jFWZwGD3C(@Y(zNXh^8f!@Eg# zB|CzDB65C9ufp}-foXw;*A9+SK*-bcM&3WHEDrW=7|i7uPe`Z78PYD4fa=}$IFTdP z3OmMW-~VUnIoxP|ujkkQ?K49BuWEj2Z@rgRHsc)P|5Eoh;8j&u!hbFa7!Wx@QK_Yh zg^u20J49*a3Qlw3UO89qRVt#?O0~6GwRK8?fL5u%&DZgGYFb5kN9{1J&M?#ZO6%|; ziY6f?5iJI&2x5ozVpu_5aNGDrs%hVbQSn3^OIc3%lN}|$vYCLV*Zqvn-%g3-k?W` zd(-E{|Fe+#PZrA0Iz}4jJL=;>sbg6IotrZud=r=-L%~rE+O`9`3elU01wzV20-tQQ zFOemNemaEAE8ms9ze%S_X?<&s*2};^@qQE-U^2I3y3gx(v;0ZU6wiyB{(?6b%XUfd z1>4)2X-Glx+a|8Fn&7)jg6qk{ffr5ne?U&v0lj2*@LLPN=ijI6G;eaS08`kHyP^A4{6} zQ5b?Zw#BMl!Qyah#d!!<6;V7%J_f8fS1~->1jreL2qJ=1FF5KwwT=C%_9k8mM1$kp z+HZ3eslASW=k%pKz?|?Q-(wLnO|)r`fK!sGrX?2L3_b&e4@c$0z!`l_Q9d%^D50ZN=Mov(!tEbJmwuwH2DD4Vg9u9C*ds+A2*&gamAli z{8^{bkhr>uh%VE|Lfx7DNz%iGr-~1h_5C%bliHwJ`INiMgXX0{nQQrrJ?LiHBs8!x z(H6Z*T1`2>UQFL9=P_|;PdJV^v`5<(WIfNK&i@hDH2GE>g|4sSpC3%d*A2!SlPbTv z@O8t%4WBj~+NAJ(bpx(zAI)J6wlobu4=x|gKQXsf7T(|LzQ*)P8yOo7M&QLpqIS6@ zss&@uE@D|Icx85#Z50~HITw&+(Oo_a7&u6KI?-lhZMLi&M4a=0KJtaAB%3nR3 zK#9`qs&W?zb_fzw|G!07aY2z9`M|CHmHcsPzh|!g+g#1&Pv&_2BG5xYSP;M{KKR zitr}NadTz%@?5+{Hmrg@y5Rjz-ZvRKVc~EVD(wp3Fyy^!o(xoyRW;qpV5r1A&grLo%1F z9AQRq3gY*l)n9LAZrH3_!A>*R%B_g#m#1062;#g8Vzk{_lp&G}^_27)N%qr^({<&h z^qRl$RRuM?PHj``~J->cZ@#`XI5{S;bBh5aMJp<<2XTvFIU&o3Wq_8)NVOgR5x+(QE{1fU7Hq?-o%Q7k4glJo_B5c(JJm9d{kWN1EglA zsn!*+9S#3sUaXo2P0up40K5K$uq4i3cWq@lAd$!}BpwuK{y9uv?)=C+X$p$fyzHvu zGIwgD~E&grh(0 z`B!kmoU2gIG||7m14_zV2^-6cirS7XMa|mQt`-zW&a1HM*D`HVlx&qE9p7COMu;ql zXeD}$X|_8P4cvrs$^2LUEBcH&8~6a(TN5B?ecWu=hx4AKe5m~yZ`tmh!jbo>Q~u>+~ntgljJrd@aC)6~db{E*EGGPKH60^Hm};uf(c-SMH8`w1OK}t zhEq$@w^WcmJYJFd)JxXjyYzLAYti(pR7AK-`jkvcAaAI2pKhI2T;$BmlUpyusM^=B z%8$pd;$IfLglH$+c~IFrV#{C!_m#Y+)KjeA~d5O}Mv` z@F27|Q92uYtuwEQ8qTy{{VCRqf)pmYqD_A?4<(6k3wi$O3vuN+t%?4pxbqhZ+i1P; zpgvf-gaIgsCqNw{HrD(PU$7>(G5;-s=Fjkt;*~L~-5{n*F|!<{Laq|iK4`&B2jiXn zh3r^0f1svoNsJFeDKc{@ycj-m;^Md{(+P_sZk4KDegN%<%F=l*Bqws>Hd!KNJL>PHF z)kJC-O7kTn+c1G_lu+RDc4=CYrlUqR*_qdI>RkfPh+3f9;M<#Y7haZYjAB$cG)h6m zMCb+DvC{8@6GUd}s->JgDd%_0iu8*Ym3vniqezaL+L#?Q1&QSm>YTXs*eJ0VG~k`X3p{cck=63Kf02S0<2V9I-yiE2&R+9WW+Qk zaL||^HjBMR=!h-weaK=v4H)+7Y?QF+pUEhsDnNKQ@o55u@G1EdK0p$9s!GUo!E6lI znO&L)Z9!3C)qY7nj65!{TJ=@h%G4&;71~LL4@iD~m-Uczm2D?SDI=FDCj5mN#>q3j z%tol%v$nD+73zY4rmQ%{D5Ty`AEZtvEjUX=_F6S}$q*c+ z9#M`fHOT~0p_*6dvBdvRCf0paz9@KJupbH668>O5;YW#|QqeZ1@WR|SK(0)mY;RVr zl%sCU5fT*SKbFTkvt3Q?>#6Lgj|ycZosJ|$t0G;qrt=B77p4LI$!81oGlTD}hDhY! z`|-@+T2%1t$D91`a7``1RkLr;uU~feY!_tpqX(j?!6dv~SB7;SSp`UoMgeibAkNI6 zMyt^i>b}cp3Q$)Y=i0xJe}eU1`uHkFtzvPo+7>(~Ed|sk1$($3LfY3mTFshsiTk+B zca|51b_mNYWgOY_f!c)?|J6-QOp=Ul%u42YOrSK_&I~sB-vSA;=7g9=xyo(PI#Ko0 zs+Szy${&S~rHI&ZyD>1oMlq=LCNsjmEK>-XEhQ4}RJ5h8VAC#jWq8&KapwjcvCV~{ zfXtf`NI`p-li_`Oe3z*PY1d|eA|gGe6p~q|2dJ8TieXeD!t7yM4U_O+Gb{wUMF1DD zN~&J~>B|z-QDM0TD^8{wHu$^DQ4BJ-oBS7gTABJRX4-U($!bW1DAG=3&sglWLfZ0{ z|66u=@SM4Nm11m(OcrhVn;;$TU*MJX1M*dPQh|tU&%#iGweHH$g0;?fGS6lQ8OZzS zh}LAFAwfEtDjIB5P^i zT#eENX>R5_2+nJ$-Gt!Ytiq696o`nz&vrw^7YN&8p^>YDzuwdiu+}6cs2OGlbGDW1 zotZ{G`I7CxLGeCyXTljWlD`Eess2baRmQKlh6Nz|XIB4LXlypYTY7Fp0Vy-dAxy-t zZl}h~o$QA^^rJ6 zSaOO8YDifz;XMU;)($=Nu7OnY(<%586>2{7h^jQjaM{N6GK;e3$J;Y=@M?l#CCG^I z-b?&MUj7CN-sZCnYIOAhpF3?~-4jf2RpGb>f-K{f6D{ z%PR&>mcU{;n%4`fB2R&cvFQDGLL*(B&6(RdZ|0{=<}1MT>4oTp^0F{|o1W!BE~wlZ z{N1U4Aw)F?GFzGB1Q5aCXIxhj)YLwG+i^zZL9U9z1rWKVsm9mU^H-^-5BHN3kz^m)nUs4 z_w~%hX9|CMJ!VEC5&j`|%vv$7(BBed{-u%u#L;@fQZcKhkrwq#cM-J4oKH zHH$ih3^-4hNyo6ewzv{yo06&N2JobVWa%{x(&7l|%zJzvz-9KV6?$DHjo726HsF~+ zTl2InE!H@}DI1YUx0d;DnN8Z@&%Nv0;GsJ(s_WPK^E|c=< zor4Ly#*)`mp)ZJj+O?@?Rqkvkol%wu{e^@L)h~A{XGqtk?H ztom;`We^0D4p>xOyi3x*;~8d>6km!r_pTWOrTs@GHx8;x z(ZQg*6*VX2K}+3a%yWS>NnN>Q12c9;BtU4Nx}$2aUWgGC3#GFGgpMzn}FBA+mcsLq;HYu<-Drf zo1*+bbzag2d`)~Fln;j6>tGyLo)uQrMY+Ui*f7p7^w)|aqd~Pbcy1Kn+;e|6XIzN{glZ{l|4e#?(zngZ zQMx~vTPin_k7*Ie@c&a~(kh^qfrySn@{6)xtm4uhm0l))C?##x4>0$an)|vQuq#>h zdl-CDD%V0Anye3k5IhHTl{t1azq1sePlPs1TECj*d`wz~C4@k)IMJ%PhsyvFk3qF1 zl&0+H({Nd74jcZBDqdCLJa&GmJubCm?zJpp>5k7xh$?RqPA;kBB^{O$8m!+!{b{ zK#{%$h8+0p_n8UG-?UeR$@u{+D%RI&1yko)|2TTN*5Jwcy^m8Kcsvv%6^h^VAsE@G z5@!)c%o2CBMrdaK7Yi_=h!DI>{3?7`CdOYOGN|?savCVRejXqo1UC3L>%pU{kfEw5 z%pT=W=NUwJ{SOL>Q2fm^{}*SK{N5hOce{MNbQX&)5`HRf7lAqBXg1hv3ZcyF>kIw4J}Ugb7VCZveuX^nDign%gJ1gQ zG2%EdMgNWSZ;wN`pJT^I8Nx^%0`fKLRhfBG8thdEV%ubM4I<^D&a;G-2WY^d2f<}D z>%UMs5mdbPykJ}tx(5Cr%b=p9r%5~7v?2#zA*5uDofXO$o^v(5tN1l=Ez8T%O54J7 z1eKa*6ZepvSYt|fgBQh2Auk#y5wTWa2NK&v=3)#TGMx-ayg4+~j-%e*8#Jo%>CCQ& z1ja&~4g#kIQGS_ zN85^ZWFG&$fDxBdPvFthKbg%ZllgIb59>oynu+6sedx@qepYvXXVIHLjxo@7-XUeY z$v0$I-pX=5zWwv`Exys8Dnv%L{?tnykA8w`Ngq<6UDS7=e=(S5| zBtWBkm#zwfLhpZP$K!7*$GIiE?gw-54&Ces-#?qDtk!ms0OYUb0Nm$Ll@T!_t}pd(Q?;KrYM z1>Aka{!YmE*KPgc>%NAA1#Bu6XZCgo)y0;5c6D~;;2z2Hj6zaXQ0JpVh{zdD5mMSYKLM@rMC_#Od{K?mv;-{1%)XwVL z`6K6Ru`!c+K(8qyYI1hfOU|wW=EZxUbEBl}a@H#gleLNna>|@ZFs=pca;$=Tv5fXf zUcECBdRFUob3mw`=CpIfNjHgn{1h@LUNi)UY{=ZWT9get5fM->sXv4F%}_G(+RPKZ zvgZXtDLq;eZ7Av7VDR0&UU$&$K$?|Jpz}ZSyx8yo1UulHdzv@!chZzjO@pNh2W!PS zk|Oo$ja3cfPsrwPGlQ6WTJtMqs|3(=b6;M%*0EGGz$eA;%WKkcy7?Hf2U{k~L;fx1 z3*}2*g(ItgWL=O9aqLO=Mi4uFD48{eqqcP8V^iJ(L(7H1J}Q6ER232y=Xx{CbjU1Y zg)2!nmD`zAcz*= zUJNy_lDxA?Nv3rZ?{JQ+ zj@t)$x%rjS{>}7TW!=3FX>t`6nVYI=)>*axX}*_j-Kx8vi|mQp?YreVjw~u7&0D3a z_vwwK?@zUU)ef_@zmg2SFeUoc=wnCoX>@XQl{A5@jo3eR8QzX$VpWxjln;Lj9Z5-g z`@yJp5yeps9%Y?}S#l@2+F8h=yBAx|^v1;IjGaDMpYW0+KbSi(8KyQXb!bJeks#Br zOu18PyYrSL+=(D&QWw7$D_X+u+2QRA)+#bOOL3#IA7X{K=Qeq(_U8-?d1I@9Ext7` zcbp^B>F7@0D3KFL9lIudh|}hCGGzMCJ5rXDcYf$Xuk5n{998E; zI8q4Y>E;kMb*kU`(3$jHnMUT*d8WCixvajtw|V@^&vWzWv^4KxE5Bq&d1w#gP^Sff zU+$kE_Xp~I$)MN##sJ1x=AQ_ZnSoCgvfsSF5}|d@bCkZC%qExjU2^uY`-xC28GXAg z?aWV>s2f+@$$)cNS>*8HSnpt&!oly}W`Z*|!0crUn|l&MK$A3$L$J8&9e7eqcA1}T z5Rsq&<)nyN&?=o3U_3MJNg1};&$IevU=*$Wdr5EhS#Wn%1Q^w#B%Q&|pZ=iSs_WNR zP&xf{v{o@|MeH#^cl}`RCe?5bS;TUec&daq z4Yvfm=HiW<-J6NK;`j8W?hnemx{~>@gqG$^#kG~2!h2eG9oXAqUrmn5)G|KQKCG2x zQLX_1EjHUGP+U>Y?5xD?W~<{7>vHgL{U^ME6^x4Tu7S;m?-A2nM?q&DbT-slaY;EN zCNY37ziT`F+vg~%lst0<7Z*VGvl0Ztw3fQ)9n7J%&XTSHtP_d4)2#C zHrrPZvWZy3kYlYJ7`45=`$`94SsNpJ{_vz1+q%z8)Mu7(KkDqZR+ORkSUI`hBzNHL zX#JyZ*}~9X`_vY0R+YuwlGa^M@75B(F76PbQjv?`*4H>fOei7vm$! ze#)_3bbhT9n)fy(`!~fxJEF3+iv{HLXmh4C=B%?rdlHc?6l2;FZQfa$e*LJ{U61c= zN~D`Vm^szAAgo~BM!j3wqmPeeLSWvtbLb-;>ZGZdv%UGPQud_K3yBDB_6K6l4r#6V zHEApXp|tLLhTbEo)2%w$>`^&GaMLMzbZ%FlK_%xgTGX!9i}^9^X#N>FXd=H(;qgy+ z9BY`~7PnTwC10Dwv(xb0Zn(%hqb=^n%aWz>j?~pRmL!_@RZMcnFHDY@*C9ha7z?$v zerxq!o`y1P!AmDuD`Uc~F+I8Q#)LPfE9RajpSR1W_SIjW-X+X z^lwUBebjm0_!05Y4m-3CbPEN{fT5o}=d)55uMap76l_UEa46fO^Jb7R;k~_0LLM>i zjByjJm9yK+pn`v~PnAZ7x9)1*`)-Va-2K<_EY{vH>W*J+pSrJg*H88~#Y2Cx`*+dD z*f}F(vO)DJ#!rBpX!=i}8q9!;;qJWA6WlS+;Gj6b(9j^*IEajn7_(X$eU}#ff!w>c zk@{gW+T@7187>|`{hOi^2iYfz*b#Hu@g{+yBz@K*S+4ZA4oZl!-ACOqKeb0xgQQ3I zHt8U6Lg~LwX>zoo#}<~Q(FrCZSn4-N-622CwXn0)K6Sk}aGa3nyYl@eyZ;_%1LL!u z3L(LLe57x`auoFE-K?}nMAPU&BLyI7pA+n;0QEJ`w-rjYA=SEMQ0k!~h@LypB*EYti zm8T@6g!ld@h5Na;&5BSUTv@8+;0bv2?Uh6|7{B{$Y*h8{QuwrAQy3uZkvq{o_*V1ns+qf1jx zn`QJc&O4lX1ZYvWioamg?H8QGCcPoQm9Zzi zW2WyH&>5%GRk_I>n3m&Hd1CKg-K}XX-oa)OZ(#@yr_VYDBRnS} z><;@No+iT1=3K$0Rd*i^N89=VLy4Z3x}D|Gl)hrENDW^#fEPx^N88W{^qBri9|{dE z*!Mac#hkAvB5gAV!MHHhBsRZIeZ@Hs(%dU^Sk|0WU8G43BKs18ey}D zJLEqcj$Ea${MTLCS6cnF@VEkZimbmupnp*BdNt8=28pVJ;)B32_k5f{XWz&!f$;G{ z#zET?m}ch=3(m7xfo98oKQ#J;%%rt~GcUFWNkqT1kjFFzltAO9)jJUNZ1%<~)V~-J zGsAyL9M*a>PPXuA;D0iYkOJJPV|nlN%#VMiU9$o)9b!)^ut!g&`|9E1eEDqVsCz_= zi@3R*VIUo{(QGDWNQ@;2by)t#Y=%(|MKp9CkdS=u&XW0zcYU+3GVlR_ zns0ADpd#XW?a*2|SB?@&jBqr(Ys3RNoTzGO>6GOygxE7PpC5Y)0L# zqi(`F>uQNAd-Fac8zYEMLf~#fHh!5V7;+i(BPRfHvE&SKNr%YDEr{Lk^IQaEYvm7- zkINQ9F(Mx${cxuY?vp&V&F;U?8(-;G-{B4r^Y5vkCYs)lX#9wZ#_OGDoc+-e!+t7p ztW<*T-@%4G8GvIjLzRz>EP}(s`U&1Z!&=dEWOwG*kFqys66vN7W`5QGf=b9SI`D38 zk3N=_kGH6NyiMg}8258XM$U#}IqwxCAG5|bXOfZlQmgJ2ID<&S&|V{~eAC`z;OOVN z^2fbq*#v9FK&lv3FX6|qQjwPXSu5UYm=1ld7*@$Y?=WpoBP*YAcG6vQ6~l3+{~mgH z4o}`$Wy#QMMo=C9o6z3WsjnwCzmC(})n_F(zb^_1_aTu??9gtAbzqY2RJFooc0wA7t1ToZAzV&RP{>4~5I6q& z3Er^NW1(l#@0~nnI1w+-nKHRZog&zY@Q0v@=p*&Lofblxe-Bvg6Wy|(PqbDh+sfkJ zu<`b(?R>a-r{3vDhcOCmC=s;-gPd#F#QJxo-y1vUvjP+%bWixh0beMA#oF$s?m&QU z<7kQiEtK|W&hG5l2++4n3vdY}=r_3OayWIKLHfBJ5Jqqm+WZ<4E!LC%UCnPJ#`Qs; znLCoDUpWeKg@9n01oM^DOB;btoqYCJSPsg&3`ANgEv(ZP&V+>XBDk#DKqL;tX?w&} z1on0)Ki9%r$k7wLF{R=MSs`P6E-y>VbiT$o-|&7!S%6>e=_W~^5=hb~B1y{{Dv+d) z7CA4gr(zQ?+~;z8EUZ92E0!w!^WM(x=TYwmumN43!SZ57Pf>Zg+cL&1*}vHLrLYEynkX^kyk77hpyr7Ah^ZV11%1bdv*@Ccu9yo*lM-}f`=gxjPMd#4! z?57K6p80gn%+sLA-kf&`WJ90ibV*Nt))s>OOY@IP5`i-YNp<&UqmOO74nQ&VS6y zNHCruB(x_zfh@p3%pPK`IF1a+)vxF8Rlg|`p?@=Imi*P7j|*K;lS_6v^k13q?T9r? zGCybEFO;8E*wW-Q6mMczUGS#Ft5JG)3CoCzQtHG*Os-z7RPP<{&YiL%7PN^M3hpLL zd6x7vh&V>I31o?sd&fv|N9s0<*U9u}CO7WaLT^Z(Sgk%MJ5Yhb_69yPipHjbX^ToR z-el;Vg!{xu)9dmI`eDm0=TGHJDeg;$PVLJ8lW?i8h=Wnmd3dM5jh`8B$z9`pw5CeG ztz8_vt1cXl#!d6Cgp10%;(ODkv8WA8)>Bax>zG!h#HN*0494Bpzp$!@D>M_|ihF}|@jnjcOGb0O! ztKjiDG4{NTFkfbuPG6M_ZMGv1$c$JEA4G_lzvg@VF0pFwAQ&6J=JQK_a>}cbV^>sj#EaVh zSV|~HSF6E;YMphz1}b&al#wMPi{#JDW3q#*5uZ!wvrFg`cPt(%A9vR%U3-(*q-v*e zm#Hq7KZtY0Tyj&=K)JO-C<4OK^g@tEV!>a}{tCblgegCP%c^VCY0*Za>6Wt8)i0j! zjUQ^J5Q{v`NM*2^N~q1;l=en&#bB(Oe`X+Jay;f;?TaXst#TS^tL@-JnF?2z8gvQr z1wvf0R`G~vN71O`et47K^l{vF*0gg=_7`qNF-l=aqMmN4RdWU~W*%u$pD_K})vv*( zeu2*;4yg4Ml+o{(OW&yY0+6cvCL;ecXEsR^4>I66$K!g(Po{xczyY)@8F_K;rJPcm zca_l_#+Pq!?BG{ltG0|^t|xQgT{3te3#9q20nM+Rz`?@x1Od)hORE}wa1?ovjxt({ zSO3UF zra~>rFlIAql>him=7S1|KeFo2VMy_YGco-0lE-f&(Y1IQvA!4#1HlI7^u3gIOpO;%dc&$`Qno=C7H?2@3< z(8GeMWJoy!e}F%zusERtCZxR_~-vk|xO4&+}^ombHhlUF0O zBk|F48`sHm1ru3*5OHgVvo7!@;#4eTShpRgHdkvJW$)lA!yVy***hGIg}9ahyIs0y zsr(tYNJe7Se~;E7MF9>BF5#Yk2X8kf-G@uKXV!PftZyj4Bsoe)UbM_>KLz9|Z)!jP z3uXv0VKXm26bEN$8iSebX*v)i zIAvDcYwTtS-n8T{5?%=5n}z;C=Cr$Umkkh0@|#k1Doc8k`}==^_>3Px4v5lh*Wab< z#yoJPhXOZMftwGwC7E9=7M+T62Lh%Ir%}G+KgU}+`bxkEek3D5AFM_(i7jB{>-rqT zxH=(}@Fo;+SD6&JSo%Ojlq{I0Nw62}kh+iBUW4q2c3;`ka{O1R8m-~?X+Hoy;Da&e z0cBI}BEuRM371({^1k7ha6Z_fJeeH*D*o59q@tHntBSu=pyFTh?0d4_GN zK+5GVYA)6Gydk&43tiX%Ym`XyT zm9R7cdyc1;7qoM1Xg$sNkI(?`qwO;93-zFXUCqG#y_&wL7oNH!o#mDH~nBt}65lF5hTH}C9+FuIisF?EO_f~2~NOMHceY`ijvZtALrevr8MYN1XN zL}fn9tdkr{J_Hf+CaRVIcV^PF`yDQLJe@4ThX&U}1P#DlkT9aUT%QOPqdEmRxviGSUPVW^m717~)^I zcCwrAueM|iijPVv6CLVG_tX}zc}Y;iO*}%W2?}Kj@_+5 z4x0Om3Em}r*bZku6*L-0^5MbkGosF>^W3|&3nC7xhq;TSYe)YL`UFh^L1)@sBp`I| z0%W<7r3go-#8sFboe|%M39!j_F38;VfOw9n80z1~BFvsUA{*v@7hlQ~sB40qz9JFc zZKu~&;9+7}gHKGP_gDM~SCcATvzOc(0YTky0BZy+{& z&S>TT9AiV#h9M<${*MU>pJt65@NkUp`cgUr8S$Wd?23aOH&zX^O$w~a#ROA(_<^uS3 zs`8b}rgsw76F3rx$r2fxoIvd9gT()+_EtVmhMptTf!3e1(o4BcxO8x$jZ><|>DrYY z@7UH8O?*$3D(6+I2x;9CEd+BwLV18>*3s@s(a5K*nibL_W&pW&jJ5KlYxS=9InmD?NW6^=Gj`&CpuPKw;&nRPMyCG@RY1vF92-9<{EW2cJi)~uf)FO zUHn&?rSqZD$WW`MS-|%$W(9Oe=R@h7yJB}rL|WzyvQ|*+B|3H}$=A$O_@9R%UbJyiu%QRc{iy%JDqLkNPKtnul;(4=GCxtr_ZiVfRwj+B; zu28urJBFa=Wi$}T+4w;6T_1m1wx1^8Xe#q@B?dU5qinl#f2H2N<~#fa-(l&90uD0K z#)5GQPjwR zNc`;xdFe38N*)_dLs2cV7Ty?l{tyjQrK%|!{)6d1@x;~NerV;(Pkj10=bg$;F&M8q z@B~7uv8}#OFqKvFIG@kGS(3olbnr91uV3}ei6=`+?t4l;;lthihD7%Zf^Uuav@8OYB~vj>=fw*#fs_plVnu61c2J2JJyO3z}R3iK#he6rF^ z&O2OU}aL}yrC=N-ZLR+U`+kb;`D9%(jB z`Ijk9<};j<#47%IT!vEc{OtVm=#!$uN1%;{w^Qrfsu%p~oZ|b@6n&zKr{Rs!@b8_} z6Egn9n(Ta{yp!08QPZ26UoDS1FP-m>?}tAOGxoerti(xK_4iBbGP&w+x38a7yO=vR zMefW5+twrdViOsnd6AiJ_RHh$cqdM7r@>r{nTcDm{x3$IA>7?G z`*;X36kV`Z;wssuO08Peq8Cknta$qAEW18mFx|`iFPw1w_DJw)5=lTBZ0(1_@nF&Z-|FC#v)Hgt%-ZmWUH#FMQiR_zoj5DvMO_l31aqhfU%<}0w&>|9nT1%4ER=I60(#YIZ zRs2pl{}Xq%kW4GygaM>A<=v%};7trk&XYy)MtdCgruwG=Nfy?V!}(@Z^?ZAEmXx8{ zvi8!zxhJkm91V8T7x zj#yUBb3}F*d>D(oI|tXe?NRsW$RMjGIv5TZ>6m!}-e;l2f))YV8fsTrLmTD;;rZUc za!JZCE(Pqz=#i&Adi_}ec|M4}NAhEM<9|((S3A5d>Yj}qIO1Ja3Sfb&U}Oz-|*td6Uah&dW*fww)loArVHEe%sJg{p=~uPRS?lS9|WoU6)Ac(i7YLYE|3bEv)99%Z#nvY|n0@a->k zE=peOOcsHsT%M;;Tso7=ljEjiR=j5fjpDlLcOn0Bv{)lHJ)Gar>?={lT+6);k`+j@ zBgjLT&euRy;E=jAL3LwO1BzAOb}&|PE@q%^z;=n$TijOEij{Xx)C^?HGrH$u!p zz|L}6a!{o*6s1HP`4KvSl9Qp=JLjT*>79=ICxwV#1c6y1<{Kqq%&P$rYc`$8Rv}^n zy$ug8CgO@55sTiEd^a|-02{2~mW<>VO>{}q7d|hDwhm2 zDVC9Ykv05#(do(gs~cg*7nW9ZQ2qASM14 z3VsYRjee#t;ZxJe^6dGr+xvrbdU$`G9zO^NTcYjEMlY&xb$fppdf{OHNoOcw1JpEA zc`ozWH<4Qc;Tst?8M+LC0p*OOOywX@_j6IEqVXMdB7!eR11UaT>Rgue9Uc^%UvU?D zK%^E1mCV3_&4||+qVwUKe#-1dZ{yA5R>P>xz z-{~Fh8>CvpVc;Gh+UK6&-c6g0BK+l`Duj25n09hcis9WP&khUk(OJCo+WvyWv_I`b z+h4n{Cp-#iXD)w3=RDu$7WLTP z*LYy&*PP9~xxxI7jhtiEe1}lx?5WM0o1NdW*UGcohS%UPDSVr|_d8MGAi+k+nI-Rzv?7Z1&GiULL zin(9G?SW}Xc^8x=$B~#d{gP~%?uBIuv^S#mtMyH{1C!o)1MP84WBMsxNw}P^$H@yd zFKM^?v)Iz%J>$Q@O96i~OeoiH*Br!a`h5>!G2icI5vL3LO&`+lN?s}GH_>CiyLc(+ z*W@iq`_M?LQPeM{-*4)8uV%d0G+OC1m23*e`x*L$JaxRuagb;F1SJ~?_#7SYua#_a z<5lY1b(57tPlb=3cp?2`?sB4-M^Ju zy9NCwd;fMW{Jyx~Zxw&5d5%l%8FgZd zAd58$ED8h^2XW6XJydz1_Po(XaiGl98ho}9IKKsPWCc!}3LWUfCR0?f{6m#t2vJ#m zSj>sH8s(P13a{e){(=!+_9$$X!oV}XcvX&3=GI|$a}8bZX*a)uM&RwF;6o{*!@xrG z*8~Q&!BO|jXk^UDY79bRtZEe;NuRucr_=gb$KfP@CP)fi0ZXlYlH(T1E7rn0MM)HH z0ZV)xVCgEJ%=xlniFq?hEy2=I?2!R}MEz8RpWDFCEsCH0;0H}}7C#D!;^*aJ{A6{O zik}LDA9ci5L#ya3XTo*z`pSz1KUaM;{7hy2&&Ruh zcCv#Pub_yopjqcAZp8aEw}OTR_NhbH&j+(UhV_%hk6=^rBL}u0!ks_H^;3n+(-VHA z&&<_33-Kej41T&v@qbtRe4(rxeiSX|X8GI^;^&j&Z@06yKSunlqS#xn_*uLC(KQjF81^;NSk>bjd zq^u5hBk!VM>l~+0nXOadR=z@PU$AwKGhp+Af}PtsZ$smg3_oMG&OF%aVKh$Hyj8au zeFh!o7{CaX&$4g_`=^!umAoc!|AHUDeWBS$U-0kZ`s0TCEzZq7z}=v8XW&lXA{QSH z_a*wxUMqb8KMLU<$Mwez_xl|8i{OShWMZv4kJGiGnY5g=gIsv13N^9)hrc#lAz{`vt-thq=m^ME=}H-Ws2j zt=;Y{Jmj5=Wl}45<2V0K(t2WJ6uH&!qm7S~4#x&??ZyqoT2XZCpP?4uIw$*@fb|Pe z0u;Y?P^hhPe*sux6)e8<4~N`Qr>)BUMPMaF-p1ht3B1goB9ax}FyejV{|5Ow_rxi@ zxTCA!wfoFBrh%D-4V+qdF(5^-R4^x8VOZV<*=?#Q*E2E-YVjclrOKtTNZ?BwCHrY89=%PpcCZ0&Nu! zvY^%ZqS>MyMk#(}(yscIov(gnrriPZVeins)DyJXc8|@sJ6YhpoOY)L@cz7acx4t| z)miQ~3)yx*n{W3jY4--&y)J0?zvRO_ymOg{YUW`^FuVIvmmV^^*>(>HZ(>H?^5}&=XM2eK8}JxyMG(rmdS_tcDv8RM%G}j@E(rN7VC#t z<;6u_&Z+g&s6Xgm4?2xJ2yU_u7hCmj%flp!(7Zmg==ojp{8_~0UY?&V&)-L3mVf?a z)~SPFZg+Z9Vs+N<#+~;dNdy+-Cyl>^I~{+t7AiE9;f~XV0lEbPbkwzoRGg``%rPIk}d4UmOEs?!sMdF)`F(H_SKivK2-A(e`O77O4gU+k}{ZezAfo} zmnGLsu0HgJH=-1LQ_(~q3QJKup*k5+k*N{02@8&BV;uTZ-VJ5fD-_9a@d`U@^V_oO zoU+xr$aIutD-yES&g0C=CRHjrEsxE~p-dfeHba9%>?hFhQi z*o(yo3z%u(w)6jL{T+DOtiL_{4LE1OO-)edVHs$<`bXr~oWs35mKg!n(|kVRZUCv zvd+TuWmZ4C-AaFt-X%()?rMH;-U;-yFZfgBfkKM}A`mUSM@DI@VGI9t8E5uMnLK$C zNu0zaS@?g(8Q69U;QyKosCW3k*bV-Zj|~1hL_!t#)BGree-_tyXePoLilB)c9-3`p zL}E6L!VWu{+MV*V`MJP8p4F$y4v~y7pI1O1Vh~AB;YT4n6S)rHfl+>{J3LbGw0L%s z-lci$el>t+oThHE>Y@f7(e#Q+r?WdeM(+VUXJqj^!r(X1^Sb z-%MMMzO(qfL!R6N9UB|N_N+C>y8uPW25bx`M;U>80}d$}rJMV;8&UUul7kt_QTdafGAU$ddozqlcU(2R zL-Nh1T(;psq|mi$214t}N@C`WoK(hw9<09u6OBSNCs1Xa*aTV6eaaiZ| zxhfh0ZJeNgT!DptvmJiNe~$B<)Wasjle1kCsASeY%^l1f{=ajC%zB>iNUcBO>7DsE zeZyRnC)7Vy&afXpXx|Z2Uf}ss)c>j7`oGeQL0x2uUfkC%L&*aw6$(EAKo9CfWr!i2 zAza9tsqPbl+=|FxL4v4$#N3#D3M=TE1(GVR4W5G}u{J84!U-zI4$dyo_GCDda9R{i zWUDb7w6Vv@*8CzN(_3-BbX4f@(`xiB7|O#%{Z8zy-zX<}_9tH?5Bd8L=C2-R>Q&K>6~OV3pQ3&F z;J-Ow$lrl~%nkryM(5)Iu=^?gQ9leFTlSF{(fxxcDos%@1S=Vd8vXn~%S?C^L5fI4 zVshW5L#a%s_@Q< zYDnr*wS=iuhdF=nCOu&0B=kbr+(_&GiO(UQNPJxoCiH>{6ViPAL8Op7X-3k$telW) z8;a8K09<7sbXQ6o5KI6qW4)-MB-ALr)UB7GA*c3xyi4$7DCx~0pof?ca&p}%0SRQs zNRoPg^Q*B?6UT}xhee&{aCJer4CqwW#4JOj)3GSAj*!BfgICRD6pRi)jd~Y`Nab5+l6||QBh}A3I9ILY7l3;ayfJ1*8Pa5S> zE|Mnq=v*F|dE|LM5+V2eGr8xix<(;K(AO9ADc%fL!J_PgB2`$EJQ2(}If9RMpqYZ1 zuO`xO56}F$nK#0n%y>}RF5xtRS!u@hs>-bTyOkcN3>8$|2r52rr{4n=$BXzM`nsaR z|1Ixi{cWP&oIWI9Z9+r4EWg|mRE!91A);K;0Xi=*17z)eBsNm3ACjEXqh3YK8S}Ud z19&!)aKjmxW*T+zFQzkH_ZR68f*I%V<9dzsgl3i&t$dnU7`>hnNWv3jQBPeObE_K? zYqIm`ka^vCmHSj*-|TFQg?Ho9O6H(YM5T@nlJ3BQ;=&}YsG&Wod_w#FiR zW)5^KqLCpZsh`L?ia|+Gj(-eWgTa$ZNV~Mch9(n5hHJ(y ztnO^kNJMO6)X_q;%%TRzMV$+h{xBXHze7bGi&mJVe;ym2SzoN0L;F&(rq6+_Ptfz<3I`Az{n!&$9*QwJc`$T9OKu%Jzw zA<0nsC%hlXaFiXg#B%IYPv@E2pM<06Qq(H2P2~(DSek~R2AtHY^Rd-}=&^K>j65^* z^Zr(D22fO9sWP@mBc#)^r-QdzSR6w zd~~P9z)el@y6=hHG9W95FeSlqcDg@=CY8}clQCz&ku!Rn=-OGL{)uKP*pC9Z!Jw|A zNEU9+1H$sPs?GL1rw`b?|G-sJnnb^!+9>?NqwFm>XZzEw6ST{CB+NZvvefTs$lSw- zQ<2vx%hLdMl?@9wO-tcsp~&oPy_P@EHDoqEF6h_!5$848dyhUn-JED%9!>yEh-5s(Y5y zf|caI*DQ91EhO0_T(I3*I9J+o)@eo|{P_ZUyAgW30Sotg(A$sX@Zk+SsXM(*EugoH zmENX9Z0nt#B=5eNAP zicS>*y(SNEZyJj4|EidKr=}QiZzBQ0)cKMcz+Gkz7h+)*hl5q~`NnOOqlJX%k$WRZ zQxM(}3$;ZlE#Pd7ItSw61L5alk&UDvAhq3}sd|a4>VC2dLx6Mfz2_Gccns=qenEo2 zD5Jg5whO#rWpPn_DEmZWET>E#SF&cJ?x#5%2s^ahhJ8T6@ha+mowfJXa`$GkCVXv1 z%v~VRI@6cf?*9=$sR{u9y^e3Rl;j#&+%zZRkL`Ynz^w*~5^!TQHxPUfG-7V!=|aNc z{mvT6GT}ZZLk+xbQ_d@?@a|}6n*;&Yo_(r94~Ku%PH!gOPQkS5uH%DMW9dEad=Lva zktLOORt@Dwcpo{se~pFErDJJO0Ok*R6&a;1&gad^=x74IB~ijn!N23R$9|G->{c6ur^ z7pF=@DLJV*0YM=PxPvVYhinn5ZSRUww5evE>))2uK-O+F7J>1|IfbY%-gT~&=rf`2 zq8u$%C9%qbq>HNlX_Sf)apc}or46!(3Sn63x%`^~qS}Av2h3N9E#b|i-&@$yr$SY# zOknpAg2_C&LiTbQJFI<)NGGxIo>=G&&P0jG%hUo1wv(ABcYYBR%D%xFD3N|c_w8il z)j207Bb#R7VYp)E!K$&dkW;ezyErxI8b~?oOL*O z$p#U@tj8LpK7!&QbMA5x9;Pp$C>gU~7MDzD!AMpM_&_7?3UcE$PgkGjKgeC>(~1YN zGf6SPSFJji2g%3*E4`2(;Nv#%fxr0+{!Fg(@%h4^?9x=b@F+4FDRU}hNw7pZB#}Hk zDPUsmDdeXpU`_!)f_ViziaaQ=uL7w%|1pdU9=y9@RXQ?nNCf?nd4`*f+jDzwxyr)lR=LR=W0 z;>U+`noE9jgq&tr=NWnW{+Rg8f8bjnd}bhg#xi{7_oR9$;xk)$NBK-+w6dACM!h)( z)+?X+BhpsDXSVUPn9m4R^u%YhEL9P!Y4{LUlhUZ!0#j8s^Syqje;BmIBlF7|fe_eacU8ZYq1qhunZlkympq-!QK8AL1@IjES`tdWUw z$EgUED96hKHc}}1JSSWy>1Y*z3;8?voFg>1s*v87IV#MhY@&QgQR>3$j-@whSO9(+9Q{lbw3=Y`rZ%c zF7G~kgxuw$$uWk8kz5L88A&Y_$T2TqJrMpf4E}P8;V&a4Y_d>}Dd(h+m17KldEs#U zMRxyyzdXXvV*aB0%Ku)DnGDM-l4G9uT<^?f7BSg}FqfPhQ~j%6najs2$G~5*^25&>5FmuBT6uF z-5;|n@xGJ(cKM}2OoF}3FF_{6|9{CZ@5q__lapWW{?8-iFg?gG91UiD_&JG{Sj1oC ztR%_3I44<{2ZX;287V9!7hWh;=5yzyD&F~|f}LF**6=*rmO)m?M;5=+{ag{+!fEbvIRJzJ^KnbP*XGap6oY$&~(wtQm8U z!zebyC4w=NCgrkhnv^+1M0KjU0oexCwm@#cz_@oYO5dDyZ>XMxoh|mLvkDA+V&9wI zN~aVdYAHui`hm(r^HyO~4Uv@3cCelY>Vt*N8tj4!!;531n%?D#ES`TUM%Zos z#aVL?4k9uK!Q?j_I{9u{KQsHH-#miZx1WMyG&QcA6^pQdOebgv=D*;KX+1Jgl(0CQ ze?0hDgfyJRM+GD72_I%Xyz`4fe0(hH;UnY2i0li0jRz>xmPJYT^?+v3Ejy|RCHLg9 z#+(-{i2csMdsq{w=R)AXq&Pq zc@(L^=r4NUQ)Zof{pW>v`B>Ho8oMLpQ}X5%?4gENiR<>l+r=O3V_zqMi1OjyeD78-56CICMOMA08O|@S|`%$8defcz)y`c05<|SjTfIKMoyFFZ8zLXN>0oG2dXt z7YfYM+XQdOs6%LNgnx8~Ub@rSyEstlIR4C!!g2h8Yq7tZ1bm)NErtD7-K`v@6YeB* zNK=S#qME`5a!AcrQ=p`=QIzjPQ9c%!Q2EmkiYvJg9r-AKJ~y)V!$b5}SMyNy&ICaidpw#_>?$Ig=lS@O+l*L*cm}F~10& zU!qqyJUkH<6AR!uog2Nvb2JYXo<962gl7*+;ZS(~8y~hJcr=sOVe!=;22+HueS3O_ zN9FaGc&PAf;zuDoEnHvQh(RVGAyv3~xAYCj8=(kXKO>ip#Faq2cJ)X7bJQ2V&jnXAWSuj zufvUZanIx32EahNxaaYH7X&IYkwX<0_lbXGE=`LrUTJRn(%HyT_J#ffusP;7=zm5S5fm8ajkPho&mY|FFkD zlV_@b{|N0)ktfcK;gDF9?+K&4|oBw8xz0+B5!oS4extVQ;(t0AJ zR?wdDH%&@=#^H3k|2qUa{DmhD#7AVH6o9DPq<#dHC8O?2i&fJFeJ3kh@-bCXc+CHN z(fOt5`#r_qFYfXC%L!x4pBIY0KUN$Kr7W81U!npI?f-VTbuZtqhKO?C&%Wf)Z$FT} z4ZqP?qje}Ro2_~q*6n`@;E^W_?{{J8^4HL4L4Wz@bMN*O^6b#|#!7qfY-zWu zWo|Sj5*Jq%Ui?&`&OZ5qxhNCi&>v=AGZ&8(KABK>@dsU-0Y3_oI(XzC_GawY+`}iS z(tAR=?Owomi4VPAW%PDItW<kcGo+rA)BPm|(%EQ5P?u*^vIfENL!gHLw zDew%CH?nSETmAR8$p<~cbCoi$g8BJ_0C-q* zOF!rlo-cQYC;g%D)c&CxJhQpc9Uk?|`ntR+@LVi!M~vIN!YE&~ZjoG}3XB00g$gI5*|TnXLtMC+t11EhYoPtn@IMI^DC(AOLPHJp4JZ_Q#^_M z*9&*5%q6zh!1X47pFmXj)#Bo>X7~8j#bCbZt9yW{psyeG_|^B=IE%jeX>nhF7JhOF zgzMz1th69sp|()^JLh?6N_``-&CCt^VQv^c zXkz4y{HJ!CLGrH16MgxSGuv$S-~D~h;4Bt*JhuRx_jNQqfTPV@h;0EVfpALP-hr*c zqjVoS1fK0YQ+S@2m$GK0t^PW>-^28r(|vlr+#5VO;rP+#axlsCeBS>#H+qAoPF|Mz znI|vh;rVB6BoK}Z(6yb-wP=2h?G2t(1T)h`FXv#%&(AsB>=7P5I9Warc#fBs^6>QI zlH%vE!j7VBKf(&7F0)DTAtjCTk7-Dml$L1DvO==H=9$z`VN#T8CT<@l)#0BEC4ch0 zZ2i0RviAMI$5o&xeWS&YihO-;+m@uA}(8ntOhNJiod3=iid& z@9d*PZ{lFkWccG_%6$+o41fG@A<%Bzr^8>tr$t}+#b5oZ$FKgCDJ=SGf%3;(Uq9~g zt8Lx;`gP$~v(GpbI*HFPlSqaucz*pEazfYi+&Z;-ckUDZbu^Se&uhLjd3%h!J(K|% z{Xp*i#d3cGZIhh@#|pe65R;eqzgpk@&hamFzcX<|_dDO&EbY5m;hV7h*~b%-KYKK3 zIA(u3s`*a+(T`(sdW^$iiT^o%8oBf_4h<##@%d}ciY0#E>@}IPv|hsr3BowMNfim| zo2J)QTbJMQ;zyc4ofL~0cO;MTI<#4u$N0i7Yp~swh&0XJg}+6%-u;}>+OM@@ zNGRGcg!ro_bh7KJ-(DNc8?l+BiE#F1-=F*Z+B`K9zv^rv#m!VZyvGg^)5S%Hq-VK= zd><`SY;PJ?*Bw^6PVg>@Ad3q0R_zYClpJB?zoT&boEek{OuCB7VuZyGIu|}{)iiUP zdobS)>0FtwRdb)*jkJg!d}!q+Wx6B{H5xm}G}oS%99diDpQ|^)Ukife+CKio+%>F* z>^zapR{bJK-Y?-n9)r*j&t<)!FZ>pd5-tM%XgjiJ_ISH;Pj(DJ&&y=ZWcd{RH1+YP zW&07ix~a@RGk2YBckZwJ{?ey@NB$mYgfidR8sFrAUGQdu&P+AI-`_7Mu@0fC5?@Pb zn#ru<-a7=G5*y#{)|c}ueIS(H6vAi7(GVz#gJ<*gkkoX~le|$93$<*1&Dlt_Vfg9D z27+uiCPG`OZ@Z5~6NK$fI-LqzWb8S~nSOWFy}Zns-bi74tLA_BmUJd~RxPI3d&0Zo zcrdmF8pbF4ItCF1(}@s`v?RlCg!i;*S{}M9ajP36dno0tH4WP0jdG7O#!Y;a@RrTz ziki_OLWrA^p*B*=g~m<2+e!KKxUO!rXB~7=^MtADn&f3kLlF@maWY5}5 zV%XU7l3J?l5{&6QL+g)r{(tPfdtg-MwKkrC5ThU)6cLppSZV7NPD_MS8L>4RW?;td zQCdZ*iqeZzY^~HJKvigDa@*a`XL>5F=TzE!?Pm|aQ*HTL(Re`<&=Axj5Jf->h&{?S zRsmZDEb@Dv^}hQulSu$Y>p35PKxW_G`+C<}&$}+O)V$a$OsC%?!h|jVU;-M9N)wFL}R^+~n3r(*$9J$k8XRnu8zXh`%dl$Y%!IW=QQ$7-* zZqn_s-Nxh%E@SOCwk3X#{ED0{^k2>8!V5qpPT~%%r`lDJ%^i7cC+=`$wb*hAp^KD* z*X-VinS*!Z>a~f)kE)Tw@lH7Ck}g6Hy3YJNuzc@C+HTC8nz!otzei5!OHmC6uxd%? zkJNqR{s{-hO@?{#^cGVH0t*)|vc~-_3Hy@8Mak%@BvuonGuZo*k=?0m@!2|*n~|Y= zwuDYo0z!-uHM0Y>Flj+6%$g8+Xnr-Cd8cJ}T$mkN;^llwMv=XWHs$+_`WMi2Fd=Lv z%!59)3EWAA4iWSuG7Yc^lb|E%lRXV~%cDa%pXhUr1n7D83Yeh=FX_`o+2T`^_C&ralZc?T7r|_bdvRf8FYX05M*EUltmX3ecqf&eg0SY>^<9uxZ7uqi z%2rpSv5Gz!iAT)PQ`z&t5-y4;@}$!%hu+OXIuIPzsY36O-*WwqSro94xiA^I8l3`e zqpUQHy3;Yig6ZXFwCsZio;**a0`6>x#EDRk6@5)dvKRK3DUkaxtZJ_~9ywN2F3VTZ zRCK$#VgQU)g3N`f$l4U3iEp5tvd=p6?*m03S(QD%1)G(<){1OLfcAKHcJJhP@#!|| z#-sC(V&$N`sc;z?#d%ig;}MJI&dyWWPi50b{je>9Tvl_2C1d;MoT~JU%MVm;bEe;c zm5uGwy`QpHBbF$y=Qp~)mTN0pEzZ;C|jLEm}*+#bO|pKnB!ms zl}-MI2vUvUA}kPg_DOpRg90}j_0=d9HJH3X%hF zg!;(50V{x=hygk}cD5H@k}*K#5kyXjEjfCoekk*vj16>s2 zJx-RfFPdrs=g(faFC?>=_R|+z&ef&PWuq(v9CU7{NMc1cD^VYDG<%zwzr*+7CEQLS z@n>BlempuHOXJ~k{Fi#n1AC)uqEFdX&vu^7bFAzIFhf~Uk^;x7yBZ%baHRdb72Rsu zf0tlhXXB<(Pi;*?`JISM37EDUcajf!@llwn(D>ahFnmemVA|(3z)7sKDfK8`6XSmd zXJUA;%8QM9>SI#ce))m$YyDU?-u3O8$DZqzg}8(bPFd~SRV8M2?0I%sGIOApQA0WN zF|Kl`uX2)NERl2*SkZROalxal-(_M3xij-zPQjS}p34YRyK5b8ZwsSCuT=frx z+8Ybh$lT1vW-r}uA#mCr#PRrsOz(3nau342jP<6M^GweTe?k`QkHays<4t?7-NAUs zaG!5|x%AjgrrocZQ@xl6OxXqRA%dG8iPr6 zDxvccwZEzP51(ZO{cy*~SXZNQod2qdl%JEtGJePMR9Wuz!F#h7?Dyt{L*ephU-&YH z%6D=JRk7B4?#NB7Q24d*L;7}Mp5wF5@yd(aZ*_D+WOm=fBfmd?(`_IQ5^S%Hh#w>h zZ=lb-1$~B=5{wU|6cBa?*xXf{=2iRXX(8=86F-meHzO zO51#r%HCOxKT04&bgAsTUTI_&9WUVxjLg@fB4{@mnUQ5IhC0?Nk=gjMz4#Jb*S=sZ zs=Ww50`2K<)SjeYHWWOiK+(nz>Yk@VnX-{-H46HZRM@Qw1#y!qR6{3Lcu|i2^v=kz z{?xAZrzMA~KP~a~C-kx7EDVUJKY?on`qOQJ{v;zu@hJGXzdZqCh|pA#v3H>ObLzs{I08_vlF(6H1mU$sH7i(K(7V`fuB}vd>=3=w00t}pmxof`0R0h! z0jVEje+&o|TF0sc^|0{Dnt~!8D#tyDpY~4VQh`oRpU7t15+;jSx{UhcZ${W}$|Lx1 zoTrIncaShZ9dAO{fkv*HWje)=VoBYGn8uy6g)edXtdpPvKluwNuPJ|$fL8qi1 z@hZfQdj`Kwb-WID$kVOZUh3y>=IZB?ftLHeukWyW=qRk#hx zPIwh^LCgNu{VLSf1pX@2*Y9H$-l)gDyLFiG)}gMV%Q|f3I^0oc9pcl_I;;SobI9v( zFbMOI*5UPt?uB)z8~1+J;aHU5t;4hM`=eZkvKKm+orUcX;q+=ogLNOyZg}u@cnG`U zTZ6oHI1R$dVXi|jdzrr*Dk=6uSck!WsH*6)4i9xd>;&N+@;Y2|sO#_=7+&Q_@rS)1 zjzS6EIvkGQdL07x1@@%4VeVocsg4hjHADfK$5`2!+aSlb z2#~n|K+txh{x#@0Kv9MRbZJCrbp>MfL7Rc@v?RL#nd8DhW=l6fW=jDevuW<7RJ^tP zfX&hPU1gtMfHZ+)S~w*^NPURWyL8k8Vwi*K2xtaE2gwTf=4-Hk<3oz*$D{GN_~sHV z1cTWC-@K6cCZvF=RCO>pZ?EWOw=TR*%9LrwFQgW zqZfIGhN5@Q*=B6CQTrnL?v~;Ujq74DAk5c#I^^xhiqDI9;bE@ng*Pd{caOn`zRe~E z+OyeonNUa9hxqV%eR>e@Nv1O-c4}3B573165a-~^BF0OC_YTo`ZxzDHDG*ebXN?zP zt1y864jFf?v`iSN*u z@4qGeK)+Ap&@sJ4A3DA!hmP}j=t#uIsQc5fqN2y3(elu7sZqBEmpa%s@Q0RDA^ohv`Fv@$t40tBo}Js+eXbM%HQ3n5rF}O zXY-PSvaukA;8GV@CFm-q)}h8fNcje_D*e2*={o-bnkFhm@-ve(FjO}5vKwz-Ti#&+! znwgCPj}F%G+GOHP_cMVPUh?p@K%Wd@YbOy(>w>TOcm{fRacQ7OYP*-WU}yn_rcrR) zeu0~jBk7Abvf(fB1o@Y)`zNsc*9|>k1-+K^`Ps6u_q5@eSEeM?D~GzN5QqBV9{kH zdcvYFVTFGbPkgX%a0`)r<2T?LYIU5*dPAuEVeT6q7U-jbhrc?m4-Nox*9YLB z{Pm%$JM8swBKqs$PzPNfc=yoO2NqoyIP{R#hiAu=rk&_#;8`y=JPKMF4X7F_Viy~p zyAaVQ=ez45?S;O3fq4!JeD~sCxoOpqkpQAl_Cr$dYw*YneZRJw@2^DjyzdE)AwdLf zIfo8bcAQ;Kj>1NLZLjg$@}f3%P8l322~M)`B>31P7ZbyTJoh@(pE!K@Wq5HGzL!FsqCHZk);)< z%;lG#-|i$=cMtYdX9VTXVEMC9{W61kK9UOjAcf&69;J~U4WF!Qv{yW5~_XQB`!mwcYa)H$wPGI3jRKZ;`_i`uE1b~R6 zlM4`)0uenA893oFaGnI z9`w8-wiigH_=Jb?#aB_brzds67hysQd=ZILA-v_Gih&jB|HZ?ephUJ_=n!FlAzM=D=2{!f@(6(~v_N!Db_3;v+n8T-A=b&_ppok%PZeK1vR&(tX zpvUV&^w{%X$=p^rTNcGLT%56#~wy)^pX4^*j-IDO>uw?OGV6fy}k~C zf7=3erd$4Yxrf{?+}Q(vORwsIPCgiaOTlQeTRItrhdt5Bq4T#JFk!iLGF_(dBjRs4 z^g_Gi5dRvjjuyJ;UDHGKa@c(6pCI*vf3=DAB;;2SH?h+z{pa2dV6d6?V^@r1(M3KGLUk`%0T2d zSQ)sBw)*?1@I&!)T5=eEP85&3_&I$|2tCKoiOx;f5~X5gC17P2Y~!hcZy^9zr;X@8 z1lb~}KOppD)Je^+sA?A!WOH1d4$neh0?ua;>zsa0yAIjUDL9omnKo8A-cG)8txRub z3Kp0gX1@9?M;P*x;(Oxfbn8m4K6E|*9Gr%H1^FErVGh5Ofec)oL{3eMI-#sd_33vY zr=E$2pksbl@W}g$fZyE)16Gk!y`zVazY|p}qwXOrHP7D(M-N=R@OR>~LUO9|cfz^D zzMOLhIi^?ZT%SJN4RZ74QGlt+(Qqz`^&Jhb!-ZP+9zDY!N)}-qQ&tI0D}Si-xNHje zL*0lPyJuM7{#sqACvDiT{U>*+3-#n#$U6R$|HOrok#f#@ zI|?6eyE25q;r1|YjrnFF?I=k+tpd;m?}bA#CJ4PQL=L!&DLvw z0(8GcJDP3lc+Irqi`2g0IhwtLF=T&BkvkBoJkBHER>%1lmm=`jjfKwh^E@N9t6AQ8 z{vQaU*HT?krX@6n5g%r?c;)22z)bgr5LLj8;V-hC1v9;X1JL74`+`NcGhK%=b1Z;9 zxE%xLnE}EJ&vSp7XU=-g+K%lk*yHbsd=d2cn1l5=$8e+Y+P)QKvd2fzasxf?-D8i% zF`(v3Olz1gyZ;L}1Yh)VuzZ|N!tLhaV8rj>_~rQ%&L;l#ec)g7H2(D>z>W~KmS5x_ zp~mJxYnnfxoSys?@8E|4WH$#wb=6X1;A{;EF2(_Hx8?TK-f!~5pj>gSM7f@8bgx3=yWVXez~1HEub?4n7Zd)S!+t*{tO*u-;&=MuLn!**=P|2D zzpVlxB(oPuaJK$*tq!}ME}w^X;HiW?8o&r}`nm8$xWn@~9Z&-|Yl(xglb)pgP=^3{ zQtdUY_P2lf@T)x@bp+ME@gS<*i>dgqdpqqTsAC<3k`KEdDTp`0@cphC!&jMe>n`59 zVeg0El0WWYOCVUw`uQZQeNP5p50qLGNHSZ2WlN9gA+b}uWy`>Y-cu}FahgV40QDTp z77+!tw9L3M<4!@OF8YW@+O_}lOjHr-{{yJ?PS8)_NxjmjdjfKg;QLA<-Aef!&d6o^ za)QAK5gY?GA?Mp7h^e7(AMD}ViJSAj9iRIxT~xcPcQtmDoO-{kq-ZaumD9twmtY9g zx2=eJqowc$`Mykfj~g{~{-+1|YIb=|tBW8+-UyD!A1*7m*`Mm6>Zkmw5fdPWp}r?P z)Ri;4>+S>CqH$`ZyxJ(oO>eM8vU4wg4&&|nuCFxeA4W&qUFwvn!28#3%z1zALO04L zgiByrYPS_ck#qOcy!(l6%e`}*_kJ*_^}pdapXKm`%crTi`@i#ReTa7>xU1lTpy^uQ zq8#g%lNE6sNFUxf2s4=qCRq5%6^LgMiv*3Qn_J|{-sb{1jge@A43s{i1XZA!gYZ3QH zj+2viyBDZvX9qGsu82ok>|J(SbW5}yJ_-|8CTjm;BvwMZPds8HP*A%KA7IG@<4hic z^)g{6-d=VkiiY)me=D*Y4JpUfm$GAFDochSBTIOFOf)iVN;{aQ(f$7@Kq2AA!rO^DHUI$|dcOJk%@MqHI@ zW5`A2#*o{qQ8_|%A#&2xCb+Yt?7t^tX$%pS1%yq43w6@oWkq+Hc6)qeqB$O08AsR( z%Sp7OJ#Bz%VEmqFFr)2eW>0UU?gAbRFJ~8lu6+R)Ohp9T2z@F|+iTO&oe8`6r_Nv$ z(t==YH8-Ie(>V^Mo0*-FSmKen$C!4@WT!ZS5vZ(!ZjRQc+tb*pu#n zj*xAQbJso*g>CLXsF{oWO#n!k>(8BDKZZlg1>Z8~r}w z@b5J;Md)?X>78=Qz=@5TQ`pWj9|K56R;FSbjhb?KYq1ogPFJjKaW8nxdc>0H9G-L* z3`s@t{$`{8a*QCfA@A5g<;(b_jDhU=mUcNp)MT7d?*~ROtvCpubeea9!w5>u5QWk_ zyMO)2^F3lD@h_n%I*^zZ+cu{^%| zJkA*(8)wv!Vl@tPnM2irE`s8rzQiZ z6+(U#tDErv@gHBX>@~@(30bwRVj#i@#Clg92VES|09O_xzGl|M`e~~;*?6D?Q5Abv zA#zBYL@3nbh2SaBuu4Kf6tUgyw2;+T(NAp)#s+JG^n*~2NIbEZx@o3@XuY$T?2iQK z^re?y?QlhGayR>Z1em-6;aT<=br<376y9;p5of@e*s5{TNa=31NOya!=xVnfFFEs@ z>8mI#g7!_-%Z2S3H8+D3_}l7t$>g2Iqft3nB#$e&NO8Uqm&K$kZ-nAUsz@5QKF)a! z`9*r`k8z*$9%HXe_D(E`2~%5@Sb{2wkYS*997^UsRknWIRR`ejm5gqH0R}zuz%1M; zvQW#>8cB+*%W^kEe$)89Gyn|pw&cT}r8F0@zX+#ARLa@`Nu)lcwe)LAIs*P;4@)Qt zT=_h@WJ%76UYc9ucM~K01RwINS@IR=2H$Bq=xpOSrn29Y*+B3HqwbHgq|%Kkr+3on zFAjwg<|e=sky#o`z->l1)H*?oefl$Ahxv8X7$=$?kyaG_y4Qn&2%e?3EMPj=M8Aby zlwO-NbRvi$tT?l3IM}cbm9;OxbD%yE*IMDl$+`fzRuZ^YE8=8r#UhmPgfPLyWigzg z+S75IfheREgPmar8d_zbcvxTw4*WZ=CQ6J&YrSFGqWNu()@ zw7aXQg=X3iMw8(?-!ba{NFE7pu7l83V}W4aMHID!p5cC*yUg5sm+ryh8OEs1r%BZ2 zXF7i#TKJs^nI(Q1N&0(cZ$==#=}Xj>ij|}~nnqNYbxd=}g$Nm?Wk>0Ma>qzRESTDY zg@wo&<;5w)6j}H=Aq$C`h`}F|bS^_isk8OQQnni7ivVhubr(R*@bhHDOYI^ZK&_U7 zw&&uhSj-sIqQnkE{Q`^W#89ZL7!MA|PbJ)S>_{MSwG~;Jj7_gL7M_H+R?DWhHy;<`jSL(Wuu@9LH}69rK5r$srW>qo5Y>l83f6BfC1B>oy@~a63Vp* zafj^Zohd_Lb}j;kEvIs+2=ttOgBb7Bejc(8YMt6*Iw#`ODO?p!!yeRVFZvEHOhk{d zoG&9?u{qmbB&yh#Q5-hssqIz-oNnsUl>Ho9b{1Z?oKun`MJaG>3EpOJw(P}R-%j;e zXqy#XAAR0lL`?@1gV1jF^0D|$h7x_v%1bY z6hrBnI$+UoJdsJoewZlxbHaYZoRuh|$^jQ_=o)y|fOPFElC7^HR!{LyCOBh%94~9B zf%$VSgLNS!z~fkQP0jdSl!$H_Svkyz z%dm-sq++XXG?INJ09Yo`2<glCObWDmmjp|jM36ZU(ET8mIKDSH(va}qUXc2Eh! z+C?^xpZ|2l@oK$i2aQYip1RcZbf@%flWa8GnObck{A+Zd+2QJbwVD*~j!!sKBk|Y? zM$Id5oT022Wv=BoqRPw}mareUdS8QZWmA#!WY7rYe?U(IdK+K$v{5$?5lWDC*` z)(*gB+ICafL@~o@kFS+c&fG+^cIVRKl#__k!^#8$w z@pmgCm=0^KDaCWXXpO&@q&Vka@Fkz1RlM#z1?wP{`3qL?>-e_4rT<>jS_h)vyQ9#|4WqCpNo-did+ED!EnU6dPV83)wUZR}+nNT;gF zmfP;rAW7lhq|Yg!UCWU^3w=JP>GNyY3kB84qs&~g)B&G_?IPw=K#eaTa9pr4Yubbw zc@Wy12No2!-%XP|Nt>tToWMAckqp42(1Im&!AJ>O2LAh(%I&2AibcI?|@hONcH9Tai~tmIFD{Y7b1?J5yOu zVsvLRI}btM_ZgWXbpCKAfjTdgkQB8e5wSUbny#ZQ!4gcUj7;Bp|05S9D^aVZL2y&WppmJ-NoOUa6 zqQy}zIbjWuoZc}OcA{4xr?ZUc^^kKvm&)t|Io-fb$RnpInw$`68F|Ex3^_Hya$3zB z>1i!EAmm)`8K9@6&+i68VsO$=!+R3}C7}n}iE2e&D-`3C(T(o2r#3{}6`tLNn1VC) zBTP(JdvZ4zDYRSAlgBcJuEMl} z5pRU(sn;2W=xH%t`atybo5lZ7da{NKJ&iM>^FdGND|)IJ@gdWb0XZh1rzGUaLj0)} z`ot07Pf7{+u=vxFpr?&EV>?`W3hez4nVzNq1^UqFsZt`{g!t35aI?>$r?29T5Iy}X zq|2`SsRl27AbPsu-~XZX^zY~u_)~yplRw=IBKuJJ)9KhL6+KCwb|!rXqpJB2pg4d! zo6AU7ocDhLyPCr9*WyXn z_n*PJX4z`FpI81eJdyia#D-{QWxoOeCEW+dB$hGZ?s4F{g4nO+8Fj1;ClqZ;NWuxl zU!jC0arl>Z5`8RWKB}!m6tq;f>Ubo}gOCI$ZX@1EIRh=HL{daAh7g4`%LtMNXmo{S z-`SarBJ@Iw`zGF;*@y<{QvubEIcUebXoqOemc7veG#LSCwhHZ7rP}eHk-1QgFD^hk zCZQdzM(r=T_Olo2c06O$osBo79XOpqs_N%X>Cz5}Ydaxuy0rTb>2vR^J>Si5&*c2} zd?mL%*L2^WSx2Bff5%EpI-&7Nk=KUDXB*xKjnAD!x*eZ)@Mf9;gMrFV0W`S*3E#e` zvr-b3hY1Pb6W&MC%P#_ql%$u$By65yIWcC>-K6v`aPrm zIxO#;_Hv`TTwJ1bdzB#V)(cIEurHQ0INyXC@Xb4f|Ho(qt*=kXix^Ql1`a26@EdR)z&e|DocUu8U^*DUOZ5OM)xVno{4xj7OE7#WFhQ3AgoOnMu&QOw8U6sC zSE2yB6s$NkY~$VsnZ(|R%vw-Hp*HUgToUPzSd0_U?Qv&0JBZ^ejI#D5zOq)1P<)wd z5^-cnN&~#lioR@b#!%U7fpZp*pZc`1a4~dd4JSXtv^wwXK99As2Q?PHOq3?NHjGtGNRAgntvNB^R78n2?RO6IAkIbxb6ny34Gxe(PX& z4*@8R)oT+rg)gH0dk?Ad^Qr=X-1C^LcA$ zsM0%+B;A}*h;B|76(*O_PQr^vy6-pA&L(%;81MC+@OF6H7()M*Be!34p%;qe8vxq) z^r8if?&;-^4gYw0si4t7L2CZo$Dnm@{S_d6mI?q}eWB|keMpIW1=`&8ZtHYR`=&}4_00Ny*76Vv5dU;;&ANAzjp#C7(O?&S&6Ak<1S6ja7J=&+4^$c zTY+O$_jB0A@?M)p^d|Sq;|Sf9wJJb^>4b5l>^_T@gq#=MGx1%r3{k??GsES26KM$D zjzS;)5rY-}@OK!H@bv})O!>7Xi3XLmsV1~Z6I$H=y%S%GNXLz&-0&Z$`M=^iyOx+@3)Vl(INj;=tSnGK6-7T~vcP=ax`5pjl5$dd zyBA`;iAQ#JIOV&{-Qf=hdLO=>|6z+e20%!mn*X(6)5mmedJSvVO@t+s7J!k;j|sdD zXEc%uD0eORTEZqn$;a7C0lBRugf$uvmU;mY7GnDc{#v7%=X*3wJXN0WXJL=Sur2Cm&b3Dt~G zKTV@X8plvRg``3~K=%^1F->CCI6*9Cc6=T%9l$4;;!cMPMhnei(lOUq_zZO>rJT@h z`x;!7!=!OIT2A4%Y&~WWCXJI|(&&LusarwHIfx$wC@(XF{tlQ`c?os{WK)FwIPfRW zhzodL$BwvtUWSOCQBSW1u~@uY1Y8lq-8oQG0Tm^)-_v#q#LU8-gF6!d`9}N38_wk+av|7+C6c502+v_vU@j?)j)j z*Y5oui>FKXj>YUjFNc0kKfq^<`Xu6!x@Ydd4z29havt`DZ=O329^Zk!o%8%=K5x%^ zPJ?I`4uj~4h_31mMh(ID9+hYkS4@=W+4I$p z#>*}jq0-}WzPk|FVBB9q#0u)mdA?-}o_`6PE%ZDr_(Mr<+;Q$L0OG~pLWs?ZNN6xVrk&&BnAv76#v!yt4m?yiFrcL|1|VC%;7f!8{s0@B%ZesMWy zfKfM?Q&Xt3`=6KMM7zvRhU)ho<>dNhyD3?$ht#ea=Zhkp zXdgtg6kdn;SXp(})l)vBWT6T;tv~_o?z7gMC|xgT#Y`0>x= z<9RS$UM;}$+j2Nka+BHx+#%Fd5IH9I@vGn0k57HK(BpRR@ldEtwD6U$0o%NxnE~q% zWAmTOn{-J@H@PQsq{MS~l|Ov-tzfP0MD)a`XVMh{T`(`8=GH*%E?l-ZMF^v_+&ybxukQD#z?`3UE_OPM_>aX-Wt zjtCI|>J`hi4q(Jz!S-C}eil2ccV9~&^8Sxs4(^A`c?2<}r#kg2(eZyFIeFz7%sXu% zp>^fwl9|^_O$n!TUD1xZ70~A|H?LT|Qr!lpEW+&@aQmvOSHsr1NZkjE;r+|_`ZV*a zt5-Iv`w$#>|9srP9Cw4|)R>H|nfq;w?O+@SC$p0W(4afhHUPf2hCr@+2Q2sm?P>4| zMHTq_v<-(6OMUFZo%Huf#aiZWPud>5tvqv+p^h#s0#$e^A717=(5~;ET0Yy}45J z2b}ZS8<4Qqdw=e8q2|n_fB8PsUTZQE0(>6eH9;5il>ImJ5+;$K?bM4ig!7APJa-;r zI_{KnW2xzUWfUNNv*V>y^lxUyg)i=NM%^#)j=j!&v>bmE_UlMA?s=E@zWCa?HdbgyUrVjI~b89taEX2%I{LGxoSuQz(&&HXAt97L5AyO=av1;tP&mO>RH^rXJ%u=<|RSS z+KZDgn1<7{9zJ+djkdqo(ne&rO%^tJDXuSw^ySvRurCw(_1>WDHnQst7&hI zM`3Y38++RH_KsKVP4@JAqPt@6!QK5V)46FBGFtz!_HEPo{V0?YH{!0nDcTy_h_T=x zUq0KIfM{PoWXAiB?eL<0upIZ3_8xm`vlZEDj{G5K#^t6KjK4Yev>o(9xMB;y;k-I2Qn*rGk}d{U(*iHCHMu+Z%*0hak{1R zG|-6|d%WVR_!&E4QfxZKx1y9AFG3RdFWIdVom&R%w<4P+#BLe5zv_7l-Vqh4q*Io1 z5ZB|q$_2@?_k#Equ#lc}A8KBU%oL{mc1$orWbG;f2YfVJ-HWkdk$&k{MY)aN&s~Z4 zBso0%O{p2elEuA6UgUdnP~={vu1Sww*Q271|EJfZZ=rB>J$}UN@m+5{rtEjT_#^qd zqPG*yEtP%o>Y;j5Oh@1GHpH~^joESgKpe(h*d$sK&TqKwb-bd?b?o`=YHO^()_C(M zW8zbAr;TrdB~P?99@`^(qU?u`w;$dk97XMi=152UdMoUB z1N+5&xx3(BWEXr6p#r!I$__YjlnH?BVQzx6+E@aNVVvR`#7S5vTL|_(>~if^_6FJf z%*^9@_q!gu-}U!|cfT`)FPpI^xc{xy`(JG1jZ?7wSuo-svfoC?#$6L)m8a~l+9=!K z1;O_BgS_o;)0}18{^Is42ndtE|7|?7``?c~!2b7@55E8HO_A+tNd#g@^48ZIuu?2| z<|=2+MT~}IIX8@Rt{w|t%W7OHo-2uX)6tHE^ZlXrzHcU-;!mE%jo(hRm$h_kXUcec zV?4SS$A$K?W_%WV(saIz1!r?nK^=?Zr*_0p`3X<(M-Nih{vG z#F!Qe#pL$paVS5!vEx;g!R2h%-ofuy8?`^i8cJo&@`PiKO54xk%Xut_^|ySX8m}7l zf5I#ASS@QZ>K;Zx53;m4@I8CcY}~Y$UyJ{v$T4(fF}i*?3t$)>{Bf4CS(vB5^9k<3 zy;Eb%8IQqEgL|aC0=`$R+lyhb+wUj%&pHW3ugGja28qM&h&!j+z2f#}^-4N>$w{y@ zzQ0#yM=FhR_`8R3{= zc<#%#pdhg8NHRO&K=Ox8M4>5TxDGb>9K)TH|GwDqtEY5l&XKuJJM_6^xubekS9d{0eu| zu`P23VBL)`A2&{&&88wNVWbU9YWLep9)3nWC7Ye*I zmvg;9<0Y}fEt@lJ+Rxa_XW)mU$O#A(;$zA4W%K0EBANO=2vPCn8Q3vWPGxZ^I)ROI zCk~?W$p2rto)Hp5Q~yt#bM0RCK1KUrizgz!iK2Ydh(FO#B2-`Aa9#SvKO=a;B^=;R)N`OwGYXDyBVX^h%1Ep z!T&JwRc%5C?N$%>Y4*k!drxm7&Q{qT3=7@R(Qy+S<3tR~Pw*c$M$=vo?b5{NIMI&( zs65s&_c27zK-uUtYe%P9pL-!%x8wV@dkDTN{Sxx}QGRup{L0t#KUVxowdyFpI?AuG zb9{XHl}|h$J-<>_ALUmc7Qa&Cd&K$G>IDboSMz-R>W10iwB&VAwX}ZKfUCpTukNLQ zlBZvZ^qQkzDe=YEv9w}kFS-*SQ@t7jTFg<1tk{r1tzyURjTBDd7}cwk*o0E2d~K>nWs05q$dswic24r-qkoh>rNqM~ z^g66haVdYi^r=UcJ|zTri2Brn1^LsDara2+Q`a53KINUSWVt?-R#mo^s}vg4PoY8i z`V$Rz!ur#>{&k=~RfP1X68tu^<DO;OE!u@^>3JxP9KZ!dh5E;Q~J;4*i4?PJw<1rpEva;bA(T?H` zgN}iA^kYvux>FM`6a{W7N*{qr1hwdU2Um+2@Ux&=#16^;jKv$k5TF)uS5Ruv4E(Ye zvATz3o1|7meMliE_FCN*(TaS1#Z*z~s1U`=_T=kB*wLsJ4eqKBtwO|Wl#On(S`^Ki z+{M&~X3guCzohI9=G0sWFNs4%fOe!r9HWg@j74L1d5B%onLJJ)Jw$(7iudh(8kZ9& z4~SYb3(<(4M(T1n4p~j@dRYPh@S1sA8*2rByA$7e;9WerqX2qGXfBogvY>YwtP&7! z5tkNlvv?F5d6v_2>plhM4Tmw859aMaO# z9?yaM;(BQV?lWp(bHRD%glj$6NB-E{fJF)N_mFpz3sXj!G~rngYA)#o08oY=@i^_Z z0{ry>xL3mm#&NTI-h!2UE0h#cCjFZUq`Xk|zITe7!? z3IPH($U?yhdSCpzcz|(#U!Z~Q__xBe|7d3ZYnXt6#`CSM+Xo!GqT@-02gWrXxY5G{ zC)sz^wxBIyQ>pR5VZZ}V(|BM!vLmx?7+}iD&d|Fm|CETmThW>|hdspUGVT|w4$qDF z3W9=wR}?6C0YJgjDDy!qIKU8tYSIh@(TEF$2BxzM_9H3>xtP72HboRS@v1~|2 znh<~wb{>cGMaGX_QTb(s16uv}C+$^&16rj44hS?EIN&A^2i&B3K=%U+VW%HPT6?=S zx)(7-;cEdfFcn)<_3Jz!@KQ9`2LjteKp?i7IEY7ZKsJ~-VBc7&QL_%6@~}bTfPH83 z?r(6He9M5O)OTEIJ`6}R5aOHN;((0ixP+s?7+MQZSaM93*Ev|A^h{xar%8cbaloGS zDnEa>&(D&o99%0r@Du)Zz|XG0Jr56j18ws0z>^_wYdlbI+ClJJ!TuWYHn6~Eezcqm z2+%J#ULOzC+z-ae9AhoET8?6U{R4v&&HuW^2f2InI}sKFq0Iw#&H*W&!>uEiANC2O zg~LK=XSQsD!z(PFa0S!C>uS7u!8!_kwp#+V{CZ!-oIj+HuAGhySBYf{{yp6HE7JtC> z6az(2`y3q6Um8fAxC%HTVi0?$D}4|vT}F<>crqA+3C0Q-k^66N?!UduO(Kek*yg!7 zeblu|br=@*IgY5}_@f!>L$GPvG30v)irXW;=;>>Unfm$~8LH;3hpVuG#d5Lbuupy5 zkfX3YL?#+K6^pIoup5(~6d5EQeNCN^1uS(D1w(3Vzr=>Y!!Qg|Dw`@7b}DCg;H4fD zeF5+IOqA9`qOvJPEl}JP6Rk$M!bEd)Hgi_-2A7S zb1rP!)Mr3S93gPRhe^Uph<2n&oyTeULY;dR((AN9j1$ZdPb2Z4OKLh-bG5KQoTKG| z&;u=RD78HQ4D5#iM+>w(ax`jrZ`s_1vx3IKdcsRyzN=JF}6CulzPr@4=SPw818 zTh#0ue2Nvh)2Z^!xlU9*$a%TvUq|&lIUN0f`kwF9^4~U$byRr;QQDl~u;gQ|Q3NIJv>29Sj@)F=?qzyk8G zz6B&2;8{T490pC-h^R+O2<#x2%@)ECToh_wSA8$YcLj)X5b)72&v@*76ck{LB~-n10hyf;t->7|>z5YgRJN_U~N2+z(=w$1*;nuM& zc*a(!UytJ#o(;fNvZI~36KY#R_Lwaie=V70*N9yt!D>m{bw+F09O|xMrbkNkO?Dw^WX1|5$+CLjLcXA;q z+swFDKUc%}a=(?GcK|>S>@nq(JDHsZ8?YxlfL57pcJ|kLXDjg7mnx??#Xk(pGIuJo z%EW^6 z*=9<4r>gP}-7a$|?J`6Bd4;mi^zm2*UW0w6kH^w~x&{8z9Y%e(cP8@XDn&q`X7G=*oCB;dTL1i!pyUeRuY*cK>9Eh-oh(}s+MTG7 z^&)xq8V(dTv_Ij#hr;IXPC#K#@N71*h*xTp&3MD891u36_ata=jck|bCfJ(T)-<$M zXs+FAt$_WN$tLx^ZeiDQA9fXF6WKE~?265vyP@E%fMEF>Oaep9Q8Vog8mHB2EA+@< zbHpgYgR})W>%P!1S=muCHvVP~Mutt?1gyi2d?YvWk-%CnxfNLJhPg|9tW|2v#admP zDC_U9fDTLlzXJA~1@YByf#1$OviR!VB)%McHQyjcG1}nBQcPH)I|F>R*27m%$YHmL zyIWh$Q4c#DSYdYi1eSF-@airN$E360>4WnX8A5d`*=Ww1s?s@mjMfJ(OSqEhZD1AW zaoU{2NUr4}Z(|(asP=aq{&`q+Rrw~rmWdAxT=}?^Z8)41(~ZGx32|r zZR^Th|8iK&^|PImz4HaiLfYQ}{Po@zw3D&3J^mUx-)xOXw)qS;!}HBO6|G?gtDG8q z&WatKz2;$OL%%%snn@#(w8vf>@m9cHXA5^#&JG-Cq-F+zB8{**{ZvPuoddo0(>cS6 zxs?~?@K^2ju-%HiQZYT`_V9DzuX%0{k91+L?^P|yJMGLtb;InnfWJdNo~!&FJUq8M ze}@}AzUuiqycpuEdHxOuv(I6?By9)ZlYP$T4hzqH(Wvj%KIcW@pK{u#U|M0C$RXzg zx^gfH!yQVI!iO}*8{oOZC(T)xoTTh@R^)Chy}7aU28%o|#3H%l_@FK~mf_r3wkr`n zl|2uR4a#yyn51X9Ga?7m_0Da;BJwfauYo&$518(((rz6Ze%ljw{1G0SI2{XPy21*> zn68F#qdVjFGB!Xl$8X}7Fh^6R8CQ7jzFS-f_8d_B@TmStk*`IIgj&k$R{!+vc0d05r)ug^{qv~)Nw>hG`sYsf)Nb@o z-{>RX&*G!gKUEWs>YpE#{^{@IABp~XcAEMpf*~gDC#NQ(yOWW92ocYS`tW_fBxOum zaWR3VB;0i~b&#);&S1+iEGBy0%F8U=;prR;00!sJeJ$q`>DWs~&6i+WmM(h<5K_u` zgm!N#<`@k6F31)mmpPIf-9l+C@=PjwfeMPc1lK7^}Xb%dK;2cSN{t_L!NX6-3M5E}scx)dmfbq_RbzbbEZOBymU^(t3?R|D4KX%cc z&avXZ{wQAXGKM3B(K9M;$MXnZqyl#go@@_lwg&_6QQ?c$&V8CGZqzrxj6RRNrcKWL zb_r(0gyFkQ8zGidJfn`+OlQy?vCYQ9y8(eX^Y2S%=Ob~-{PuYETfGs26-Ki2Tksc# zgRdgKMN`Xb^PA-}7TRbEV^CKc4Z8hzuOnbE%?T9@ob0d>s8WTEH z)D#Rcl8`5zi)TB7es2PXu74B7Nbg?34<~&e^UaP--^o!iv$q@zW&U)m3yjxZ+`3bb zUn9p4*VUb$#y%07iV^q^e17KC7BzNvNYQuT7A>4_!(V$H0wl*ysp`NWEI~-WW(ygx zEG$m!O|kvh0rw}fbN8kY2{zLQgJ(G@hRSV9BcrYrOE(!c&&UW@HI=Ql%GP*+m{O6a ztl0D=M$Nf=iX0rwu3JYtVy8+%NHKs^c(^4RbZ!u-fW9pR(+b6rs-krl<4E;Waiolz z3fw_!3&fIo2eG8wld)xR9bpK8L#udDbM8fqLqDEW6XHo3HIJ~dW7rjh-t@YXjO?|d zyW9@w>E8Y)!(?y5z#!kqu8IMsQx+?$Iu@Zr0eiO=H{t;@jqIv88GwEn0$o-0$0Lb2 zrS=ai_KZOLF$q);{AP73f=G_5lOxm3-pJLqq0yKV%*Rl}8bAF`BlAa07w$A5yjaQ^ z&-GmUOBww64XJDe7|})8A*=2*>Uewr^%kRzh-@h*#;noIc3hK@4kC1zJY)|Kw7v=E zgzQ~g+~4CX)xI>dBWGHXzkCg%Z?YJBxhf4s&2M6fvH6(#d!#`eF9gc*#>~eo5Rh8$&`!ec>VE{3YZY!Q@do|9z#Bp6?)PGKfNBZTSEej;Comiqm z>Fz+Uy?&gq1yUjFQ*p$q)wOZ|7m<#j+_+;^xpDsi46Dn-4#XQ%qw{v_8@*iyM?^=! zSGW!_TlLe}PMHvQw`#}X@)sOKmnNLc5${QOjPRFKbSv11&tJ%QfZLGAfF&@M9Cr!D zVWL|-CX*W%57D1e&hN==aPllspnT4fw5yf`+(omX4q-CGIpM-&l74_Z#>d;!>7N&Q zaiKi^(v`hPaJ;p15$I3&39^~DASEZ6NdoIc_=!2|0IekB_Is#oev{%Zaq2s__(T<)#DRl1Y$1 zvde+{E6!p+6JjjG@nXPOz*R7Y9j_&wFM+lE2wnA9%iBhc&swfhtYvz0_DZ9-JsoUi zI*OkTwlW=Tc{_(~jEme!;5U@X&{lVB`K zGM245jO8sOBY~eBupLBPPditESxm?7vOz{xF_taf?vji=l@!Ke@~OvI7^f!8SnRhT zuk=sa!?;t_rtvhFwRrMvE?-G>;VTn+<}1U6T)XfUz4Pi&g@`r^*0P$-9aGf^*5dEI ze#F9E?gs8rK7Gh&dHm%q@|Q7+ztGLa=Pz#we;K3s3nS#T_VW14RxhLvlcNZKK@68o z39WJHFx4FX|J?**==_1J-CQR*F@Wq zUHYQ4lFr;2u;yv4UG3aX!4lunxFOI%O(W5Y$hg#N>{^;a>3}zuieieG1Suy`1f%pe zhB#<7N2bOmqH9z3k)JCjEtsAv-lwBN-WQ}7Fvt0EA_qpi2@ zRgn#%2-OFtO!ixaDTUeNI9vo)y33Qegqashh)35UzCiC%dr=%$&LWNw@Sq^nBCxt% z$uW~>s5nw|rEP0{qqOxE1_Av8yD&Cxw`E>In9{Ki!~rzHq-~3OA)W0v7N$Z7D#$3M z^gc#*6xa$y7?Pt6VM-%#LH>h^r?a9eiw3b>jx+>O7uaU>j{SfU+*1CbsfK`#Fvhu> zQA(|2O0~No(&oW}g+qxZ!YI`bR9c6RIcR8Ui88=tx5Y+iY{n_E`@;lP4`kV<36V-o{6lntmYE&x#slri z+SQfcwrp9aFi5=?pLWKS+)X&x^}%$^Elo`$b!8pj#Sy|xcvgihU4uBy;xbXIfi3=Gw#K+Gl0MX z>a%4i80$b2S!X}48?o& z;L)e4u=r2KBdfVW?58I?BYsu+r+DnuIWV0@k4{0EitwO27bl$gMP;i;svrp}kcysx zYgB@1d`9=#&m)Eb$aH)P`6+5A zi$0YT&vqOL0bwl2I;=wRmk@3UF)P@eib2$cM^_yW6-`Wx6^=Mw8tm!Aqlvewh_Py% zypT*|%9%N@#kjvkg}Ak%JKR}N$-F_bw_#XttkqF*l5=8gK$U?A%(|9p&=UyiVjOUF zRGe%)aN%?&bytA~G+?+-V-Gv6N_Nnm9jOdN}r{Rt@{%%gb zk-1XF{lv60bc6*!t9Gc+mAsS6UNQo@CsjWo5u@&GzO0Oyl1?wnIZab;Dz*}-j{sa* zWAt__zN2rYjYnR9BSLR0ve}AmcgNxLl<4Cv{gSAxZZBJ6FP_aNs_0Hh=S0gHf(tH$ z6c&w~Z~6<2tmK=4O#mVdBXjS43NAh^NH~R;mt#5jrt$re-JR|Ko+Q8 zU)btSjgLFcH11f5aM~|m2HiO*u~E+elUuph;)WmM}1Am6hsheqL-jb&0872Y|OO{<{C zV~-IFdSo$dVQ$*!F7V0+CFpUxF}Za@wjTnQ;E3#3eCSL@pK4iX%H9R(2Lm>aHQ2Qr zH_wQkzrji1kwwYMw4bzFf$ukCoJE9z^b!HG@5ecAq1ZuTgVul<8p#)%2yWhnFvr`D znPA83%gxyCxsSy?`ADjSmp7Z?_G7ao^;|&i^(wiSasxjHOK8UpqhP||Lx-|Hr~WsU z&y{ZT|F(SY>vta~`CK*XsC;f8mCujL=h&K$%ID@)=G8PF6Zz$+d`>azsC*6u|EPR^ zR6eKJ{IQeIeYxtRmd~FVUPwM4Ld{I&*MjM&7oS%U5Tw|OJ3kl-mADxL30(`?jpW!` zic5v1Yxuellzt~(5-456+0b98#3@9*mxrkD)ZWrW)Yl54-iVg~Erk*F_i_>SRUV?w zI21wlEmL{7g|Ko2n|<6AtUUe!uyU&X3icPoytFG~ZrL3gF^}7f=*zB$AoEx71t4>F z%&4Qyr8wF`Z-pxu)i`LmT&eNsCM$boZ$QqAr{FRdGFNzlj@L}Q{856i0bEY3_dY7R z|5Bs?bCu?EFah%o9$=1#fuak*g8)mls2Mm?1l!tMGiM- zSt@j)Q#%che4rd{%Z14~DrjX-FgX`U7nuBsL>X|R9GIL%1u!`vh~b3EftDr!m=?gv zt3KPApxp(0;uI|2Yl3~(;ue&`5m2zWv1lbw@ybusyij?14j68)bcX)Ca&sIJd><1C zT=IH#1;Iyk1A+tBWiS)KAI+%HSraXv*-E#uA3^qsqpYCOB5ashu15Kho@mWlbNEh@RV~p;!7Acy8y%`^P%tu z;`SQ~3Lgts|MNyjw(?&T<4q3=-&A!MLS}I89UX8+VjUEQ!~1JE9DffD4o9evjWf-T zrxHNK(?rC-3owv?_)Pr8=#T^fh<^g7AZq@Ov+wfJ@D$MS6wvU00vdh_&~SJBw6ERxM)^qM%+3VhH>z# z104KCdDb%yUdDI2;@|>+`vHPa1`vJ>kXx=uqc+hM34fE5Ul<7o?r0$=qlbeF4BnrJ zC2Q5^0Ui!+JOHz>(Sl!x@oC_@G?5Nq@MMGlwS|Zx*8@uO@jc7lhN?U)e4t?AeZ8tM z-tP|wM>Sy#{27cvIy<7oN4+PhQJ%s3K)#dC2?Bl_3jF5nuHg4je$yTJed|HN?@!}% z>Ce@`e>MKy2eWc8{QE@JRPG98ExGtN2lLMY?UoZ)7u-7q_o2E8co{r>3jZ*79x?A} zyddWN8h5HOa>y;1H{bFwZ-DA7^r-+>_VH~JNZC$6+d#I(l9r1 zYz=c`JplwKO?8WN>yyG<*&Xz>X`x=GEcfqk&uoW7|zE?i3Mn^#>05pMj zb6o1*#5(k7H@3g!(b zcp|nC6Ic_R;O#}@@IztVI!+8t2OuBJiuYFT?>oUvLkT=3gWn)8(TqeYK8|TBp7hdG zj2+|!gyF$>5D}(dP7=R=(;Obo?&@@&?Er`kAo~U->Ism|xlLs+)Ihe%-UlH2Gw)!y zx&yM0$3x)Q7y_25aBOtE92XkKrre2&DPhE;8xccV!PrkRa4F)JMrcw^0J}h5ihg%6 zz6(Hmd$$1C2(WF(e+mHmt+{PD2v?&k6{7-H=`JV)U|#}zO>Fb?_`-C|_m1D5lq(>Y z7xjc+)3mXmZHeXl2TeL~A~3FiTr5Xm5Tkutj6fC4uAPD3I_U*0OL9&M60qkM z0~2e+STnjYiEN_q0@|fxy&ziA2wIr5zSJifS(9vish2UNKQ_!`@q9Kbc!0Jg6hKE% z06n%GU7LpcIK-&NADltg-jORa--+AG%0#9g7TStHLNfE$m6-|qY}854Q2XA|xCoh< zaAx(1OmtJ4lC!<&Jlt~@ad_nXA*YwUm7U2j&W$fPOT_!JR<_?V+}5HqPe+d95<9M( zW+${d(MBgomJu>Kk&yRc5gL)hcwqEU^Vmv9+69Vd53~rayWE}831?0jop208 zMkh#;q2fYuz|ZD@pIr`doI@H2*BsU^HYiQF*+sb4HYk!Q<3i-tg$)Xe@`dYChMt*1 zOB5Kbs5BY&Q<;~C!Gd8Y{`@gXW&ogzs!XFLbrA(le8TQ zOwzCN>`J;w_2W7MP(Z^ONlNBKBNl z*X?(!SfOw~2386y6b`Isg~H+-A*ODvP&gRc@_}nHCyrZBb|@^`$b2Wy4rM5$szb9w zSx@=P6TZa`g$-ABD6{d4g7>xft2Z!hhjJPP@30w4+(`~GqS^qX$bM#~aYL3(%e;yi ztZc`w!VW5nlwB}n`4U6-wbDGL_2mJ_zSZ$mLHm?x_~uaTQ%;9OeyX-liR{h1gb7vV zDTv4S(wr3{lAnsbLs2X|Wqk9LrRhKC7a8jdG;x4X2d>a3f_RE&e`wQK85duMRa-D zvrn0ghrWFZM?>sWHYpLE*B~jrbEx(yLWL?tyKkSOiVf^jc%3hw!#;)G>droe&wTro z8MyH6Q>t+xvbwfU;kC%>e9M#7HU529*gmBR&)t=I_9^^YgF0h`rnG%Zdtjf!SGu)N zna78RZlA)bz%E8v{p>)G02B4>a@a`2vrn0Ui*D>wI7PmF3g_Sh*{A#s`~maM*1_DO z9DgL&fY_&qOd+{RV4gA>j{wZ1?f(L5cNSlFmL>70vsC3dV{9VlUZOzIF><||A))_{>j7tXnEi7<;PauFJ#2Rb$L|YmvGHT z<^7}b{(%F^9Q~-gPZa*Bynj^Q5A4ya!77f*`yVTLUvc!K^8TU7`@VekkCgXU?te$i z`-Saa6u4i&{^eT?`M#9u#qD%hvYg)$>o0)wi&Ko?_h~0R8=4~(Wt@jhp`aHsg&C?% zVW1ts0tU`c)9`}bVYhX>OdnG1zlp;3E2A4@Z#@be2#7oKS!>@?TEfJ3(RIL> zyvCgMd7hqVOg{~$(QWoy9i8?joiE&(?!);{5zbF%N6}jp$h|QHQNqOA1J`N5;R3Ds z-lO-G$rLj^lz z97ANk4TppI#xcG-DdR-5t&SWs`8H;Y**D7(h&A6hCW%L49K-z^Emg)bIdFa%XQ7O6 zKF2YD^En8I2Ip&AnJ}EsqI!b!fypAud;vhes;o1m@zd_@W+ojFyP3AiGhsI~OgmUg zZ1`dJN?2d~TjeGi&OEAoM+<@WVm8wiw1@FWyDX7Bs~L`7gC6HYwwmD>boPaR3=#F% zQ$5c8+|!Z<>3jy5$G!!78nLCh5&INvX|9v~>h2l%4&eQ# z#2)HU?P&zP*XA@^&Df?7Xivj&5fdk6PouU*ZBN4qPJKA`G#tQ`Bla}>Y1C+Y8eSB@ z?K#3m&5^OE8Ph#-AE&9nLG5YSM*4dmu02f}@Rq+{e$@6foM$7W?P(Zc69)zBd$6aumPK}l*K2zkwIB}9o+c?x)%G+~coDLv;kC%@e9Ob=wLQ&m z0vsInG+h3U>~Eeu&G9+*G#oBvPs2AWy0xbvO?8XQ_h3)MDN|b(G5Ul$Kk)2i;1|jn zG3vEF4ad?wh&>H^{Qm7}rp+*88;#7%UDL-Od+(&|S|SgS}l6 z`Hl8LHn>_$LJ%@85jr6Z`n;}H1E=kqsyfn#CRVsMi-CYQnAE0b< zW}|8DDFo(E-Th9;sg!xRl>RW)w^`r7V8?%BsACoLg*G`1@d7!$8O10$oyIsE-~xjB z;w5+sbFh>zGu#W!aK0n=x|-p@B0;CLXYdy?2%6!T(RNtk#Ne#k0-0U;yefknyS2Fl zg9e+N)hg%;Ep&1Wb0lvfK7^3ou|27x!C20hu`*Iv8CjBX+W6h{qLJoUyVZgdzr-Iw z^!x&yPFX?R7M?I2K0$WG@w zkkI{TF!s9;;nm<|NyJL5#bk1%LSp^oV?moS84ROtGkV)KA`Gb$5)ey)Sf5n3I@hvH zv1Rr76VJ}n{37bjnB*7)&{=*yN~Af`PKmivLZZ~^Um)H~Coy`Ejzh;n$lzGd^e>|k z;X`cSkyonU7~k~$d{FBXxzfFyp?P*YMr|ccFFo5Gwi7!HiO4(uc0>iF?T%`#$ohW3 zmY#Lsa@02$iw(3{)JE?$c}H2r{i zdN|ftOF}@U3{N5|6;$rdE%d%bXw5dZW?&X(+gYU*l-g2hRf>0g;3tIG zDjM0{B;#~!+G?e}`aQ1SddFQKjy`}$p(X*7fK~%h1hk6UDr-CqV37xf-|O}M%*@Uv z8=kbS?S((c?#%4WXFd<_&-?N9YMTe85~!=Q-!fyeN~(TmU3br;xUt9Pm}q*zqjGG= ziAFy0G=AEMPdGOO-+*)zusJUJa<@dGOM~&}NFE=z=4a5Q1h?jXeDG5BeY!`1ttpT% z#GL)heC9`Xick26#37_@^^&@uhhI~JU-_9syn`z7_j0)l1J~5!GGL?xMe(#h04sA0 z{2Ja^OZ}u<-q7_hElw*WJ#zcTDyenCe*K8_B29P)uO z|EQ7rR#W7F(3Nczc${aA*o$8N(J(w9;l@jps8jGb{%#=2QR8JZaE)T1<8XAm^dt6w zmwv=i#z$@QN66!o_(NjSt{Ydcno{D6h${2jFYq zx!fL4Ebr)6&Z@%I05uTLkR`{(#bGC%Qr^)}r~y8nir-m(viu_sMYuL#gX$?YLgD-) z4!@SVUiv?Wk267)2+ZJJdf?-HgctW#B5?4yB?6WB`AOsBd`24R6^!KDGd?~}d#Hay z_&A&+TJ7KS{Z*A(kbg9n$7tJZHeUYGOl3bPd>l^q?80#Vk(Y84m_5A0 zDkJ(DcFk-lQjpX-4;2ucGEUAdUhP1a!1Sg$ZIO6bgC~0VNIP?ORwy4y`l0S9-&xhe zWrsD+Y%>Il996(bKXXRg!_n6P({U~?EZ_Y#qGq5MH6 zQjnkIVdC7+rrCnwql_I-@A5N}O5yKVC1RP})>)3*S6&fPQ`dMi4p=1HkK5cC?q z>Oe4Tu<$C;UE$;;FExpVk`$Q15$fAP)g09Y7`0L)G!}lbYW^qjUL5B3J63QTa)nQ`urnqus;*pyCw? z`+!IF@|1p6s9u-x3Kr-xrOPvXNC&Sw^^8&!uzCalPL&rZTg~6|XaQY{t!@FHO>@y+ zKO3Lyr>yAqj+bHT*iFg+vJdLc%`mc5PIh!t^oU^t_fmJvixSR)xe}Z3tRF4@_(Ke{ z*oSSGh80>xJWOTzL|^ZCA>q_BiV`w=WLc_u-tnKFjL5|X6~ADQNGSqLp3y330gYMJ zq`ISBjtMFg&Y{V34on_7!9f~_nuNLdEdm^>Vo!J0uxi1UT(<~vrg zLNQckP+;9aHKY$6GuCdy)L4m*Mpbs)eihaY>2#6h4miC==&G$sSA}sCvTb&m*R9Xf zR$unC)dM)uh?|+G@srY4Uxv1NpbX_1coK=~iN`6WUe0}-=$#+&{7$5&R(4IXVc)H8 zgWeDDIGY8J^WULm#nZ4k?!$+m1bLU}t%0nJWhFrSBo6KOw1Z(&tNBI zhwJtIXx4yA+%bX6`AG=l897`|6Z1U{PYUMybW}vJrDdDMJ0uEjH@jv&06C{K%YHeo z!$+#Q^?W%mo?^xhE}9?IA17c{Mz(wP$5zEE8GhfM@oSK8fH~76rt(YFAREzb!kB;> z@pE80XzB4(JQ=hh|M=tSe(YYY0v!eo!c`E z#wbDqDU^XZGd`FnCvDG6BitwIDe~=^X(f&<4k>Z=MZ0ItP_ny5zrdWCo&)=oapvH9 zk3l_YZ}rVIX99nR-&ucVdq#FL%N^G*D0#k4^am*e4u@zwdxjc7 zPkScD-}GkBJbQxnOsL-ZMDRXO(w_0_o)NbYK@_%Ug4$>9(_wpt-+S0IUaaOyWzQH0 zGbkaPy(MhV`1R1Td6so?*MuE&ZeYh?yxEr_bEen$4VPZ8@f!dIR2Q~qD9j-q8N1n$ zvu8qfiuA*u%bszk&js68>Lu(oP>9OWHdW@VuceNYu%8Z!D8!+v14Lay1)j2m{0|NW zp`Vq#M$Hn+$c-~gR9*Dm90hhr75BZYqA2lr5X6C^1U+epz0)TJpA1s)Qb7=>{nA`t zO7QUJ`q8D(kG_Q+T8|y6x-;QaB7mcs?=??KDU!~N1qo-iAHaz_^AW&NyQE(&T?`;( z3e2Tj3m7hjJFXl!&01;|PU=qOT*ZYByTyhwEu|)QhMlH@JJH>S@OG&c*E) z5f@M$)u7)vG*>tMO0IK!qVzzQ^sN>4j>nk}ZtxnIEBmU~LRV(D<7pG|2XD^jIKtDe zl*DWa-=@3K@@B|rc|VPo&utIKZkTVt_>ICR?TgdPe9AM9#+@HChyi;SbjtPM2M3KZ?g3(D zhhZNh3Vgy<;NOx|TfK;`|EPKhy%zl)SAc^f@ zw8@AaSc4}QX;YeTGe&DVUa;de4~}JXV1avF@x@Ep>{&nQ$*24joa+(&{ML@wSZU#m zoNAAF&@M%Je?0R)RVA?v)!Ur-N@vzjbbBgzl*{#B!&`*p!&WI<*^P}hZN$2?rC&fe z-EjXIv@~-r*iui={#X0Yk+#wJBADkm`)gSN|Nt3aM!J|~1 zY;@+V1Uda?@X{`0b1e7sAg6!XEM5Y}*~6wb?J(KtL4&$nOMMu>G{GWFo?`e10N*&L zUdxzxRKlGte6vL2tR2bAzv|JR=FTLOF7KO}Ls0gng3WonDGOF~a?LIWvzryW zVVRa0E4RmU!N-nh3dh&1nA4ywJ%SSn`x!X($Pv46nC?s-7rUhDbi{rb?I@YofK%)h z$-|gDZXQm8zi1m5gtEhxoPk4`zO7N=9>^Q??5Nhby4*b z4BMK7{YbP$!V3tIqD58hTINmoDUek88U3^R93M#@@i+@!n+lmn3r}~(#LiYUW;i6h zH%NP6%sd`kCoNjiPOhaf9x&6>SA8cJ>x@waQ zuRlqvtYwC&vly$Uk}T05$=9Cit?YOlQuhOwWIeg=12*dH5xghk{T^fTqAL6}UiSNa zmbUICz3Elpp+BE}Svsaw-CtPeecJd-q$!nNJ_CmjGq&!F=p6DeXX#W_>nO)J+@RH+ zkHgs~_+Z~Z=S@e;y$-XW6*NmXU>1A{w}I?PI3?rQK096yBI-rwfP}ilrai017o&~77!`y*=h`8jDDBwg zTrn!{+%y{Uu3bc-J0D{7`xK*yduw*Gfy>R_XGKARm|Wpe)DwSC#@>DoLNxj&>fP)) zE0qkr2{QESB17#t>y!w!cSM_F+eLsToNE?{5WUkEqV*3}a@yDj>{-k8@psZZup&pD zS?er2zKo(2^AG(Lw_o>!D7LUSkN^uQ|4YLuoo<)-qV#Eq(&p+8h*HamF9W%{Zcmw@ zIOz$j5+pDX?#?Mm1tJyltHy9{SeJxIrQ9d0GsUT%+6aFo1q(ze1(SOVe91Sg!?g{b zSk1}P_NmUTLm*FY9SV7B;3Y(!7K=RH&0wc5PrGoA@^m-;Ql4%UdD^Bs<=|w8Jgr(` zx?d{+V>U(mGBbL_wBH0Zdq}D#APQ0}!?6@KdqWaJ71ZnvTINbTFX;(YGX2#uoe%fH zmQaP&5KDMMHRTIcJZ~AN90jW-f^{W94P#X+w9NbYTW85iO9bl@NFwmgL%5@Ki|a$= zD}QfRRMij<={zGgM)7)6x^jM+6{|$_5)bJ-@O6zLUsp>`zCw;I9)@I~^NjK_A=Yhk zeATk-YQA7a9Q#K%xq3BDgyib-K(1QO7-2VT;V%ow)tTslf5T?c~&hKxLOM zCC|DAfl740oJ37TJcjm_@~&Rzq+b-_(S&~AqSX$;7pH0+I;#=nuhACMz62XR#Kt}? z^9I&xKFNJ9|5fDbk{SrrOCa#lkFYhKoP|)m1Pt<8dIJx}4l{msNo9FiccFT#5`roo zp!ghZ;OcSlegJE zd3zG_R%aq76d3pi682MY_yjJ3eJF2Js1#Sge38;NpoF8S?OrODBxWg)IH$ z8j2~kc#9s}j4DE1o3>eDOq)*K0bJ7Y(t{V^513qVI|juSR)ap?rN*m>S!n8kvmDQ7 z$SqNvTtMD(_v3FVm<+vR7xL0lhme^(z0G##;~E7O5#3?C44*pRq~4y{q-B1LD!ZU? z&5;B!+||T2hP?+##w++KM`Au%m8|hCwOXn{$n91gBvF1JkiuS7i7OCXmm7heMRlV> zTLxE4KV)y#;MZ_n6w`G9APRwa52{Kfr}`dA6CUZqwU4+vua2|?S=1wgENTr&)KC)q zR85b9)W9v^JTYP|RrjFql`VCoX~-vGegIxjUS+lPib0%3U?1N&Ga^|MlLV=v;}ui@ zuEfQ5yA;xqVEqmpV$a}X1Rwd9C|;4&%t3cJ5qqd^Z}5J_3{4>~@06@eWNO6APNS z%Og|lZ)6(L9%4e8?i7^sG^3nnzhBPNED#eK>BX|GNqBOQ-m`|?;R;KP z;Racd>_RU)j$POJKGFL@u5QJe7hMOd=Q~rJTQ7wD)M7>2U>=PH4~s%2 z=`-=H=LCS>XE~SS5tlFUmbwvbQ>ol**cb44O>5P$B2}F+EK2n4t&u^<^LBS%Z%=a6}t5P~~W{ zlUY~q+#_pNvJk;wUQ%{+yp*IFDhWGIM)BYFNKBlMTcN+1fLf_O@>!hqokJVoWrTfI zf-D`ab}rtKdT$f@9U>vU9PJarkewbiv*peP_4xK=WOp*wij>6GggXP2D^F@EqQ4?h z6vnW?gIms(FmvRimOhAk>QxGPU78|Igui>n!SkI}r z5GIs1j|V@5gNfKtx}~)8fj$K|d{PI@==SV)M7giQJHyYlJ!!v!et@>Jb>SJhGb}a) zbv@`w9D|X#b>aJ9VhsbuxRzdtqsdtNVlYaq9_AB^Cn6{!Z3h!JdCWah?aUrDCg~de zVa^Ihxwe#I8q2c*CoB}9R0uTd!l4j^@!0UH)5rw^saMi~GaOmTdmA>7=g1S%59fTo z>!-B3>1c=*Z6@b+9WIvj=iUMv8`I|leiR>s}uRhLDxwZbP`PGG5G}2B3a?VRB867 ziWOlGWjE*g9eILW3uV9`P^CK%NZD_O^7RyvcM_|T>*ouD4{u0N$eM}jx zjs3E}k+#wvh0)wtlKr0gt`;;L7(bnj9~lbzIC=n1azmTG8_s<#O;;UE)a5v@yR-07 zgn?PC#>2Jlg`=b>Puet9bxn0k{!szs7|w8DD|>aO?o=$vLrMEl?}e0@j@wTu!GY}l zoADUe7=T>n8hpaTIG&xOeS29)L5|@ip{H$3c7=20;nrYY*Zm*qS?R~@ewBxc3T-*hDI)G# zya$Ik8gf)`IV?3t@-_>}&Uwy|&4vUw=;eU5Cw(G5!5ZNE%OwQk+J90No{83~#irLPQ*^aKEnCcuHdOwB7q2FkD37t7W z4%v&ojs0l2uQ>JKxxxMwq;K}lbJJ4wJ%zv_t#ekDqYY>Zn-261l$}*Gfpa##Qi)bG z+;p#0c-Vtf<-ulc>2D>0bF(`ovKEy>MX`2mdh;}Q9PqGrX{nVsiNZ4=DNMk9;1WZd zL21KBd39%_IQgR6(MNnRXzHNzsNNE;6tdnJ)Fb<;{LNEpjKj#dc(WK8JE z_Le-W1XMa=mL%Tt43dMMK{6NjQ+zbhEy_H}86<1-3=#n?ARgiPiaPHx(>5M8l9oQ$O$G1<=T4kTuv`@CsK9O4r zdt?Cv1r=NI`U(BQ1`4=qpgaElSh`L$Xi+$39p6qF#EXUDPwNEC?mh~>#Czo)w8YZPVS9%K4&A|7Goz5n;37o!KYNS7SmcG%eaER&4j;9`?!OsEF)t zpL`$Vb$t5-{hK#`>!wTZ$^6ZpE_1O4yAoIO&FYkYeorsiv4k6amiSL60U^}T>S z@(Y{^=9}k#5qsnZIH9{U=IT(zQ?KITu>KZcv{6!K;*Y+LK0x1tD>{>>P&rB|frCx~ z3ZhH6>*@AWA)LVKxnZq^JU&piOuOAI13J-eyG2oILmU4kl_{Te8$s~ZdAPz62KamRiOu#O@NKCt*WD7OxBBQ6+A=wjBLtM7R3T1q$^9P9CM9befhAuut^aEAPI&;%hB^_Db*eN}zB4MeUU-_lUjXXL{wOd8x3Mgv|7=%}vbKw;uNc&=Z1$AOf z`|<)TNJ}BEIU_8(y&w5sp$LoWV_GbF5Mq(Mufh=)FYhaHxZ@=zd>!l$5+end?uA#L z?;c+1^ujAnHGugfl9EKKk{?~!;zajBZF2E8{`<4ii061$EVXX%V33Pd+f1S=~%Vxo# z0r8M=Ci-!8k)Y6!NB~%UOaKEgHK1tX^@CtHPyRLn*-Wm#1)*d3RM>2IwP>!xdqD#l zc|i0Cgd#3#47{W$y9*g%bYc{R!Y*DW7$}GoupqO4&Y(Nvj7r2-R`7OA3}eV#{3j~> zQmYcf5Pn%jw@J_N3!wTu{-M#|4aZ)}_6xE&|N9h64o(+racxm^j)ABh`C&~!3_q>8 zV>1)PuI(0v`Jm_j1JtDMWr`t;^$mq0jV|&t#m2^wDt4}lSEy96F#xWd?hJAkJrhSP z<{@u_xcZp296vu*48+Pv6)Rxbq=c(}B`#Gt2$(VK?y{|Z1jbpl2Hz2)IT#ARuz$k2 zVoY=a5B*-r6AQ&(8ol_773+DSmmub-EG?BFW-xE;@&&d^8dCwKcP&%w9Y$o%{!>I`&hqBX-&j26HzyX4;WX?X zkKyV*@pw$VxYc`$$GrRbV()4^ra-=!ACF1KejDVA&F5n65sT@bFUG67#bW+heAhLQ z4IrHRljV!?!QP5iQ5gtyY&+STjvbHrr&Eo`=zZ}R4CpE6i(ULNie8mMb~5pp<`as? zc(R@D@zLS&_v192*M7bjC(d6gU(CH~E`Z`wN70i(bVfxY)^XeQ^ez>U@uD$^1W*G* zJOcq4PX!C&G8Xa7fz7RS8@nqA%UDR}42K>1tBAwpzGh>0FXLH>6KTwCAGRU zO1Gh1fiQ3PKv1akzrtmd!bdcxE~bJti3mADB2(?jOQB@wsM62e)SDs(knf3Tzd|(s zs*ny5l)HOg8M1p?Bw#bIK)}WwF_GQ&35nE9pKD8OM7Q^tHgFmw_ZiB%iKhshxlla` zrH>at0-iZFLoz-+(OqwaPF{-i#)zfjSSl;1zvU`*)lUrCtOIj5UvssMdn@CyN2`AY zFmv7=S}65SKW-z>&weiyx0z8WZgY1iZu57H+kB)xj1j0%0a5w#H)ap1QtZD?dnhO~ ze~;Tks-1oIP@g@toN}wr9>O--XAk-LX)7=%`s|@TdkBgZ)wiB?G=28aJF1_#psddx zLaEZ9$R1L(D9PTYfEx2ps*oMLlq3xsXzpHV1jzbtKIPcKH=d3999*@J{|yKEZy(`vfc3j zo`z@CaHdZ%z;xzbQ3=DC8$2FNtJ$*wjA-*6hic$%*6OYg*WNse7lP|%Hm>x60KCF~ z&mCbzS-!(Ng{yDC<`lvMC=os<0s_#{5!Bx>JTzz|=$S$^)AUN5L9fIal?7;~^WXsx zp8z~Sz~tn?1C)HnFUF}mK01K^^1XlroM24o)W8C~u+X@kU;zvYUCE%(8M&a)Z}rq4 z#t2|Qeo$y`H`IWC%+(W;XUPK)m}cMI13+L*UQ}pzY8RqH&C{I`cQ5)~9K=eXQIJev zKPrUt5)Uc>9gtQLBdO2%IR^M000@BG0(G{1_yK|~@V^^BAQ9WBrQQL4z`v__kZcPD z>vQ_>1OA5b18#*s)vx34QJ16e1Ej*KN1od;@dL_^8wcvc4>$q*fD6VQ-~K6tAHewI z@#}N`dhi20ep}+Ad3XUjaTA(7g$f#$ik>JwC{dmYUQ}q^^Wf1sDR_;E_TZ^&?8-cFDJ>YsG=Y)jb%_#I1um#vNaR3W|2+9^R(YXBwuP4x#jK=8p z7JC&-{t+nxmu-V$P-VQwDBGP=LPO!6LBOTjszd$oqCLe_M2jm`v}a58ZvtEac_7qF zKE`LTl}BYaNYJMSZIpVQ`Gw*>KMKWtKFYYyl&_q6{@c9=*dL&`?G5oP$bS=_%#+Q3 z+i+s}Z`f;3D*sK8ehcTnecS^WIOOHOm3Gg6gMBj}{host_{;#svm8pf zx{4V{Bx9|jNft~onmIuhoG{i7w1@a^-`@ zud-fp>@0hmkk`IQ^4h_y@5GW;VLxX?A5YjH1Cbsuyg;A(ie%f7 zn06x`Q1!1tww+WII|6>-!5$cq{X{WOE5>8ubH=MS2v7V@Txggx#JfYfN;&4rvrH*;49!p30}Rs6gfO^6e7Hw=(fOI<`A?2mpE$mI>%S*Sr7U_0h1wO(Tdr!A}6UK@e&4+RG z((Rt%DZKD;)9vuu`RR6I8!_GPN#Fkx=*h_W8maQ__J(w1Uoj5p$|z|-h9dLsLW;6I zvkpmjzpegnaPjtMU*8DXU+<^=)jU`1uTzgNRrhLrojTrh$npvbj~=9* zbuxI4pVZ?NcFzx9cVM=%w7^6%u!ntI;@Dge> z{2)sXae8Yw!t^-T;;|!41g$o4&-@6}ml$C(V0Yd)t4IK+ubwLlJKy>e)aepfUur30 zk$SnWL6nJWaR{w1<@12`HE2X`Axe+glKetQWn_Gt|V~`u$}v#~7KS?gD_?#=zvt8uomcTrGfhzAp19hyJ=u8~!Ak zc1<*!c8#@8Ys860_Jn-esLl<+H-OXSY_7|(uIJ)h=LeL%f^_p-{OVVs_?0rZLh&nD zTf4;CYMJg#{srS#uPtmk5o-&; zus?MgmF1JKZ{mDAnRwQ@G`9jg?3}%|EwHyZum4i@O#vSEOW6FpcvjMW0eILRX^4tl zL19{nRzjNy?68UWu3)j@a_8g;>@5JSL18*ms5{D<^EJDERFe9Q#lD!~cB?cy8WBM_ zt0e7=vWIw3zNNsU8>X!;&DmF8EUSKWUMQ>n*rBX1<^Zy*dk~JBYgX+FP_y)y;NU3>mAig?LBLq7tc~q-zOH&3T%M)WIStcTs(k+5U0M_fHs>bOv2&5S?VS3eSAH+TF_4HOLggv_r(cl^Qig>F05@e?e1JC0Z zVk5ip3l%3ORnC2gDEm41J7Mh#_=PqjsT7EJ_mW;H$1XHe@b3DFQv&QltqSfAplg7; z1I$XlxIO4@#zBqPV^w#dJ#3aEZAE$??R7+`*^j`wyP4k*YgKa-KrZ%dLAe`1lsk5w zA{XMYc`+xS_H;RKAn116aXY>;+y#h7r2^VhiGoW$A3}#s9_?wQa()~Tg*o2Se*y0) z?-j5Mk@xgMk6p+RcA->va-nJzFtJIX0OMGjwq#*+UO2CTuABj&7IGWepw|VV(#N!$ zlsUTS|9Fsg%(U~#PoD$%=}jX6h!=Zo@k8h#PF38dwDW;^4PG9ohXI#E^3EegoluPV zNLEzcHYeyp6spKk!TfVK+;xg9)N;R4l7qWb$dai>By{jikYzBRf85yz;oL)-0mld5 zKreJ(z50mPln7zxg~%(gA_t~8pDlfRO6;>mZ)@pUn8m6D3XFN@~zbW3k2#H6OpHrvEPBw^LGjNmV;*Ou$KA^@94}f!9!(^ zIG-yqWAahUJckFE?&pNq(TqK()t2L842isfEvZK!X|)`#d;U0q8>ag){N%`Y(ttka z=Omet?dEuiHzy+CXT5(JexPOkQ6BHLaa=K)JDbg|xL@Y&(j{ntWxovGPIk`1vkhmA z5j(ePsG?ik0Ol$`o>n0ceZq%1W*)BrA7(44PXa#7w-*lsX~r0%{9KUuZNS`n+KN19 zMPJU6!U=qutK^BP!(62fvK-H|@Wz>qd}H@>9#@B2O|?7KH3{cj_DZ@Oa>p!tE|dw0 zSB-Xcep>QE)VtZc(Bp5j$CoB>OME#hUq8NnT#A&n%cEV{Pa_Wn@9&8oC5LjP zYXYt`Nu)L<5#iZ>j>LZ%gy zRwn&&X5Wv4oey~aP)x+!_+-}wzYk_A2GF0WSsSN=cuGam89k13A-#Z;QC)Vl>2;Ez zX1|InA(bW6;q{T0`U4JTJJcCzIQmJe{XLJe;kugu70V_q^}0+W=>%_2(e1|*Ahc6L z8o4tjE=Ps{$Jk?OSzjrKRMsp=`23O&F268eWWt#-7l|^av#59=Ja*vI>oUvQyKO(; zrjwlXcHZ{$UFRd%ehx`>2l{f+nHWCh5*Ioa&m~@2e<^(8gTBq3Ck`I7yS<&q3+g!1 zLcC@SnHVPip4_}Pf=MDI=JCk2v*?cLstI*%YelADU?9nj{YsG+M z&)9mot~QJNL3!cLC42f@eBmTW#5OFtz?$RKFXX9SItBlW6WfTFPr!smh)leBXLVKhD%WRb?q#3(BWl<@) zR2ijoC|XEmoDotP3+apFmA+Vy`)jqVaaIbVR}$Z5*z0HFR8M`8GgT#LK%cp>m;oEz zR}_O1B#F|1)gF@(1xSVU#1SKrl5{LJ(ZUTpJrNX^(j28NVwtiPm}P7|Qi|5#kJ1ir zoEeeGnkT_0i8UY$l*@TdyQDMvN}|lkV=IaLl~NL0j;$o}UU^F5c%>vFm8cUGls%Nh zfA-bF56FHSsCB()haZA=SXNj&eEz0U)D9nC{2=;eC7PkMLs`#`mjE1B3@>?l;pAiJ zh2NtNrSR*K!o)dfxr?bEDqYq?MW#Neryed2DTKoEP7P5;#+@Cgg%?SCl&%-n4L^;= z80dx<;IV;j*t)nKx*=ca8IcANJ!7$jYYtJaxTrG~O_zUwZoCKH0Pb{qRS8>+bsDR&|Z9AMQe>%t`2n zQQR`n58uG8PFz2H3_~2~hh3umDf`KOvxjoHrKfWEC>wgmMv>}vSUH@B_-+rqu!OJP zLoXbNqtpwbF|0nfe3YL)unB6`;U&;=pGrkXfa4^oy+U(R^XJ*z$c_iP>Obz zVmy?7ccW3P(jU6ffp>Q-Ke-sRN~2=5ii$?&IAbtb|n*-9rWdxMN`g$*tXzrQUhy%8hu6 zGbG_m8yI(P8?8HcF`jHj5i^OeA);H6-C{on#|iiQj+cz+QG17dAKmZKJ+UK}{ig0L zz6d_S$DN00!X};7HTX?tzx|kd#Zi07O2n4m?AQg<$X+!F4FZ}F{*P^d2mcJTY(s3H zecwPF(WdURSKW*caO|;-j$HR^KEE|H83*tIE*N2=JHI`FxOt=z6>t4IUPOP*#(AWi zm)iG@kWWTwiGAM?e5|;Kx72Ev!PYb!mydSV^8~8lzyQvZofpH;l{y;H(wh-dMxC%T zm?g2VBP!W`ew%s-@11aQS0lD%@c_6D%Oi^(#mKN-w%pITho4P1&MMG$bWUcgmOh&n zu3fc!UW0QVPpfw_omtCaC-WuGM+|rs8xKnj|3?}fV`+(V^(b{`r;Z(JMz(<_9cNwh zs2yJ^Bhs-8^JM{!p<6MHF5(^H%k1s34sGcc2^h{<1M8ME$^vi*f>vwbvEmP4o#B7e zS+X4M+|7~4@18w>d!*5FC)6d}c!}=J!fcEqH9x~9s`LWq=F#4Rqen1iUG@$PxSgy4 z^Ls6)uajY?W*W8hAr6z>g5DZ;FkZH`>}lL<1-~IAo0*S`_?af!Tzod{s+FA+(f_(V ztH>X#E)=+?zPvKxTwP+hUqvMK5iR{A+%-0JL|zPadc(WkYexdV7f9!q53FJPWq9X)meQGS}iF@t4NyQ_>faRd0xRhxhj912Mu;kRE=d8gIZ|h6QGE^j2)t5b;v|lsq8&<~4(4?Oh z;f(3td=NidfxmB?GP~B_%)hO$xjj5~&p;g1QV$NMi|x~xI-kUF&B4^# zkoxHeoQi1oG*+m`*FHV4s3?sI(t*F~Wi0z32C+UE#KZm|V!SXF7rn2jYVgP15&-GM zYqYwEI6LEOKJH!$7h#E}2J}TtzJ!CQ$w&*xW$8D>r_|2SBLD&rQ)~mxVgDj4*0uNx zhBIp=yc3jM?x22H9!k7!i*7SxEf8Rv^=JoRS?%OX-Tg#FTfZr_2QX~wCy$Fq_kvom zUuyrD=wo_p?`>z`Jjz2`680cOGNnVc^sVp1yw_Gw#GDzREu}{c@3zc7%kLwex9sFH z-5H9AOqLg5z9j4}t3sB=!Vz(2R6KTe)gaXSqUN^=4%bRJ1ZABpJS(m}Flru8zYnLe z;WqUXKSVONaq%z&-$%vE&qf@+2_H8lBW(#pj3;8A!C8@(iHG;52w`s;F%bbbz0a(W zG1Zn1pp;QxFh4j6O>Js?O}07bkFnfo1Ih7Z#o|~+30`7nD)Gl~s#c=^lg`;VFark| zFe^jAjGvLQ!WGWt^$70F>-DB=vDd(F%I#JA@KVA30Xl#mdDmxuhmJ!258|yA8P3Fo zBTzvej}56}8U<^krJua!OTNMo^wSXLE3ls$RX>?(m?URmNW2_?zjrsHuNom77+rq? zeWm={>itoeLzya~WAwlza*}L$p+sa)GWIAEJ|1Pw6|P96vI7#aJzDJsbaT>~B!cBx zEiH1!-jgib!IwwgPPRC1KZ4t`Tau9-R!knCrMbabksTj*Cr7MeNa>1ITxSVwYGd{$ z`fdGu3?&>eX{B9|>DhmPM=BU!Q^tq!QI5|R^qJw@urlckK{iP;wo^;rLcv$IliMEF zI~&!k1fF_-843eUQ7xo<+IA1%HaOtDXK^z2$igxB&cktMQan~xHN;G1_!Z;800HJ} zaCwB6kA=b^munB4fl(P;rFlQV$S{)x3-dnSe(~ACg{#kqmk-WO2qNU;?w}$WoLI6Zp-nrGU4fBN?Xe=yV*ll!nibez zfOp6~T*ZymbUvJP26J*`CNL0y$hoxha?tCl3sNmuPf3i||K$R-Gu!bit|!w$%89I& zgoEu}dKeR!9i^q`0nY(9;1_d}bgnEhyad3$(;f z?n&B@WCzQlQtO+sd#-VrpLN&c45wlCqTIX_?78f^1Dx}f991e&)I+i>a17sNaBO5= zC^6$sc^jf;;c%Q`zs8*ljo4T%eIR$Wk&47TKZB1sjUi^vvA>H2|e$KkT1&02DiZHVn(V8s5u3Vp?T- z#y@ZY9-&Sl3ewUKvy>BGtGg2lAAtI-=(A>|D{HasYE|Mc8!*G>tkmi*L}zlCvJ<4o zF-Py``!Li7Sa-~a`{ga66V?8ZmqK_T+Fy=KFa(sva++2`u|G9q&02bO2`8i42r!;j zS+Mh3lCzcl4?M0lGZ6RTHsoZK1;BUBj(7v3rmZeB%0FDG-Q7~Dt=kA z*_+VT?ZI5mKE#Q@#RQ( zhxTj5lIJ7lELWej%!hD<`p*YN7>I6dIt>S;TXxAS-n773OJ!Q@y8dXP7<124pAQVY zJhSegXVxLnU=&}$nOti+*9>&@Q6~2iQ1#&`7-gW7EhFt8hSJeTo6emzY+LkM=bF*F z-3Yh~7?;kSG&b~T7X@XJ5~HbX1dybA4EO6tqdV-qM)VM(`3CjfsU6Dx&|}YPwV%PN z!oqY`aXwo1mzP7G#3O5<`@2^iM6iu2Z~}dU_!ArCUIkm=9(FQ5;!2rks6NIg&J5=s zF)o|kl8@M;jb#6b7Abivs-9-W+O+gg^rKbQ=8JD&H$gdBsikeS-vWSuv!uqNrR9!@ zn8hw{Y!)Zin6X2s9xviIZR#Fa3s^_(i$9GJlxTwv5(A*5*o_Hics#lXxn&T*vKy!! zM`?vfUeeZYjYr#4d&hvjv0rpEU~{P!eiExAzC2+MPsEU2T8@@ztIsMQQL3e;qK}N2 zZ0=fW3{GHbtT3E~(3b;UIZZ_j7s(V&(U5}G0c)`#X&*8$4Ci<89S;Mlekr!L4xCwu z$E|>EvJ8dU*j6%pugl$%kyf-Bd*cu@awrjd5?j`jmivW+R_tYM>8~-Matq zY2gUn0kdQ=_0FbXA7}1wBG$CsK=J7Q2&L(fy#y)JtHcP5vL@zJ)rDv0c1i9z| ze;_i|oYaw4qzrJ>wbb|It?%KSw44E^Gt8n0>4%Q7%9=ThzyyNE-k$v!eu%&!XN~22 zc{!#$XE&3G57<*D;C0)sH^-O!-9_jiEprgRN06Nk70cco%D`0iSDumHiZxYKl%3Iq zhN%S|5|L+NQ>PGs9#D?QWxo$ND@;0X|5APX;8^@Vy5~m0KtgE!C$Hg7SewcfmaWHE zh_nlg^1siCw7uDDp{ZGA+xUw6DbQx&J3Ctmc-cdsIpA^GU*bRZGvzzCk=h4&bQ`Ys z?5$K2Vy*$cT%is4xMqMMMn=&uXj@nldYW-mw27C5my`yn+%ctKA` ztNY@9P7kq5s0U?VL1tnurw<*G*YLXOe7~Q|%Qt&>!5&rjMT{pWnYU?Xiw~%A^VY7K zUk8Kvbs^iAn_oxqYiT^}_w2XvW%r`tZ_2m>3(PE@j(%%dSW?!wp~2@feO$jPVQ*W@ zd9Nd8{YQOf!hUP_UAG;9oIYsTdo7?J*e~l3Vi6VTpVimMg>&@J>DSK5nw@N$n*YbS zKenjw{r|Do`^$yi{dd1|!uQ9PAHM%%OL}X+T1O!t$)7KpuTHY zf%>k0!9~ZZ?{Y9Zg8HuC;-2<;3xcn=`mX2AW7c<3rIq?F(pTjY?8#q++;txyD#Vcj-B1hTNf+=+lo|rVYB+U zJGy5HSRpp6NA=Y2$Mj^g($cq~gW)gXqu?G~fIsy@j~3K}O|!po4}(Ke57rFV`V?TV zH!rF{#_uIw#;u@Am3Gi zsxW&*D#>`tH?d9S7llc^npf(0N=0FR@97`;bzw=Wsw`rNc~KnX{(kEn)rDQjJNA+HIP=+_k)aI%BYZ+ zK>P1fGrt~;g)q4d+0O^wC2t(c2mTAzgVk^no^m}{(D0xh>}_r!3Mj9adN6KNUY_te zZZ~$}axg423dxhH2lKWonB}4E3X<>=Y*v?Wv&zpP?w?m3hNzRVF+~1j*n{r%tHWx& zJqiU<()#@Bu-RU9*xX}Rhg}Y>RJJf?oHLwoXg$_16b_?*zITIu089+o~I>tYV~20C?F3cGkPU#IhRYBC=Rpe8 z;3tF=07!JgH7k(^GZ&W_(ak<->NQH?tjAHUc0KNY>;kbs;pBW#1!4`M@-Qy^pghc{ zNj(WIGgK{h93`{LK7O$n0yWFg%wyJ!71AydG8<(Lu7u7d+Ul{jOFp4s?O1p1lK0Bh zj-7;dxv0w1B|qq|D=CGeF4&7!`B7+`mv1R{8ki)p)~|XqD0`aq~2Wk8al9 z70LqTWWGZAFVwt_RZS-P<;hf&d3f3$c0l2JGU$|EJ(!QQ@B|1;;nkDr!UqXB0TV2U zwlLKpOdx_fTv~=4DoRYHQVOna?{#H?hIna6Lu6UcUL>Z z8ZuS;t?Hr;YKT8Ia1r2KZqhxXI4Nz>`oM!uO2>Gy$rPQWyz*H3 z;d<(acOBjzw%uU&_4y-v$D4Y${ERWwiF*ppvIvmVEJKECPNkiUGyxWuFxb04}4w+c}= z!Za*~Wk_=K5gD9SVV&f85CsiMwb{3yja;Isx>ao_vPln-EpN2KF3@?XK=S=AV zx0-aPBAs=Ema>i!R&S?s*9)sBnAuLx9m47y2vE*4?ttnT%Rynw1}%LK7J9O513b{k zJKrF+V+9~Xj|Z@NE1sFOccE;H-j#);P}4>5)FG@>QXpE&UyTcDc!8?x5`0zGDiNB= ztLu7L)pdpNRg;nJ$>^@^hwz9TzG^YwiS=(%&{!C6;RTE@t^s})yCFRr{?0_%cJ-#L zl2f_*o!3bHqUvya7rOXucCp~A;tL8u@Wsbh9fD-fa}8e)JOO~!cCEG;FKjp-Z0~(5 z@ht(ysptU%GT*L1Dt0NerZdmFz>ZZJ z2bj$N4+lF}sqqhwPj)>{D1Vvd$h-vyG76V4Q8|3sJLTpz7-bA|G4WL;S+;?5F|W9_ zu`s~utN4AExeqMLV!H)k^%Wl7hW~J_8L-u7AMsk{*+Hp z{?c-GW1*1xZuD^_PIe2atNORFo-mYdQ>*MysGCs4ExG}EMJWr=R6=xQ;~82XkI?$e z8VRkV9#&d}9^ezv18kKaS_g^&CaugX%vEGDvwllqS=Tiy|0!i@b_)Xn>bf5O(=`33 zpYQHJMNzK8Uq$(B18$+!ZpQsQ|Ebh?oCyA^ClJR$U`TD5R6EK2a(E0k(SLgROMUt* z>9c{J(5KIefq#5`_O_=_OrKpQ&H?yl;gp3Vipsj-e06f%Suh&@S^CpV z=L*yf-#(-}v=~r`5>Y@KN!A{=z?HZ*VL!@ZYPe{99)W;~sy99X&qcc@+75Ru75!fL z1X_Z8QIAicODYj#P4+!s!mo0C0)bnSiSs_5rXEr z9N&7$8f6#e+FQ6LNvyDwbjb3NC*zRiGbEd|UW~MShb(XQXK=_?VI8pJkgCNw-5KPk z2F}!8ys{ylgC1VlH*Px1^U6NJG(h}>6n#wKGeTIw?1sh1k3|A$w|bHKb~zavs=`o(FcY?}7FFXs7OfJrfVe`CrLj5c0qNh;LPhzaZp) zWxi=4|LdoShlG~f`vTwV2XVW=_j&-2B6mR{-)ny7q*)9T=&57y1%6jf6fcTW(C>Pn zr{8s7IN>zxcP+$U(4Vi~!{2%u-=KH?g3oyV)?@J(q~Joz`Bx9gtA+flM{ppU#eZS{ zDp6#5_*V%eQ_#QqBu*T|ze+?LZ~cV*tIRj;?q99LrSO5l*AG@P)frmqEga0!oto!g z<%?ur!hZpQ!4nu@xKQWgm{*mAtyUCKm0jtjoFamSTmi*_BQeF!{tcf0RKIcN2t{Df zoD=xL1_c*;C~!!RYLIK%-F1pfhx>#Em*u6JPRL6&#l9x(MNtkLluI?ucbbN_s-CH) zbB~p3IyFc&{V5+1PBmpe`KhM-Y(&W?Is>1S=agxnl4^=|rQbL-muGq?*Ec8WFI@wF zDVu?}Hsz1!IClB0?7heEmyW?C#xA{p*S-Iw^G$pDOGo2=5bnI+$@)uY9?M_4k^a*2 zwiM7W4|=c}!f=|f_Y0nc-J;LD(oDTN3J^lj@n*FlqT|>^5=uIs2A=FEfj0C|4d!*n z3%ZjSm5e@Xpo$pSlMQijsJNrg5JW^<5NGW<^@hEV2(ukTy8+e)0A`=no&S&MvYRve z6VA^m0#Qt~1?Qt%jM!dy!@1>rZhJKztQW{-Ht z?w4we#4}G<^#^fB^;V#u%*Q>PcmuF$c{j`$K2x`K!rnCM4>DAX);c9A16eXl@0UkZ zwK;R($ro@T)4lv{%f0QOnR+df+5kABWFvZ{p>vFqZy>f@xX?JiQBS=ZaZ2iNlbf!O zXMVrvTDy6wv*>+qTalepVvA0HyJ}k!vAEP9*rCqp38$*a1dv_&cMy3dz`3>(L1qi! zdWZw`W7DZZOg&+5i8h(`;Dn1heKVG9tNM1X-W080gUf0N+G;tKusJYL@kS%sXvZ5A z^Ji?Mu1(trb{1R<_))8T5c<~v!eFCtyACm9O;ug|JUo+8Oo|Z>~4JhMU&Z zphFA-T6w6YKv8u|)?lHqU$s#K@vd6>ATDx%cokonaOaei9UTwk82kPOxFTUc;~J4- zh>`2@4fw~nb(`s$AQ#0%NiN4nXjg&}g^yT(0uI+Xv?0|RA)1dKLnxyWokRq`CcsBB zs(vRPr#o|sKqI;xh*XUzCn`xqcP1k*BxBp4Ky6F7pE{U`J)xyAZJ|ueF0n9clg=FQ zQUW6`-6(@FYX#{)ce3M~B|5#qjLiX@*z@>}+Unc1+A6f#nT1x*X-8lxy4l{6aA)>M zSD%p}blO!oZKgJk0#H*Zh$^^2_GaBn#wxX|@_TDVXGkG7RawP2+@j?LS>mcRj@YoP7{V{4h?x%n# z)ghFZ!{_lRc|Hlo#}en^`5=5&bQjklUobO%^V&hDrqGMg2}TeN4_LXNWi30Lrr1}0)} zYPH<5{TT+>zSA*{xEe7LwY2bcO%hnKvaOCxLw`+}0H2J$l6_tUz0w#Tyr(-yXkRU0 zan}A0_XWD1iF;W<=(J~Huz_s{e4z9bTwsnGYguF*YsBZ#A=%TUjp}};Gd$^>!@Fh9 zr;>*LK?fs5M+!ppQSEcM813aV003u!T9q)&OmujdZ#`+w3WRWZmQbJ`o8eA$M)o!Q z5b&{=r=rMTCAY*|a#+qI z2AK9G7>713a~&F*tqk zG)nCU#J3XcD$Mt~k?1=$m9wuyy-@4nc8{+3kX9SV&$yXjp9g@|L_7mys-*|Z1GcH! z%@&bOY+|-OG+%RZ;hkFD06Yh}EN7n=J4RQwU~xA0%Px}#^E;Mub4hlw`tIx0*;T=J z$yCVxT74(>SSVEn+gSF3@cQ#4Cp#cJ2q!EX;$zlwjKIaQOSJSe9L%F&*PEx zJc1EiJXBkKab@`>KAxK_?ycF?TwX$q*I1IRR9{qss28egZ$`^8k?M%XiwW3}?T-(E zUa-Vlu;2|9^vW+w=f)cd*XUe=nZ6QWUW=|YClPWi-oW7_c%1kA56e@CEaolvI>L*3 zOFH`kgX!o^w4-14!@RLb#@3STS?UXZr=DAl=fxYcUASFtF+qN!zUZ$^-}3?*efnOX zzSpPk_33-WfA7=x`t-d%eGk@6pT5_p?;Tg)1ED-zdkOG431lpkdO)t)Flzp2Z&Oab zv2^k|-=udB5oLJyt{H7Pbv3xKW0!LU0>;l7Fa|Aq30x+Z!n3zrckWc4y(Kkx3V$Idt z;Mu8%vj}M2FvgeZ_LK=ayk@Gn;>H%<1(p+tbYYkp$iiRxUudVZ1ZMDUz~NoeX1HH0 zPPn(hyR>8({=(7yvS)+iNPXuxuRVHfBmH-6saGPnQw{EP)AgCHi{`?4cjntjMUL!% z`)=slRZm$JUvAS<|06?HmT;EPmekV!BmTQ1Wt(VDJO)w{3w&1a-z`Bz;Rv{lqVRHE zBFsC9*#2(*yGA0z(0l-Jx#gIi3$M+Hw!tbF7oNBVbbA9#iZ!OYXcQcH2OO9h%7J$p z>=`=n=y`~*ag0%L;I-PBFUc+8+iZG0=fFFRbOHL~e2qfkK50=MsYD*3ki1`f~0YnUDFsLB_=sO`c9J0 zk&<7nV?;63CGl9RR{J;|c`)VS$ZMk`&&ESRBT=;z)?AzA%n?r>VD#YxMt1>beZO)i zbZDt{xU{DykL)16cc+^t4}kX1<2TBsfaJ1;XkOsSYi26OaB<~@{di;HP3Ymrd)=&9 zvJ7_ZC9yIT^uWc2@Ab56FPX<9*WpMaa4VF7G6;-8X5?`z3h&Cn?5i-%#UIGGLs=Fa z6=6qSocDvLBHxjB8ID@9XA3#<%<=H9izg4hkTG~CjK3VHm{YGUEk%EzA8Sl|r|+;E z>0GSGCXpwGpyTxA)u3DG&!f9w;aRlLdBI?+cZ{bgKStosGow4{&-;~_+Vtlw!2~3r z_!78BpT|*u#sPr74AVen8G_g8wOksL#D`wC$&qR4FA_6y(28cW?Xa+Yys12Y9*ZQv z0#hlkHxV9^6$xjO&{Ku{d7cZ#^XIW&vi+oy>iwKqH70)K45QB`^M3K^!Cel53kfI3 zX4Px8+vPdJwgE2zpFsh~#y9c$Nmcaeu@xa_0s2F@)4hIFjyi4iDlR)jvA9HxXfxb6 z)AwffYw3T-_#;TnbxwzrBWunq77`Np`o+Ph*R%OZymNqQ01nj&qRX^`+)8knIg3k>CoH7 z6$r5fr(R`=1*sJ|5?X=uqkYbI=$XzfoNThJ@DuKEcmY6XTMV4;dIl>Cxx7D*$dI@ITux^6Fh%j^YQ(87{Y??yyomL zxw3qB-bd6I)t)Kp3wJRJkp``9Gmkh`_1U8$E7R-_jM0*sggXP5or*uNIeW1@h8zOo z&#Tw!&XHLr%Q^epJNM^>_(%11804ZW0hDdphfQbtK&8@I&J_zR=Ybl&4fO!5;OP@c z|Dwa4PV$zjwrGQKwgy+K+=RQ+QHAkad-VEcm5jX7o zX|xO77LPr%7$wkK^;qNL5e#YlJFZ72T~`{r&JQVl4ePh+7Q{J_HlY3YA5EH7gMMxx$c}L~ zob%6biQD6TVMm~i>)@08JQwNY>T|eAA2t~!m&t<}f*at+olRVyX=b@iTKlq2< z+)-b`s#yjI-S~`V?RLAhZMPFiDKNgyo&YZRfD{*=}GF}v| zGEA{M^2Q3&*nerXY|*2zc-o|A@Ef1prQ45Gzwj~Y`p0)~^>o(dT0gG=@tM7f ztfl)nUuoGL&I7cUovSAp&VQ%@u3iuWUFjCfxxHMQ-nE888sj;o%b7me9DnUVv-s+P z_8x3;7<&%69^0|-YYBVnTE3@l|1R2W&r%|qpW3l$%+*tG^;dEf3vU6pZQoP z`i+5nEkkM>vTQo*OsXd4oJsRzf} z77tNecCGSV&cy2>rS1XA+3GnfL4j7g?X;qz`ui@y<#xuv|1I&AMXhm$ri=8}I(j?! zZ(gWl{QbjJcHlqIPp-{@~T$r{T(gq|{6+qqLHDke^YOIiHyczRXgu_!<~88^X>wqFYUeUgC@4W#s2^rKcrf`MPC-Yeho;) z!F)MSHjCskA!!u(s(O|DrRc+c(ua4TeU_ay$4f37`mbMXXw_|ge@V(t!u?vQ*I%G? zi9MyIu9sOd7)gVr7D!1mzrrj@xCvPK>@SdvPs0V4GuU#@CTVH*iP@&Bz`z zdN6w>E<36I($b%oj`{>UYW2OM+M|0O!yb|&QPAd9RP`H7Sv7(KzC5p+^bt%wSDRIo$Ba2~zZC9uI zb&jGv*9p}8jqpWb|HWxo+1ud6SzQhQ+RE}0Y{TI+NZKZeitV6lCLg)ZT#dG?G_np~H=6D~Au9iG8B z*b-|f(&ErwPj8iv_!*`TB-zqeu}<{0+}7f0Xhy%oS0zU+`xWNinecI(qox0dC&5n( zTpRW~9Ep%C7S<$Ow;{a6V@>a7)mvJoTUwQ<+k?QzTa1<#@J|IO-nokT&h6#TiLN9>$~_ zsNLHLu4+5Q*UwsLNW<1`l|9gk zT!qmBxwje{sPLG@m}KVok*(8AJP!kNsMx;B5+*-Psx%H^sXX!>5yV;IE5QEQeJ-90 z!JPeq_x;B>pIwQkt9iKlFuyMkz9;O*67F>P7F(DkSQ_i6rMF-O;uw63Es`WyI*&)& za5NcvQ+$i1<^6oF$(BU)vFt`L;Q9VRnliT|spX2nUmh zNay^=fv{14_!lIj|UG-M1JQB z8mxTNo-t7SPBXmo_cW%#Cb|_rQVSFrk&uNdXFJ;^UL}KXdobx<0brv|m?uMHBawxQ zU*Hh*gH4<#L+A0}M{zI#v0q2LBkU`5U12%8lU=?vH0Qhi3v-V0?6;Nwt0g0Hs8vJ^pP3yG{>hvohn=9Z{9`%) zSXcHR;f>0jhlb_PhwNE6Bh#e{j?gYGL&zxjYvB(>{utvNWI8gPi&@5mS4-cF^Hy1l zO7h;OI9bgohc`RgpO4!A&)(a>Sy`9){~Q>V620NCDXE)mQaMdqj#AB0D-O)TbL1Sw z6t#4$U6UTHG=ag?v5`45XYOuKO{K*zWn(ujHf^JyinKy9U<_(1Xeo*hsA=bx)<6?b z6#nne^}X-&0E0d5Z?|@Q)nV@E@8k9Oxvp#Rn3jX8pWhrlWLJ3ZVSV>bTuZK!bByB? z8V@U8TxvmA)Z_P_lK`r6O7%OLxXYIs{Ydx_N4vZ`g7A9F;4CzOItbX*J{U|p&q#x}; z`>xTC+DA!loIRu;LB5CdqyO3ZQA6#XuIfie>{EAsaQ*0UJoA61estU3Mu@BW5$&nf zkFMc*oqj}i%pv_~NI!B~`H+4jHEu{h!jKy4Mi|N7=9cG5S%~e*hO7 z=>yD>ly2Tx>qP=K5j&DP7NvrHaUx0Y!iO}7*T~P`7z7Rmn_eKe1tz2=NKs4hA>n6o zUZfN#rBo8*+%401QEPA($k?j}hzvE~Q9f}Wexr^nbN-G@)9fX?c#r^~IuDY}%TjiO z^p&`e_H)sn1L-T>xf{)Qv;=GM68Vnahy}fO{)c$P@0Lk%ReA}&qZ@TE#@0nu18c4O z=-sjXFPH4VA8--Ixs3UbcI5qgoCgV?%38&brf)O{QgAu(?Q&Wz!McrSa7prbkQ;x8 z{i6V)Qn^%!@&+@7-{?!A>|`6qWAcgzz(5V5w7}_m0aEn}mtfM(HLs2QMw_dCqlJ6L z-XeTQxR8J}bu7XSB5QaKj~2e`d0t^Euk(s;X$#WOkN; z^gPXYYRNc$yE+(41`y;8mWJozVbyrDFwf*mUg0=K$SVq;SpL*7lah3v>F(vp5{Jfo4Gxi`@&)>{J4q>qK{#A*Hl$8k z0?uJe`1f|Gk*f)_$ zfYzw^Cgz%N;uOB;{DK&9{YS9t<^24T@>jOL#)RdU#N(X3f~jT7dIJ7s#b=wwXmGXR zH9`so`XQ=Q?@=xtwl`zva)BO=fV=rs<%JHiJs{h6O-D(RAR zvYv>9i{tCJ@x0p=wsFG8nLhbR4zTC!oGyo}-1)3e*!ao#L++J7u}G2b&9G44<;_?}|Mx z_T;>-A7YBgv>B=ico-`uL_YbHH&>`!^>h4qZ_GQg!Ss>MTjYJ1;a^nmc{mu)L$)ao zbRu1|&+{zY8|8nGKw3{podHhs(8Z(^s;dSVSx(i#@k}pmlqku>$i;9qSba zXbq_J8ov}Lf3B0@5{p-93pB1%|M5$G;;GisVG|SgrIOpdubg8xZh4?j(_fIy6j^M@ z5VhoR9)ghbj$w{#g-6@ax2jcQ``yFUKx6YX(B*w_Tt8f83wGG5?hi4kzzjq&c+aqK zD<PnR(qz?o8RCiSI)SHhfR_BHa{jaB?28D%AK;YMZLNRfKF&GU!t&wa2KJNi zBpShR83)e)===$8{T3(69$(V6iaZ1NfD66Un_d!@GN*OTq(QwY3b!U9bJ7;Ftb7_>L+BKl?$51m+QAWF#>0u7mWAy|fy zspPBPRV(2MoR>_TOFYdb#EUg1==!slX8gyqOGzHCU-s@Wms$cgDi*Wzj+f zNb7`Moft?9Sqem8Cj!8#l$N%8|%h*{~sTG_T{F_1qd*|x~* z`LbHBY(!nUi+GDhN%@-*fXvk`}; zkMxIUOOpiNxTqoX0g;9FJ&{P!M zKjfc)>p8tp8HDQPop13mk{^Al28mIfa)j3fCa^rqB=olSroTl{TlvA~ZKMUUNq;Ly z&x;49BELLBvud~o!)YGtl%LOqKjm75e+kIO`{`t+G-vpkXxIAGzM%7ibZryH#;lXuQ~tm}EO`yDKr zO?+f!%HL`dQS_bislTl(zVLD*TAj2XJjmwi`5D#oU`UaYNauADvdvwRZH|=`^Evg= zokza8%jBD5O}?4T6{SLIA5B)MV<)z>#1hVmEXj#pv>wCPSe_=|oIM@^=cAE;)5g^k zOQVhkIE8?-0s+TXcf)uc=%hDh(gv;f+;{|>6Tw)lo%4A34xZ{W`6N@C+MpTIj!!&7 zg{zkhB{7j{MMSYFjF1wegQJp1&nCA~B&JB`q>~OSae#O0Q8TzqKB^ci0X-p_r?^;e zl7OJ z?Q9fHDiN1q0J}h*J2jH$9`t%X$_TImv%#^p05@qtHosge&)ML&+q4!m-NRO;zlq4v zr$56RVVL?__p$nrdAM82^8`>PJezMhIY?P;X3|~o2djAqm9>gL_*eUW1%Du@o#78O zNOIBFVh~p3<5BB!fjG8rp_t{yjmQVfc$L;UTLlJ;Jg~?btz#z=^tj_Rl+b@PJR_Eq zxDH2_d_Z0>Wy1;6+*qX#PX4I^2$X-v$ssi$f)(N0)RS5h)!U%P;R;^G7KRBpvPNJF zJD5OgSV8y;apxa?N!(c+Or!R8WU}g~2m7nf`R`+!RK9f5wg};W#cynQ9l$vkT!6Ld zUbyvGUJbrkD)TOUIyhmhNS@`7%J?g>O$9~6j5}bopDqN$X>c&9f#U9ZOHkaV3A6~{ zmSEc0)Iec;%ufmUrXqurnVQU?;NY%(IsXx(j7{mKu@Rn5atiD{-ZYhW3`-od&u;Ujay1nf$v` z>iVc)bSimz!sYu@SJYxz(PH>@9Mo#v@e1eAUavTj-}2PYXen6CpRkM=v9_i9e>I#K z8*D%6(rJeQDn7die)baVn%ggbk6D2lWs8F?1Kml(ZUvm3PF$;MW@2!d7ixt#`4gK5 z7w+XkzI4uThL${o{^q9qQh&9&o3D0vb+x-4osC<&cE;TTJa`VWUro1mpCNL3%4Xsf zK4CqZqMm)>)0!kZ&v4-D-s-;$P`b6$+Cz6{9ac^yH(maI>rXRNZ~Z}1t@fwr){P92 zM5mWDb7ZFK7tiUkTQ)3-0lFN7}&OnCNy*0eC^=& zW)`RZ03>+Pp&O529m?JztgtGA2`}trl55)E=q_fXh1q*iTQFZ_gMGqofPe?{MUrrm1RdCyLlPJ~f>GUH z#Tv;W|D}STr{CBJ8*=qV+&VSOR)ck_-vA;5bOLXc&T}hmRE|#j|cm*Ca9PgMK%bE;p zCv%~%+{AYxQWRcjHURhin+PV0&!1U6pTmw3_qc6QtoLMz?5~;tyEJJ|?CmR`Z||{P z6y8$pN7=pKou6MlkH)KA10BmLJ1YJF5~JRi_gCi|*JTrH^2q^?2eJ~$s42*u<|EkO z#K?;q^5!IX$m{+G_72%I_9NHhs7%ss^m?ABS=9SHlBco(sWA7+VUj3(o?CNH#t~{3 zlLmO;Z0UFcyi1zEiA+6GX`}NYNh56J#^@C0+{V-bCW}d1H=>VYc@p*8sDf0?c+=!+;d-VG+=~ z9h_|h@}_HMb_L`e?MLDD4St_bz;h-c6+w;XKF5vzI_-q?QcG#cx`q;G2ppl+dy8+> z@l3Xp#+<~+nlN>ve0AdvtfF=diPcrMenV+gH%%aFctxTWSI<|nNM)k0UeAa4OEfm+ z|J<;(;u!-*!PJ$Qb%tZP&GC&q`i{>aP6W_AFmvBvpOir48gtIEXa;8Pr`fTyKhRms zHpM6OE+m)g{1$%#>h)L@G6 z;r}FjI21L;hqtg1P+Y)_o+lYTMc8-;pb z$oX5eTFP(T;OIiAeEtkdK|_moWS>-wo+tT0xF18WcIBEMa(iHaJrKS|uiZGJRco#1 zB({HuRqb{E8*hnsKoGN}!CU1xFLF7h<_K30Ih-A443&f4OlW9b%*DpxH} z6C#nLYgg&5%>z;#cJ}{vL|Ek5ecH9Sc#^)C?L)9FsbnpWpN!F=0_h)Kp&FNBWLLUYx(>bRIoo;KJUSz@;4%%--gxsZ&N;hvPqL< z62y>vZg!&~`TQ?0pWpVL%KoX7&qt7bA=+2r>&oZfUiW9o=hwWoLW=6-^CM{2UqU`# z|L)2zs*}%;uu zzH}zmYM1jgO8|fo*dvSNI?Hmkv5*y)4t~QK{q{ zEFv5EHa1S-3BeL7uLq_ym5snp7Fm}u0t3waGB%5>-wonm)L`_E&CcUI+nm6?*t5Py$7-g;K)20bG-IqIEP zP&~F*e1zZfd%-Zu&H^+N@2t11e^TkPTc4pprCEJXCU;zZWCovo`&&WN_IW)Q3tQ?k ztz`XQX8gOuskAD#Ydo9v*XRA;fbx@03NGa1_K)>H+qHc}`{&J=yos7Bz~ju4{7D8i zusS#jb$1*MOR_DpBpX9H1c!Ikz zxNR_m)NDjLbj&Q*)yi7goVl8i5Fv4Ym$fd2jjHdtcib4{P=cEVV4Uo@=p- zfThVcr47ZV{gUb52B0#X3p=@1u?Lmck2hhZ6X%Tq8^4Ol1A9pMh_O0f*@NMn=={E% zXC;Ttv|0CE!}B`+dv}bhV-eH=pSb{jd$BNb-U;(Xzj9>gYJ54D=*KOA9scf2=_BBo z*Lhvd40R@$)<6~}1448U!+1_A0{Nve-oEJdyvgnuofFOwoJ+S-z%<|Q>{Tu=CBzU= z3#93xED*WwcksYeIscBkMWoG}dxH5YoWU5IJ&go*foX8f%>4lx9@!Z7cs(-$TFE;)V?2>u;%+)4#x*fg4s;trf^?g9^2R0U84BVNK3cUCr26! zFISqR0CBSUZLf|8zAPLR_f{$pkpNmir7uD-GQo)$v(F%ye6825`d9!!N99T%W<0o~ zO?UXWjN?OD62+3gR`q?97pW#4CXUx!<6Y$28l8m)bYH+TRL&ZcJML;XByGGEJD#-` zkZwSE84w?&YMSW<&8cLw#-yLryZwxbUBjQWdFB}J)@H1x?y4EdsPMK(*)*F|EzLEF z0N_sHp?o67rD$EqMtl)wy_2c1^hCxxVVTy28C*AI600-Gm8^@EIjXE#4E-BuaSnHL zHuxAh2G@Dr8D!S9*2Njox*&Tadl!NByVDpc&;q0!&3X-0k3Sr?92K;Q~<2nzdK-7oqd@@_-y*yRcQ$ zzb!|WJUnem2=qpW6n<3eqI3$4RF0rq-!en+;U{$x-#}6IpIC83vqamZ@Gx)7vogc8 zuujMP1<~S8m(F%AcJpLPV62<$#pD47JdNEv$qL}?t@h@7z2YbB%|yslmRsR#X6Ic2 zcy&U1Y1D^Htw%it%J(Zj=R;z3A3rTJS%P~wf#$5_kOdBtZ$_!^-#ZvM@jFHV&!oeL)Tm5V+l z7WEE;+oVS}-!E`g)kBhT)Kp+Mkm=KF@W6tmPY3sZX5<|Cb=FVg9Dzy9eT7fA`s+x5 zZ0?bE%*1A27km|Hz>e~l$qliwFQymX;;EFW7A!FAPc(yqmI^|l_+&xY#!T}X8QSGRqa<1A(nq^} z73^;n$fz3mal3J|ZoHGkAW*0f<4E<5W8ybnT>nNAhlf*WqJS5+zD2A7=yZ+e>F@ws zYRV`A%8G^FqdX_!ckO2>|9u6)(rqU0n%c$E(8EM_`9zp_8&7BL_e$zy~r!d4`DZCrtQ zw0d1!7ac3Mz_r71yioo?$D~SAc(YOnn{4j&WO=)#Xy(*iUO`TnO!HkD$*7i_7|~p{ z)?qQSr4vaQeiC;(O4oBJZOFnYf}|AyDA)^j=moBt*k%#z&s1NKDUobT$yeeQSngp> zdJ8VsS)Yt*;Z?rAIy{|+5ycUgTFp&znYz1z{3|v@HJvFQqbqZ?xBHa+L@uPboy9YC z?ep~3tyA}GwHd`P>iVg4rhLUmx9sejeo|>vB40WsR^SNFvwE}+q)c>PuR7{qt=HyA z^Z1EO&|pcq(1BJrli3)r*>s9897dha0i@Yf40YIib|H?G}5hU68!aCUX0-;_bF;ZFgcM&5UBzYB^ zEbFg};8IKSjhiNw4rHv>b7sW!K7t<_`=!~T{v>Cj*qunD6ex!F z)|&yWTniUcaaNxqjPlDPH}j$LF$bDF*-Q4IymHo_s-~k3No8>r1^v~QaquIl#?`6P zv=PbaOTC_Z;Gn7&3v@L~tVL6VSA7Tj|Dv%Q;hVy{JO|!orQuk?ySyO0%Ox@1g(%6{ z^GaWMP1S&@NosLmLOwe!WiOgm1AN|wn(`SwnNOrEz~{-rvP}AefX_jC0YqXX7|cCu zDCf=7=wI|9#wXWk>dBL0n+*pg^BQs@jDW>aiVxW`=(sUeI`H_$7X;CIBS_O@yuuwc zxYa)oQT++b5Qfb(GB8->qwg{F!j0=TrZp0o^5Nog{g%_A3m2C3g+z9oc;lvRb$NTuJi5ZW3^p}7Qs zu4x!4VG?t<@^Py4g7{nl`wG8G^Bq5R`&`6FaSc0`$p%f9(C(@{x=&S(90-49JC}ZY zi@i9=P_U7AX^$AcQ3l`Yo(g|r4@_j;y;8gG!i4rw&}~brDmgx=p{bP|SB3>%u=|bA z?S7*IsZ3+n#KtHQT*5oUL)?`}lmkDEKW1n6R<%GHz7!-AAW1iCsFD*a_e+4}enXYK z(cO;_Bq{9`uc!(Yp=3X2CqpGf9{!Ad2PxS^u-08guuV2y)Kr2&!0aAnhQl$CY$rpRFlp~8UP{-( zMy(0tFT_`qzw8@x7KD58k@DM4+2ZDR2*2{*gkPCCTzv9R#FxMC>ymc=Ch+Cwe@*+r zG)XAc-x9w3YkiueA^ge^z8nGmzYbr1NoD`k;a83*RL{RIe&vx{{w(~;ZCw>oREJ-= z2}S-dfnPb_-s5m8wfOSM_FZ>=2w(n3;mfyecQgK1j4yvLT^Pcb|Ci#+SNwPgzw%#= zU-{?s5Ps#a5WjM3k9b?fcb-rF)#F#5=|)-@!mkYBS5hBqTWS8xzZibyk{kXk{L1+k zXs>}Q+XcTe+2q2?9<1P3nmAvJUuoj`A^ge^eq{*1GK60l!ms=R_?5e^AHuH;;a7(6 zD}OeArT_gy_!ars{yOk0PhV_0-4K4|uLQqx#CQHY{K^66R_417zq0YO)$>F66+lZv z_!R-jD)|S8@GJih@hcy^W(dEsGaSON2tQnhUpepHF@A;m9dQZxK>|Bx6RtX#fYhrF((M8hlWYCiSEWdS=}lf6m4z2h*y=Zc>`(3hIhQZJ>mW-LOy2wlp2{>n zzDuExN~w6kdH5_5kbN%qu}(zkID_<6&a1|ngwyO+T zoC;09I~2wi>a29q(r*c{aG3{u|VRzbNM5x9Iw3Rsv3_)kDOBEUZr}x zpp(EkLCp~(w#_RXI7-N|-Kxijhw~c4X9d$2-cB4P$h#G!lLEhW!b8BCfsTHNb_jGH zeC*??pG;Ke|6`nf8}CXr-r3c0-Cor2AXU|6YHp#ED_+k&yfkzBuwmES{^-&}@5^{U zYH1}#rum7?1HVoA+q}h=6)^?gI!)1z2c9A*wBe*ugUWpiS9@~lzyl|HV@Hi>|FFVE z`7<|SV#*u)##wvwn;SLG-`urIK|hJEC-+JDmwk02(OfvDu-kU~^2UPt zsrPLBX%%0&s#_CG{&vl<8W4`-Mb+zMzt&qpt94pYhMjQ`uCg)C`o}pRQWL$x+W>8P z#c$E?@<(rcO=VFwo@aPJI;)ZSbjy#w`2K%Brla$L--a*i12KNkJ^r9(p{Tf!^7)tx z^!VEy{?J`l9xktEtgc@(VAtd4^T}tux!)p^O<}sFwnWMnk*mJ)HBK)9$2*J+bXrYl z4oC8jTYAT^AaefoALj%$Lh}AVgvF=0c577gx^#XbPkP$InS7V9;D=nPZM`YDG|~0K z;jO-f|GK#+J8}19ZgjQ3ll%oLQJ)hwnF0oTag24jG|d5$$FtTl%6>JKDmAOU?%yc# zvoskzGD|JF!t2?a8*;%LD92)T>(AR)v1$)D->DcJ7YwsnAsmg|rg<%Q&9`w0H!`}y zQ@=>M0LC$@jWVqKz&-BxZg-uKb=xn*>*l7< z=H?R3O?u&L4j*a}?G`5OEnCYTD$SZpa@5n_Qcga2`4P(9*Zy~GQ|-#E54_!47k<{( zN+*qAn{SI|hr&p?!1ixeDgTO>hy*Q8FKQ)IYOlqrr&ZnCk|VPk0J>Ym1KCQ6&FsyU z&e@Pv0YvyE~;cLJrp96ODKeA;>h3@h5N^qex^0}N5z$X zxZKg3@%uAP-oOc!A|U?BBu1Rwn+}S~))1Hd$@o)7QfX+`dmI-%j+zRb2qV4I+uyA!i+@VyuxFgf~&LsQbC)TSn?3B;4$>U^s5*~#d=s#phfnE z;#YwA<^s!V+_}s+fLHhzdg_*{=qaOo6b~U4s47sO(&QVDpem3NvfX0WH*5Ls7P~GC zCM4CxtzSSGmLsBSPaJTRP5i7HaFp_GtitKsAiCyOQjf8h3;8WiMNgOi?NCS#>pkKR zcD+y6FP-PEZwIc-^}*;%_zP-nrS+i z>9vhQxgr0ITo}gqZi2ZY)M?{#cr$^~t7f(m9AP~rF+z)FS^= zkYaIb>J52|XDtOEjt;rS^E;?X;&V)zr5koWsTH zc)Inlg+_bD4g8i5g)fFZEQXkVNnBAreXpqW+2yI<^^VJg*F?vcu5#Cd=y+dXPP+fn=y)UiP{-#-#{v9L#|r;seIg%ev?KY*rUDU3 z!Ke`*Q}%%l7{bXggw-=g2a2tU>Id{UDE`wf!Vgx9A6SGZeWynFm4c@!Tox_+dq~=*1KSa@{>Y4 zVTyQFkoBR?NGrHuLh=XgxuiDTQv;&ymmWeGyH#t_kI&3#qHj(>R z>wd*Qhv(TjcfYGQ*b$&JxW1GB!6v|9VgV$!7cFW{FY40F^mBv4xc*fq3 zTA1;t)fLIQgoeO@P!N5XQCnYlAhQ?C|D@&E-^t8ty`Fx0nA5}@k|zwd@C5D4H$UQJ z=DS<~Igz2^Z@CRQqAEbNx)kT(O$t|!0$e177cc!CwDmF;F^k2`Pkd`Hx56~wx2Q$s zXM0&xuNaS5EeQ>oj(D$4mMr9uI1~;U&RrtzYg3dg#9fRckJ2W&jcqvumEK!?zhw(q zO?oJc)Akk{rH^=dZ+cO9wC!D$pODJ1mU4R#l5p8ewlA}#bhS>+e*6Vj4F_>+cTE zR+nq_uV~*>ABwJ-unDoneL0X>x~nUFV@|)L2!j!z}v> zX}K5zOe{q9^?U-cjDmp+O)tid6jfCvJJ)ixCzYHq!s~uJEh-RX{TBXZkuD%>dzLao z+`~$KnMGlVcDmkSav`RWsN&EQZxo53;?RF8NH$FM|K|v*0XC>4Rjjp9q>83?b=(-4 z5Qrm0%d!Q7sKSR#vGNM7yxQxT!S~BQfkP7KBH~AqXDu!C#d!balg|*X$jp+`N|i5C z%QQ?*-`~t>*XcK*+~-SE_sTb}M6K5=_$;;i2tGI4TF$>)byZ!VTj&l|IjqDg3y4|* zR=6YI{hyTJ;N|EI(&sP${4$tHwN+C|&|HxAQ~sLdg|B+ux6*{pj-`m@Yr_Fs5 zE7e!#vlyJb@eTXSh897_XW_X+9tdDvjf&M+Kz$n z1H9z-G``H1@QN$=E$6S?wejI3UQn~2$j&ynU9bbTV0OW_LG6M|BD>&)ylz&9*K>rH z((QY;3Fhb38U$|~%pkaT`zh*~#OJ+V&mdSbgWzMxv>K|}T~*P!&J?+^i2P>uz}u_+ zUDYkRgxVy+q!A52E!ntI?~uJ-JN{&~V;JUq`uA^e*~Yx$&v;|G1r=?#4Q{0`XY?Tt zYs6~pg^w}k75@ACKXeEmnlrI{1Q~^P|Hv{rW9zX!$*KEHDPCh{3Xs|jb*z;}ibtU41kWv|p`epab93`z>*_BRbZ$%dU{ZrnpZNn__(z}g(eQtqO zFl!qYr};rW&Nlus{4R1G^Hsj#y1~Btj9qPIaGQX~?%wa8Rjx}P+Wq?V@pY@0>?o$o zER*$jWV>F&zM@i~*jJWfU%9r|_N}w8h|GwDstgPnM@paCz!7Ym`T_`v#enIMka%## zqVj*V^JS~3SXDIRd$6h?5Xh>si{J=3?Mnxi;%--~%DYm*6j6vdnnhU(y2Et-5k$ z{pW(uVNY4_>?t0CFsxcHiITU}6;?_4E(zcnd@tsoIX|>QFgwaeQ-x3Cm`j|Ftz$~n z)*)*f8fvELpn)k>TgT}+GvOL9vy2a_=xlZltEap@s;8`Td#Z$@^-_T+rtD)I97W%WV#l9it8{)Th`}X&c_Ir%Ve4pR)TT8o<_D`DP&?&OU zsPBQUKPIz7KSheqiRikSM)38>Icoq1LGAV6hr3f#EoFEBqPHN%H2PA)N1CQqcNhfuZkDjr9EmxoUOFE-6-~ z@4M=Xg}K(udVQaAkFmc0m^b%s-lut2>Jd?nKTX|V=+ynEjRin^cUAX4K|7$7LEAzc z<$l|>;l+%4WxTLAi6CHS7)fnV=PLUSLrzjlTxH6AQ~0jB-TXLeKPv9MruO41TNke7 zwn%&r8yO==A+(*^Zsm7;5%v9@dM!DnjBD>neTSjX+@t!wK#rF|)c2bpsHpF1H;ki~ zB1oDq&AL2XpyBz*^>^A7)*PgeKYq&+IxhL;O*%pReZ$u8hpee!$+`O{rS>M zFkbfw9dVr@Bb@d=eSuW>Cs5t9rAT!rca2o{9d($9RM0VKN$BfpwfF1j5;cW?#lS2? z@>!Tl{@m+1pB>rTO+7}`_J!okxgLCfBDI=(4QaOg zi)dPD|5>u~P|@!O`#$BTUoh?66@k8kEW}dUuUg(ZZbL6E>sH33u8y0lI(MN*+H_I1 z$htZfq4egdG3&}hTMfnEdW8nlfzFW*^l#`uL_{qle0xTp3PX2)k_XLQQIRX^lES5Y zGfr3=i)YjQ*530Lrv2Y_F4M4}1%Fb)RL4U8YBL$?x=0E#=||($>K{?@Bkd{x%|od~ z0MdG@OF8D~8GL)m;QHA2*#^KpcJ*)cy5#5;|HjRG`O8F4#kS$tHEg@;SLm&Kg^^T1R$2hiqn#Q=owj-a$zPqw*rx*OuMz<2YJT{z_m)nvY$+t3q~(oYFqmBcIM z->sZ})V*T`k{(_QOHN#}+*!EZquJn#Qq?eCB_*Hom**4z zNJ_rc$ZYAuO33%|hE{)U?5#Zrog&-xh7<)3`A(FJE=zvaX?v%Ft7Ui-anAawkyIi_ zp^#0k4TYlC5EpId>v+D#SeHvYVB2Euxpca-qcc(_$ie6prg4hY;fUX0yl~JS?G?7r z&~*0}^6_Q;C#dRsNBDiz>BxT4>jd?jBkbk57ipS|$XEJy1$VR4dqmF>sIyID)F;|c zpOkZ!s*SIT`N&VRr+xE5o{jcRR7k+VT5g}nYZ~u!yQOaXNJ#ezl3%@^NBI~srFK-k z0Gv5ynX#|POPG&#(m?8gU$Z8)la}!U0u6@3R`WqEc#>??n2D=x^8&>*4HwFWg7Ha(+lx z4;{yXtA{=|MOMwDW{}vE^Xb423I4YdyDp3=yJMS`x#VCcT8VS<8Sl@sxe0Ng)L@zs$+fORrG~6x{tnK zssUg9!}NtCZOov1i;teza+J$(tjxd;2;j`j)x!2+%7$j5vFGm3h+3F%+!`1^_KjSI za}ir&KkfmTDdSN-xaRy>(9`(*P6Va+{uiM~@%dlZoWBPDVSN6+n)4%2c;fT7)|@{J ze`I|AJJs{Z<<+Y3^J=Qbcd2$Ua(P_!yzq9`NR1yZ<*&qxKQ=GHT=iz>%1vL%2YANF z=BNhzDY@jc(2wT0y=OMT}5nh1KhEfpA&h1~R%FToMyY&1mJg<(p z&dc9*I*W=u(W=TOqR5m#QN8soMw$2H3*`?CuS&+^$l>9ft#acTebcQz%(PAB;}U>) zM_d_ZwMK`6Cc$@{z*4~k497`^rz58?S%OS848}KQ zr9WWsMiSLe9`L(G-;{lLk(FGRmY)rJRB}BylUL2l1ZTptX+j%B(A+Arl+_r+uy|bP zN+9Qh8D=_@547tdZ7!AVkZf;7L9(UG_TtpM%n0m!_=SC|besXHfFY`pxnFi9AFr*< zUL7Hlo`b3DkXYEJI?^I8IWq3bXVsMM^B?!SCvd8974>JFM^PRv-^wyX{u&Yon>gG= zPuuWgy%1Mz-;!L}?gdxd^N*A!49|?1-4|SaJg>uQ?P|76zX!L0!aa9n=dp*!T2LS9b(#w%`>gfn0^3^uE34p5Q( zH&pl-;av3Qo(QaCO{%BeLX(`!YCZ!23iV7**phoRTlz>se82Gpe+?Z}Md~d|uDpM6 zi=IlX!WpA(8B)Ya1FeCB#_D?0VboY7${o3w&g==Utau&am zM-ehc^BmiDw^8^y^0-%=#c%mbkBgSsow5CfWkIEL5SGsj_g?^Gc|z&z4?J1A>4 zwN6eBbBwyxUwcf9B|3=yRo~CJE?_-nOJCY6s-P=ihIfK-dF9J5zZ1YNR{VzWF?!Kg z4jy&iIKX|sypj4X`sRq}_)zjQ>-a_PmVe^XU%UICj*h49bjJ_G$1l3$mG0Qh|G&|4 zR{romWaXO#92bq!@+LR$-fW}V3^jo~{@13pk1@b}jXooeG3t!G=y zTE>%0xet_+_gxO;N+46!0?7GK13cB1&2-ryk7#cBR_B_r(h+{vc`3lxzS z6k=e`-Vy>EuyiI zs&pr=mt5)d8xU+S<{JiUz1(?URNq^$R%$%iNdv&o^MD9g0km1Wx7 z$})+*`OzCXKt#ZNic69HXtQ`OMP~f5?hC#Oqo)_ZggV(HwH}#m8mlYr5dW?-NOY>v zJhPm-Oi(lF6yeBNe%Bg%9iqCQSV{4>VkKX`r$SW2e|M(N*56B%=kugj{F0vkfjKIT zD2Jb~JTG?bd_CptCuHGv;)eNpPOtiU_K^(4csA`_@%3yQ;ZMnh&)fE%2y@!zh6Dkk z;$y0Sae~MYlBPiiXjT5U5VY{4u?(r{Fj_ zI%}LOH6+~mSB!-3=3nu8-a%6}F%@G?jgJKxeO_Hyjcm~I*2 zDMY{j-KJ-rrssyck%GU6+#K6ubp7*o{Y+iocstjt_|yu0{$jj*_CTh)e(>7P$)(di z_f*7?kz^ZM6R&{m6s~jhHU`^poqOvq$7@sm&tSZ%+Ye{m4j38H&Z`kz!iOcz#`dQ- zgwNWnc5)Nz+-e!BPSx?QGXUh2P@)Wgt~4(wKUQXo-U z!R>tI-$f*B0I$(5=-MpyP_kje+JTKmj%fCZ8MXY= ziK(#XU{%widP+|yrownf(qAW{4m{C(X?=!6@SluoDShx`8|Rhlp3ez?V{8fWU&qR zMjC|Jv`wy>3_9J-PQgRd+kUCi6FL1Db9b{DdWOs}h;8Zq0ZJ5vLN@iAXb z1+C*TV4gkx!Yn^6PQ^90I}z(ueX=P%&wtn{bdCL{+g-?eGt%u! zZq79VYa5MXnM*wDbi3oZwK3A|<^@;l9V#KZLKROcy4|N>u3a5VYy2V48oiZ1XHue8 zF6BHGVC0mLprj27zy1{ec!jN|=*iAqK7KzVKRVB1Ka+p5{?F)VKKV1RsQ8*ZL{&9L z4JK+xnVvVO_fr0>i~f9Rl^Cmol3EXra79xd#okm}D>3@KUuxk>-v6a5H2QL`ks2>e z(--*6qRRrr?FDtri`$C)v@eYyswM&a8F-ETLq&Xp!4EQ9K5!PUmz?)K$M z{OvCK9$4ARH0@zM7U`2${Cj@OXRowbsb7!b=PP{W4_n{RQm^=9e#@UVu&o31RMvO+ zmdg8f*C+o2p`dR5&?j#;ebQ|ow#h_WGvWupMx|3eh;g)bMmFw%*4fg(js9e8h(_q*4 zt6UGL*|B^3{u7zV+LtE)G?=gDp7&oO!tN;kl7FlHQdGqMV1o>6y4t$lxFNBIf%AIq z;$(2O(LhrZkJR9a`l2Q_XOoX#^wy2bpVKa`!1JURs=XDxFdY})mH2}BZ}6y&RN#yKm`$8=#S`jn75O;0CfDh&IN`ph$0PqFhfGe@oXOnC?A0j6fB?43|ehna2H*HmJ*y zHn@9*-lYxnYBy!DIzPE!`f{t&E6C(l-i-pKw+yB`rF`pcRHWC*(=HGZI0q#8Od3)S zPPg@@zct_vtyiPLsYK(T8eFUPXy@D^w)N?XRArhdg zq};_Fx&m9VQ!%3B&OL8*yc%~n;r*iH!`s_pIzC*O>Bv358>-G}dzXplK*+uBIkdN? z33U!d^#z1LsD)yF`kSirU#aK2Av_M6(FgYyd6$G7G1D-$MYh! zWYomcX$L(em9A+UUp0;7@A)g@sW^lDRSwQSU^LI^c4{GGI4s;^nvv-v`QBI=$#9kC ztMn3tz~TMQsloeQ#V9zu-zxNss{c;HHcq`&6};a`HF!THYgPpH+Rz)~4zRF(ZViC0 zpZh@F0=hXqzaBlL=6+QSH9l|v`bf?BLVW&)Ep_KV8=rsC*{0(KeOh$BqNj)_MYEuJ zbLvXOp570S`hpip%INuj5F{wQ&F=Hxd z10sh{L5a!t)oU;*r@>@e{c>yYIn!arRO|+7hv+oGyNP4HG2=FV+39H!&!sXr$w>WQ zMjR*f*`J7@)CpyHX*yR~1UAR{*hcd4E&nuDXhvnEA%? zq|yXN51r=uWWW4X_T*j8U$r2Z-e=kj@hP;qR%UVl60i8>NM@%q46o{F!YfSG$oaqa z3WvhuyyAW`Yp)^n6>1|^C~TLLPlWICxCfQ44mZ9E+A`An)^cz0@|5qCN9$|xcpisA zN^MXG=GdUE({aanyMxzT_$=H}%cag#I+1;}C%pA1AVcs7DX6u8>&E+1O0Tn2fNRZ& zll5m^=JmW8epJsEkhN>ff%%2CpshNta8fA-ZJn_TS9l%i9*NsY_l0`%U*)SCd#m){ z_`#Cuaqz)Z^74e&eKft)j3rfy^>PxzOdyEZgtSwU;PfJh%}33$KPi^r zFs>lI?K?2Jf`am==2F4UW;qZtz?t+<9ofBQ*88&TVq~^iktxCK2T{|tmdh?K@oE}U zyD#&J2epbW`bcYFxpMOUQ&`XtkXi%G@&0B?mgX8m339JQf?U}Natk6sF5TCf*j6LO z?d=slVp5zQe>(5~BJXbvPc`1t$rwp&P-kOSrox7N$+*{%+-lNtC#`(F=RMz|ue-sZV)i_?yk?8h=nt7dEhrikm{_0U4M1C9l zN5yMkuGM&$yhL)M%Mn*qB*92jF4_-f;sxI$m43w6wH|eg?G*qu8MOJla<7e~%UV&C z%65x*OGGI2%JP3?<&Ltk(DT{gwDBXG?{rBZPmGcV#6?WsoEm5y@2HdDOQXhT`d

ZuHH8c98%nUxSFlIIPJ4{KdzYXf5WC7u~EAmr$=F7FrF#O#%br-qx(7h#pR;K3B z`20<)>+ZiJKHv14y7M>2=Vy{{tL8mdMd#H$o1nLQW8NBiOr=HBKi%qgT;-@2+dup| zcbA`h>?P`x58;RYH{gffd+Gm1{Lp=eo31z7$epuyVAB}F5205_xg7uU_@RyOboiWa zIQm|PANtb!-L=0ce(1RXLRiHQt;Y{3e9!^z`{mm{a zI-XF_-QV|@#t(h7;}6CUoe$1@_Xd^B%#RD{(3FP3-&6zH!8KXly6I)!EkKlHbY z9~xKZ8Xdw9`J4Y*@Ix~!SI`iCXcMT(zc7C2Q2bLhe*V82{Lthhjo+B!7vaK&@I#T; z^}ifHbkHGni{_8U553)@&?+F6zXklz%Fk&%{t5V@OWyY1f*XsC_I`1(E_lc$B6Q@!_Xd9ub z25R>$21((dqw@f@My7%*$E*6qE3{6r5HK!aAFL*z0)%5KF^MKd^y( zN2Mu5PhOWPov=ZuZ~lFm*9(puzDWqXIB&=F2*3F+oJ^6VR7nMkZ4H++s>spJcD-WVK{Jc>L%G^y2} zeif-QTrL$=9L)Ob;xFYJx1~zc68>7=+~2q(NePt8#vkcTTGhRiudQwD4>}guSPLOa z@~g&et%>Ez5aUgGsBu--j^XVGChwaw+V7|4CA9>T$9jb$8R4#uKB7j+l@a9?9Y`276w<)Z+Q<>tP4)iPlT`ftN&o-1+mW=h4Mn z-bE{+Qr_?HMQpe$S{!agcs&n+W&u5&ZL(FtcvMzJxRgs({5K;h%yzCcse#nNdu9Fp z9LaXHcLa`X?9U`Ng9s*p$?9C`6jvJb)68gwP2v)4Zu7eP06b?(m+l7~dsLRnv^{yd zV|Xq&JeOSO6&A62bIt40l%S#v%bHaGb0e~eSF(*SxD4O}wTT6Qgpyc*Jx#jI zgQ|O4=`v3jtn^HUIgNx~WyvXE%W&@d8Q@lb4Lg}+Yzx8(W-Kl+=}?*&8NSpjF1Lmo z{ydl1mQ6l3vl&o$Jsw>3{*+5ncyQ_?)ZoG6JU@KmD#L>>2q)3jXuU$23`W{UoYqH4 z3!$>{pVT5OjT%lYC~;ckgJ8Tx*wTu-Bv9*T1Zqv%pfh;_wN51Q&e}Oogw1v9Ge>>} ze`}_cqF&X&%r^%6BuS_A4h?uIMWXA0nWMa0_nD!SFQ|9Pm%U=B)!w)@>%S7MufhT~ zgkh#rQ6kB(Xb|U#gqbY2_n*T1AL9K7Cr5jQ=k==6DZKw7z5n1DI{9<=el4bhTSmJC zkeS4QeQA3%-`xb4fsKAVUddgrsVxq@n+Xn5db{Krg4=DutceS(Q52zWjdTeh9c^?a zDm?PnGYS(c#u|3=PV)zf5lPI3jq`aEWyiw!QT+^8qVV`}h zlfJ9Hg2mf5?jRoM490m4<4l=AijC+|Qtoh?v0kIGR)Ih=+1XgTdSflk_gjU!6;^L- zQ+O{guhOqf*Fcnr@nzDpaw&Xn*XwL-mWoQ$D%9#>x)Oq&=8T>sIX(C!9k}H5dvRdn z)HPs<7e&vCN3qUBOqj&0awF$SzRUO(m+O1Wb-rR|ipf@qy{TK1CJA^w@8=bn;9#=z zXOef#`dp^@F3tY^kiw{2cc>K+&C|oBldBK++qE&7paps}>l|p!E)P@dg)S_oKmEhQ zmAaeQOciem=evWt#uSx}HdINK8PrZ&0B43lYg>mO-DZz+H$kzk>2rF*NxY-{^p9TB z`V;;;s*kqQh2Wi=zwoY#deX}EUQR*QMRkh4f!Rx(x?Pc zbr~vLlY7f0AEfduVp}A_eN~bl*N8M3XG^JDV4RdoNkU5Z1=ZA&H=68b6j z@hURgUTO|$dYcH+8%#jxvdHqJMTNl&#mh)I+BAJhDwup&>BIyDYC3(3s`Kyl?`vGu zN+?-!b2^xc)H6WMn%NDF{ra16*`{vA9sl%w`*PbQRXr$d64&?RR|+wmQ?GLN(UY( zVXANkFI2z%wIma2>`&f1bF{y%anlHkM{Kf84C!FtPw+(N9b25M9oCE1^Cb23QktFDQP1I-K*Lh(>@Ikt694JwK}2 zbFWaKedHTfw|{IIq3kk2Bf1$H4EQ@P15Gxo?>|Es=;PsTBii4WBEvx@p5Wk-JYsHcl5>uil&whdwa$|0bT1h zE#U5*v-V95*jhF^?s|IBg=8=mL05bnxeijn>4&+!u*C28S2eC}ZQPL}t>&Z$Q$hQY z-CLN{ev*C;;M!Z#+W2eoCD?TOuVfMr2Ga|ziKkp{95jZXqcPZ2DxVs43-lF*5-PAZ z8s_3nNH(z3v0Ng&RjKiGmlL@c*@mo_xo_P=YP^ZV$|IhsUF6|GP*AO(@>$Q-o!?=y z)I{=;X+3HrQWk1vY3_|5lk-4@I$kJW@g~XQZN0g~sSNn!Y7#p1lQ*RYl);BHIx{}us$ zXSQ)`KCvyIyu<5OFuz)oOYF#$GSq9OT>KV(@}fgG9>F|T;~?)KZ^^xqdo91^nLAT0=U5!% zjgFhRNMp-ea$`7&)e*}@(-&!Vmo9CnblMV*X(lWn?V_`40E1MjrTAFSN!Bnbky+I% z$$G~Vhrnj(js0zZMAEU@y=Vt6<5(`SUKz*YeKS||t<~Sq8k~2dpT04iVvE|=-JtUI zkJPMPuz$gR4io>0A)LtA@Tt-#mu&ZQ;#2UoRgkR?*3^l8>v) z*-FW}bvWJjlTD;Q-&lrQ#4r$TPQ@gnAy=mL8Zt1#89qUtL%Yr%HrBzquBJPj!MKQP zcs*z9FUKgX_9d09T}lj*7e<(Z4EhZxaGz_BB?7I;+p{jOleGuJf^{B^3IVoO&XpA- zoXAf!AGLDw2X*Z!UF-85(}1ljKf@iNT58{|$iHY*nlw$SWCQq-3Gf(!ngY%VhdmG4xKC6QbvF+9wtKLH_ku1XB~~<}GmghY zg9N%zcb6_zV&|Hja%EeENGYzGU{U(V$m-cqMpY%Ndj~2E@dHh+33jCbRj1)6u+SMuwBeE9H~+p zsmNDAD>XiWmErLp@gGhHA3L&f1(wiR@Qh77;#~VMz2g3(NCo1|a6B>S;Gx2`RCG#w;?{Po!FqE4S&6Ylj z@}c^v9m(M17#&hvVay=Tyfp`qv=s8uV{Y?zrn0V-h zYv}qIx_I0MTPK|~f&BOysbBt5Y;_lDenOdseC0W|l%vfX^p|hhQT8w}#b48P z>fVYfVsd$nDpDzJM6jK`HKVGjyQKDrE~SFoML=V{B;!vWIkj~5+aismqTFkxUUUKV zMi;P!Exm)B3TH(77VEuJNaRv5b!1LO9buVu`cOI4k!x`yyyUbIqi2IEBuZIuEyxYkSmP-)&voW)Cxgmfnk$CprJQ^5T)& zF0Rb(uG-8vw!om;jB<7Nm2ZF|hhO8RPVOl0OMAjAD#ykKI>ZJfC)-YN0#$_#oH(sU zPIjv*`J&hJ4JN@Q%iSy{hNwKo8fi6gV`=$>J!ZE$xKdaK)$0thTUkMYdVx8GZ~~*8 zyVT|zY5DrgG?BKc!hbfUizdLv^4DfdmnbQz5oXs7$h7ElBpz0Ja~ZXkV)0PdnHrJWy9WC5f6nst&rzCQa_b!7*XbGqMcX}2nS49>(soXaH4eD;*3RZcId~ciK+^z zM`_OLMec}B{T_LHtM!_73E3K}?u{TDL~G4@s+G4@{Jc6ody^Q+^?1-}KKCSxPqQ&& zFm}yvJ)XVgsPZBD%TeW&|BK%@B)?%u9Bt$o5i>Tfn?-HP@C8YhW3Q=|EUUata_^9Q z`8O+HZl3zb%a?6Mi{{TK|5wVFAL|k3V@ST-gC0^NU%rh5HT;&hf7D$kj6&DxRUt}l+0jc(I}tX)&AI z@6r#ww$l|aj`HK;>-e3^j|;M7(EPY65#Guo$tBKpj^sf~gp(V0cLQ1~ShlO>3^)F} z-2UCQKsZZFb?&~a1vpUI?zjlABq=Th!L?H_IwuuO#|0vv>LNDSE+)0v6_c8I_!pT; z&26gPJp7~O;omnE>@CafV)IAxC4Z|CgyMTJ5Mf3W)r)|%S30kL-|k7Av)WCAByl!7 zNcqx}-TZa&M&_@)@j7=rGdkY)+tK_-$H7_3apiMgdR4lV{;tfc#1_#EmmhZ!fIwY-+&%2y53x|I z_0jcyf0=9@w@+ldsy@27N?m%~3@74J21~gKDy)0zw>If<^{z^K+-PsR8l;`IC21=4 z(cAw?yRD`q&ECp}J8GQ2xvp@X+uXg;=B|`7h?`KC4L53nl`=5?p?tI(|Gm23X}h`; z=bu%_*`-+0c5jecz#dFZ-qT{H`1R%g0sZOX&8@%eB`@ zC~Vo1x0KI*Q9|Wp!~L$P!~J6BsuUCxP=qZ4Xxo4y6*FZXXes7!+nUEXhd$(fL3la~ zDekYUluCh?aJkHi*ad~KCB5sojXj|K*m7`KF$t5J%lr1$3M)~3#;)?oYPH3m-5Uuf z8u3&xe-FZmZw17n)cUb(a-C$8SZp!*#5Q|HMA1lA+^Mxy#_DqK7h(ZL(oL0Uy^er# zJmif6;ppZPP)dj4Op%1r!skpvIjmknp(>Q>{l3cJBcCX{u^L7(3$4yPRe?=X8OMPm zR_=H#$FYQBmEHNGgcR#y#z6|*d!7OZXd(;l#$f(uc`hB~k94ME=X`B^9Av3nuXlQd z3)J|w1*xC%Z(R2b=_S?pcq;K=YjXB=l3)5-8#fsg@D%P6DmBZ$ln4jjU~b0N@$xfv zzmKyl-g$bA0@>r`h1DoT%U4}8esy@GKCAt+8hs7;Ws z(esz7yR&9{J!P$?K*B@T`_Zelnehu%0YaI!2NNRN^Ks^FCq%rS05L*MlmHQkwp9sB zMQqvFYx2X2Dm}rCdtcaVd%crKgx`x~K;lN8Med75z(_`$b zO0F?#H*EZ;8CpT=c1)i%5YVUn`N!>7_v~Bj*>!xc901PHvv04xt}^#t&q7^4^q=i| z?0;oBdvkxw1#;HsOS$n0Cu?N7wu2AQKc>50un7P~<3! zIjmTFJYvPKQ%_+eGdYMOYvQo-O#o2nM|c+R5g-1>*WK~d==g|*?)bRq_~{OJ+!P(Z zh~-t!9~vE>I@2BR>yC3l+j2_xSwDNU|L~d|#Xs!rX?Aq|k^BR_i=3EUcO<~19+mH2 z?-f49?luy%Hn>HTW3bdQkW=AOCvu|6&>zw!D!5c_8|M(mtsxYV;BIWcbRW>v?X8V3 z7&MhCe+MV?3+DWPt^NzCfOO#0&>HC#K8Z|kt0)4edWC&xf>-<&zghs=mu__dPaSP9 zkILXJLs0_1#&7vwr^qm4myHkAIQ&;lySOpjIVBWtgSNg&Rp)t%C{6&1ho4w*()~xdd*F#c&U{3>Z zOH4z0oj5YE1o4^DsjrERHTZuBDmCA`n<$$a`Flm#URqSc74oI=Z`LSWGy^B?BFciW z6(r6EMu?Cr_bAPxBKG+MjZY*yuERgPHS!OCim^xl{7@~&(aF2#j7kL!<0Z{5q{qHq zf4zn){CCHU3v9mnX?Ms`SJ_tAyl!&7Ltb8Q0W|P#uc-Qv<$tuyO|}5S*Lcw6A^f)b zXpT9O>(-cmdFyi~YySW2y$gI5^_l;lLxKd2PN-C)r3Kp5 zDh5>Ye?QN6&Lx1i*7o1+3tunEoSE-@=X-s=&*k$x&nzC$6=vc*W@2Umka{WeuO{5% z@>!MPGtNr|vv^RTJFmYif27N|MOyV>EWa!Rark*tc@z06$FJJA)-w!tbW=W4qBMCJ zud0B(wssk<4)qGj%b#&k`23<4K2-)F&!>h*h~ZO*rA{pHsTazazePS(vK+|Xwc5WS zpUIyi2Yo*HCeKA4wFXuf&J#_kmvZ|jYd%*Iqa>}~Pr+_6coaeHokW{(2>9+It~;g$UQ$bR6*h5M%z z-LLz8;r{VO_n%O`vswK^@XFyj%hp{}DF0N^{SRnhLsR~q!hKoOvaR8Ogn>U42ek2& zJOdArUm~`@R#|{*>V}n`TCKT((|L^U+sLU^gwah$9x_>hIeS|lpnk~=tla#$+HFHW z3U>D{MPP;yh?M&{2S)aor(PWjE@w{Jw7K$z#d84C6?Zasuox|=aC_Oui16c|`&odi zI!c1ZE+AIZB0DHzbp}`A5#p{hXw{I%FsDf&Q+H5BQCHU+N3)(c>w^E_9>;J<99`*Q zOW=|HEc;L2D3(0J`5cztE3Y5zm*IC!ig@E!Bop^0DU5Myy}+a}mW0cQ01XHrX&jC4 z^KKYt;BH>0(U1xWd9xhH3gycSAjX0G4P=mhQIaNO>#R&I=aR}Gb5|58NvH5h6+tSB zMG)|GbuQ8HmWC!3;4t1H%y!@eE3FVKAco51Ta(Wr`=L+F{ z6#e;S(4U$e#ble#p+C3VIK3(Q(`x&BX?r^7f!(yiKtH8ksF;c$A@p-L1qJ$fCVz)P zKdtsUZt1?`jn{{No^!G>&j%t_7O&@(x5H(EIPb+Jm4-Fk7ugMNFY}+!u(v3GkP%FC z{WM-_bqwfEK7{b$3!e3zl|M#F6Gi@5QaCq;sZ9sk4=I0mycg~V@Rm9GLm`gE@`p@m zLH?M|uvv0fqoLfae6rdE+djsnv_|AHCe?;rfY z{601O{n^XS?+=8(|4uWZ^o5FF@Obmg^HTHN0FI&L_~1*IJC5c)#P0L_QNXd<56Ld3 zG6VWC0LO|?H-O`d0US&IQrVJ*lQV$hxy3ly9N>7-a?B%&HeTUsG6NvVX|oBfwcVuZ z#-qS%m%T|!vK<099)_7!xbZUwi6VFD+_%AJ7C2Eb$j7Pj@-^iRxpp_+iCc_Ci-N{Z(3 z!Y|@i$vhbuaZXDfFB}23&6`p-FC(f*oy0rb$cV$>!cy>1)(#eoJUU2HoKYkx&Y3Sp zOEpp4?9WBkXg%uHE7g|i#i$7w=>1WvqY1-Q=(^plu5MOu^t_06S4wS5$ei?R<7 z2`BDh)IlYhZ(J|bE_f9N^+37n4QB5vPz>~Z{F}W9=cnO&F!pq&;v z2;VPXR-y6n?1qO#D{c6z1BFFF`yWzR6pgs(2VduW{-LbJgY1fSbYqk(dYU# z;OY{y+Lo}It&R@~?~|AE}`)hwM0?q^D?TAjc554M@hCme51vx zo|E)Oh{bXA8z~FPn-&Usy5RDH-tZO#U!&1V2jtuox!mg9EEBQqL*P)}XNEp*zH7C0 z==1sV{3q!3g8gvzW}c-rfp8q*Ij?HE#EQvE*VSJD8PV*soWH<|RNW0SXU$Wg$#Nmy zi|-vcDfAb3CiEBRL&bepbEWt%9%ZebkH0`;^-$xZ5Iqz0Xqc?{aT=`eXJ7c1EF`7k z;d%XsgQm{DWx(mly`OY-*p5nFTj6&+0B7aP5f>8ZEi94$PzKei5P~~QE z=d04vn)<^CM~{bi?OzQ_X>sTKC0F73Ws~Uo*W($Ika8E~q8wioWGEfZcZk=PX@o$k zizE~>hu5CZwERJM?N1cu6a8tCKW6qPSMd8=jGS42*`J_~4gR6<`%9Pb`*VfgPhcer z&MN%gHkaR@%>UMLT_pVc>*4rYClra%O6`*pJx9+s5>!KZLL7e*htQDt1Ql%GwyrJ~Ng$ewF|&c1l=y4-lZ-h1aWQUe?2QSTJOES%|H^b+;< zQg5Z5*+;!+@thGJ`1f#s+FljxJDEEl9$wDYa`y(`;BTU4BmSIsHPCUu!SMVX;;au^~ zFJA+9RpNcTeXF~0tQFtvHB=BBV^m*5MZMf_DC1Y9KXdObFqI{-emv>ihBEK$N&<&i zw!6!YcE>i@){K7l>`Hw18+r-pu&$twoKw@ya>y*Ij5L(cVVT=k#R&3I17KoehRjL3MabOt8&2js^WQ7=O7F_D$yb)g zwyfd(A#3IqWUrO(^SL(1@t~CeRsew@FdOJVJl2b%Vgtq2q+$&qqbimJYo-niG(J+JGoC&g8jECiWqAPrwYY z%uAL_OsvvR*CwphCpwbm_<>a9(X{uONvy@BKkXG3QcjIDo;FVGwU@k08lkFhfdrMR z!(b|=?z5J9Lm~i+G+y?>N%WG44F>^pvj6cF2vTl;qTlP!(<50Ni=Vkt=#RT<0u6WE z?S%c|BpUM08heK3q0dDS8mk|0+&TRi>m^;T_rzhr(#@TlZdYvufBidIt0>1&tpEIO5a?ftpSFm8o6A86&O7AaRZ ze}a{Hh&_ksBE>kdq@A26T20T+u}*YD%D=UwWEXX>S|iUScAYkoDQc0>d{zmLobH?! zzA6Q@Io>L5j>lbWG~QX`yyhyDT`bonZhD!!*yk%{n?P0v6PrIga>#o>mgu1z%`hc2(MSXJQyqcBrp@ii`n8U7WNH z?-TcY`Ls8^!n>k8?wwN>uS+kpI{pdSoD!zhXH zG08f0*Gr$RPT#y=B~^dDQYnBEs$01+6qh(m1kjwb(oFKU$HBQ}o{mJhcOPpu9_wZ^ z-$y{377DE)+U8)=A3L7e>^7gTr4o2wtD{awN;`+GCRLhV!hsSM8`%;mndyeGv@hpU zX#vFUd7%QbyTd);^z1C9NLET4y0FY#3SC&Cmm2D`UcTrzyvE%@x$7;}rg*EQDS0w+ zy?hGtp>=p`_5J8>$Gt!MnL%E1+jsFiBp4EJC7dU?+obzw%3XDde8mt={C2DOmGb|+ z9?3#hncukGVbNX5U4KMlI~eq;tuYz-I*^UMVG_2PI9(A&Uv<(@PmU^6<8$2i8cL*g*0E^ z)x}AWBWZC?Z{U~J(`p@fziq<>+U)jnEl!M1Xbl5U!q2XxH?>+qgO(@wha=zxp<$tG zI#C*u+^tN-_E@c@@Fxtl%udRm#=Su+qvOVgrlN2|OB=#VXN+E3I-jx3pqVC{6X6)iero7`)u`O2H3sOnV7766Gu_q{X{Aou@Ou4q*GWRhR zYOwp#;3TCpe-Gi|WKFueYli6l!f0?IcQ|j8?2V+vZ1gXVq+`3Sjt8kXO_17*#7E#* zu&vdfMFzZZsPSH?zZ2b;eEES?owmC1Lh5cJqT6oXY)+$3FLQ|ap@ zhH2o0@O!c!g|m^jtW@lQ<|D1u7n*PEOhxW7c4>cX%&A){Bi;M~CRgT!BTF5dDpgG-5hr2D z#$N5z&6r@doi55IM2*S%%sq{LA4x@@kGp5EmNnXvdqx>v9#zsJBO9=ErCzZ!dEWr= zKE28S{gM%4S@gjc!SGsQaF6t-2-*frOpnj99=9s)*5^)8IX^cqfz38H#!}tioZnVw zHxt9rU6qR6P|kO(cKn$6_9`I&PDH5&ziOpHu~kA!tj-na4LE39Qqf&V6iXI2A=ra0PU(Z_||HI%=jQzufS!bUaYTS{JXJ97L zsEX;Gna2gSo>LBt-&*}ip;qpo6WPaPPGa&|8uzhy;zUt)Pt!AI+vBX~iM>mX3sCJt z3|f>*=w>4d<7>&-rUfV1-jT7Rn%*S=M3KwO3j8!BXx^p;$J^G;N6w=RJby27FxHJQ za#JdHU$ey?JhJvE>$)Cm^~Pibq{bEp<}}>#?Z><-By8+4sXFx_w=#lr0MT2L_D)Oz z?`m7YZ}eX>oCy7dkYzMdl*y2Eih3BBIK2uk#1#%Yrdp%#Ot*UTzPO zwt6I9Zk;c5cER!1%`swZ#hQ+hn2|gS+v~*AEzM)B)iJv^R&QO`S8uImQSPO^fhd=8 zggA@9KWv_ux_~t=O?t7EH->H!Z;*jY)!bKTC+CX3xlg9fjBCn2kJy$M!rR_!bzD!4 zP=n3#$2%(Nougyq&3B~1V0*3IMRNg2WxOCZp7LkqCOW?wLAqh@j zw=ibG6Wn#&P2Bw;GXX;)1S*&mu^q_ zRR78mb`&ekW+yVE5~S*MzihmSe9_I0yP(|muNV=JJrXxZu+`8btn7?&QYgBa2R5{y zpwyWe6NoX?9lg(0R@FTde)h~sj&HL_D|QWxBwlNGxmV+l{X{&r-L|H0cE?~!NXB}a zo}}4R=z`&*^XzZSGU6yo;++epxcv zvvb5i-0b(H7fD6B5m9B80{{Mm6W#A!S>9J)CX--pF8mOyDAHFiLN_M?!Fb(dIprEh zCV`c$MU1X5v7@^MEw|46C0^dv1y9Laso4DsfN9LCly{KdOBYr)#vQZRyIbs1k8p3~_cWQMK^B zNw0m7TERWEcQ;y@HP`SXa;q$a%mZS&sS?_TP?w$E_!9eM4#HsqfI_?6&kP=cf0djS z{n0+Eb33j&f%l)G)TR)_e_5oW7q zDAu&nZCW3<8Xm=vg1W+eH0~yDio0{WMPHG<%zlYbo7@2I3InhP9{glH36hiNl>5Id zVNDT^%4*v}8{oxGa5qQ$ZzUkHQ8q`*UxqHxi!)TH4p7mXsS5*B?wmb+|XvC?4THx8|i*&n9WMEz2nmoqIW~W z9Z!JU^>$_*gLpnM={~(v1mjq*l@UH8Np$}z2mD5-K%SVWk0jmg$><(}0e-?7b4oI^ zzw%pA=v*b*_)7Q;N)Ye7Z-PM3tT7Ec`F$3_!q48tQL&Jdog-$u?3bS=S=;+e?U6p6 z>ZB{5I$g-0)ltT`b)xA#4B_yJ4xWU#nsu+c!<}6opdRPU0{{JB@I}3B<3$$o!Gm_` zmt@cwFk+9Xv0B=bg2J|bMM&gj{8Qi;a_h6X(i(FGos>A~GbzEk;SkzDKf^fb);}I6 z*QVd+NWVWvzb~ZUTNXYZq7mXOLewwe?8@3mN121&W@*SGVO5++Vuic?YfIoVZj-eE zQ`K;HbdxNL%wVMPD$LzY#}~Rq(uDr(lm952k=4wUJDK&hW*vOiV3hMp*P)&0JKd!d z7*Y~C{t+GfTVYP zC3x?!;p`&R=)%8aaE?p58xg`QlQ34S91Mb%8l3l5e(U`*A7&kOhvQkFTSv~WWUO1( z(RNth=-tHTZl0oi0NUG#y<}{O$O}$vL(_91T@>bu1&hivEWhx#McUDMT}Wstui;9^ zTUdU}1lG&sv!`5oTFKglNJ?YVet$AW6nP_cMhC{}XmaZ-q;N47m} zyJcN`*5;JTCfpN&8L!Ffx93P2i4x~admzft-TB3O(?Q1{dGf!=@)pnFkv-G(5=Weo z8|w6OIhS`%)k`9kj+}pqUasWwj@f#NK4s*QpVP~3E-y~%B}8rH*dOcVW-dR|sFypq zyp6W=wVhm^iYb80tU=Kkg$}g2gsbVj#3n;!u+s73cXT0P45BbJ`n;wQ8`ou*%$CsN zW`F&u&og(IyPe~*%4y$f4sn@sM5g1}fXO%>0xCM9PLF$Ml*PRhId#%*zaVc<$8_CT z8z(mG?0BR^7Vn$JBaC+&%x~;FGdA4IkOpFo_>SOdMkbv5)j3QAalo z+-9Cn_op5iSQH4KbNp)gKmuzQ$c6Z0p`iIan$pZwpC94A(D(uGswuaOr$+z$h_!Y% zaRsB#yLb0IS@V4ilho+ZKrWUibQX-qAKFpnr{`tmKp z6Woqww!~f|XiRSw3=RBBWY8-s*RHY|thIxgm&ZraYg;zb2SYd_I=GJh zX-R8sA5F)Jr(fE=wed+xZ+k96fuT<={1Aa8{db@ClhIK1ZZ`O7j(_@%{IXV0J6`O- za849g9JjT0=$4PtEXrSP%InuDd1S8G9C|dbOJ>D(H#UBlHhn-$51y6s&m9rT_1{_z zS?`Tx$`+4E#xyI=h(XC0`O&?R=-Mp}hIi3de=x`>n8hFU|&Snt7(m zYdD#-A=bhLakrN^Z2!T@!Yu-Q-(Pp}B)6tHXEZpLqKLzG%eVG)<^uj}og_lT_L4_RaUonCi^F za;xJSPDtS*F38+o4u39zEV;uOX|?YXU5JKD;0^;E`n4?D40G$M-_UJTLlI#y44a{_ z$9dL2>Qf5MqOJV7K$>j*qbm9M`FV3!lw#a9f$vR7NgiHl?p`k{Dd=kp|1Y5wF%pEz zBNg%EGPzjJ|10>>Bo{0Be+~b4^MAi6P0Ot@CDs@Ru45K_)CE((8q`~3E}3PGng4lS zTC|dX65ZCAE9YBdT3VzVZvQ|z_Q5HffMt>0M0;p@LA9?oobXh~@4A;l^Sb&>PbmW$ zrRjO+b{QL?`{tZlBd3+z65gx!V_YEb>nPkVW2NKet_{aS{fHcWAT`i=5uuC6bFB`Q zeq;Cmt1^NY%qZmsOiT7EHqMseokF>ing@-yXl_5S zKa(GQX-EY%_FKg*N9hN5M|-wCp2UAiD|W|{U};^%j+|RP#aaA{Oli{w>*mhx%94^> zL`vn&u|SS=WpCT*z*1DS%iPIl;U~~I%Mud@+o_fbU~S)m`Gxi2wQXN7wMZvOH&as5 zldWv5zyUMbgXoXdrN?$Fx`ag9kreAHv#+}8PCh-BcE0JSYjdBjJowY$xytveq^h^} z{aU{NG5vle-G0;WPs@G3N;*zNdi~7p((~N-^Zl_>)v)g$^>k{X!|;@%pQz{#vcS<(;lys-6~{$+?#Frd11T zAelMZr$LSS^k3F7T89nUW2U}Dk+N!O#u}NOE{|P+>-N&#o&Y@_6kwA(>s3;lF;Tyh zYNrIZpj68)#nz_dt>+bBi7<|N+FdUv)+H<#?0NIy1>^4B*iE{)a$J8Ue~OQ>exwk; z)6Ac$z9l#iWKgVPSk+LNw2N|8&h%1(wY%%GzkWePsikB20NR&I{>-zU>!zF-B-hAX zgO(uBI2|kj3j(CQFR?~{LJrr;zoZg=?cyDN zO^`kb9Ad}OD)`r0Q9TKe%&x42;hR8FA>Z6qD(~xQS+ghZJ}yRjo=7tsB8|9eM8(-a zZe%}%vJQxp3{4F&Hy#g-IVpF4_BoJLHQnMOP4*v&+^!lw5*x{&SRGqwh~sP9@vvFW zy|nubg^Za}W4H6Gh5G~5x&4eGWeQEfkfO#TGAx+7Jjgk%kY}Eb3yvEi2YY@O?_>8> zLnTJwbR*X7gl8BjI!;*>aIHz(HhMziTHe34OV8XoMhfwso93FG ztxsK&m~i}JZ>)JxysrGSndBNUDCl^vbJIUm=-C$`&0cz$*L0oa_cM(oSEK-1$Vy2m z$35N^JDk?eJz-NWTkg2$jskbE#u{_-C@!l+2i8bcXp1LED;_}D{H-+Kk?eP~;rh!u zq0o8@Ih++Y!HI4c6Oljl=2EA^8go+0tFKJCGb@1u0*Z*;*?dIwPW(8#>J%<$b-J>8 zbF+9u314BPH)gsZ z-M?Dqjz}&Zl$G5~K%XrKMZ~7ebO?BFd4vDAA7kzFX5`hh`xM%>NW4xvYjxgFN8{4x z3e)G%;ur;WHg*YOY(*US2CxTNn`!qqXZzJw0%_$}n!-^HpU{|ui{fY>9?_ayEBisn zL};HxvCE4I(Q9ZGRz}9yL^Z()aeug}JYV|GXQXuY%g@RH>2(OV4SSwk4EYm<++G>9 zT$g2~h}zXXGZpOQL4ltSHzt;PX+8#F8G6=(EZv$t*@t(@uVGuUvkAH#P8E?4%p48# z7&={$A^w+l6ltOI=UHyv7Q*da0XFcp306lv-vW$uWYRwy{ZU>&H(IXIq{9=QA^N0G z@3O|6gMMy1`Z@6e3OAToQnDkTXZu9f(Ja{}nYBCUWLaOm?3Mbydf{X0f%w&*D;E@! z?d&O}z}EC2XZRPD3o+NuyK1JV*HRUQK*(@dTrIq`8(ZD)tu^;txWkJ8+YC463m@bKdv%+H#!5p8$oD;<8gP%SNh%UaiXaB z6)*87I}}4`h39^{92U_1T3Ot^w8BO8MMqp7XEfVL#J}RT#<}vf72Hd>`_0Ol?v+)V z&)B8cR6iue@qr?t8XwwO9_`7jmF^vjieR+W(4X0VmDTw%88Uz5>hFl)J9SF%QGRRx z{4@4@?b2Us?Z(XW+_7Aekh!{)G2;6$!ry>HXK$yLdjr_TF=A2{g8GmfYIOt;nqhm{9jS-EE%6)Ic4(bxVE_qjkxv$cJz4J*}jBuqwys}G7d)yn@BiV&Wx1Xy|!2);Rd!-JJi%1)Za zhzfgSpOZgQ!-G^$Rs*~+2dp_$&H2j7n*CqK$x}|?!q33Fw6E13O3RJctvPUF>OgI^ z?xfY6z7v>^kSN(?5hYp8QMuh(IG4yqn6bSD=(4P~N8$GqHUDcQw?Hyf=IIeGNa(Sw zwpKow!+e-&^AhMt7F9&IAF!1i@A677S(Q6x#Y^ES+GUPe|H{|gMc2s`>KU7mGghY( zYhrF1GemS4%9s;;SpSsphk2LslWEQzK)={+<(TzmRYD6(I7clwMgj5>K?r38&^96; z?65LFgHJUjLIBBEMqdy3FPwnXX4rJ$UIK0)CC-@;O51MVEvi&II1)SB&yLT^3uaoJ_0a zWia`T{HdoI$;ayaGB?A86py?Biy^ezUMri>z5Z3MnQ=Mu96vsaqxMtY*%-YpE`wV4 z^N^*dWIEFgPFmqO!N2lmetx0Ux6j~)P-o0mhMp$8A1ZxC@juhQ=)_aeLax77DAw51 z*uo)YeOxGOoPZ>KC@o3X{c`D2X$`~r8udX~2lG2_S|Qc6OHcJgMzeMHGCmO>7fUOwusHT|Bp zl*c8v${~ZQ(p9SKf9bnH^jjGR#glh2358Xn!1C2WT>(@XX(p{5i`XrxY?By%PsBxKk|* zpVuc9)+6bS6Hoz%>hqq`DY#a6?98)~xO-KZ+fd;iAD1a0xZn^&qkV5L z9=y?B6z0JcO6Bwy?Lutg=2SK`C+I}=nUhCsQ1N&oH6BL-^l$ptVbNEFPU~TdrKQX6@}^ED3^IQrnLre5ATL*7vanRuqb!}3y}N^LSITwXv2!^_VXE-xuu&JQnxV|L3> z6B1392uix2hNGCc5z=2S$wBSOb1P6yRdSwoet|;b2R-aSfsO?KW8f$&88YTmSifNR zOH#9Tr3Qg(rckF(@`aV&OemDH7f>hdr4_})dd`ZXu3klb>Vbb_i8tq`BAo@FfHTf+ zug&2>jQpN-!(_Oj{C)d*O?dG7a}h+dXxBnzDn#? z^yjm5zCyuW{WOrM<>s3U?w9{gj_;q#m?$#H$nG)>)(Tfq+=i3}Vrf`M@%`zB($sm4&gj_)XO*QyP#K)g4>MC8SG zoe6gxV!M3fe8590w#zqc!U1|~g-Eb4`XD7T1vtJ8Z9{I?_lkK6NQQpdTPn+v6{#;q zyWO72z6?RO^~r-ocLfH7=bg7oMn;h{BE9Ft_Jk4J6FIRx5sK{zIJ3DGS)Vbs-2`$x zHYA-;p!wxUe%`xc?Xn82OdUgjl%A;hUD9u=M1nUeE>>^}1_j+1j&}?Q@$0;^%5#Fd zAWn(|_v^c;>Hxw0Soci0WtG?y%Yn~~6p7uo#>7X`nsY~1kzCGdYe5v_NEOYR=y?k4 zk%;X{KiucycYTXonyh{USLB4ixg~k&{hz7k0O|dTw;{b(LvloTe3xv2O(MMu{mgy^B7yW?#kDzf z6Yjpe^gdqd*O;V8@6YC?cPWhYuJ8Zs5g8u6{zIg9gmqc!;HY(+T^(nJTYKiMl{Vid zHlghJ$D}F4c4X&2aJq!^h4ij71S%{K7_i!(7Wa|i(tB>cE<YsAX|-)ekTYi`@G7qJ=cU!&%TIG=mcpsClchs7W@~20(IvYt zp@MxpvN@yNW*K)>#y6wgRL<|5s4rxI@F2VRV{G<0Szjgu*O_wpV-S|!1t1bC<9G?Q zUc_>QKO+=B1$1Gb|e*C)M> zc)KbJc@xf6=|396T!Vtd~cI*^m}JG%Jcl`Sb? zA4H#_-Q1RyHum_f@*25U8~O>JXI3C=d1RZO4{=wG6xpsvWa;SgjJx;gqsY4K*SQ;A zS0wV=___MyI^%W6THlV*dL~#_k<&LrW&gN)Y}}nuA)( z;Pr4d0=%59;7};D+>}|yA9IT4bmBYF6w1y*DUgjmDr8XD0VBizp2lX(w0Zg`9?M#t zWpoxvPP!11BqO_5A60ZJr5UH3(0)86>7%Vi(O?X}Q0$7RzEv)@B5y{Sx1d64`EU3r zGTA1a)xPg|c+H)Igr2_6o%2JDBQSwO7|(MQ;lA@4_hqDW5<32MGUlkrpy_73Pp32a z@%|TD-lzH&`9_#O81Mg~P{`$zWq_GtzMl83(ot`%^wXaj%L%#0<4naO!k@_e#7kA< zid0)#;njHyM4;U)JyYeRYaC|q{#TrlnbM@+fRL*QdJ+}2v%Od-u8 z(2<%;4BO*uvS~=c-22fDwipVwIZ=9T zo`UTjA16n>r%sC7vJHOf$Ws&1`)!$`cYook(Xs`{V&v!-*b_7&9@!KpfKacymq;!} z3X7y)fk^$D)w+mg)Qz#O>EkcL9+aWZbhz~qxuYG7_%mO#+Ky#s;e=O2%@W?VhLj!Y z-VZSo+!db;sjThZDfH|KL(h(53~@3aS~Oa`?aLy;SQ%8&%i2Ua@)P7AP!T#24cORs z@M$nX0gg`H=}14)Z6`vj-c3h)&i2c$F6c|7;W_!WTjbZ*48?OVFQ+qf$sOa`WyS{J z+7)5%GVhlLWz^qMXyhOZBWG4?TmGtSA-(5a`KmX?s~U)<_a9x4#zSVxbE|7B&tdyH}++)4-$_0sh^B*Bs|08mBfuDy*RDK>_e_)B@jgXG2 ztSx*RiQzp$Cv`WC_C8w?ymr~ewMd*S)+1O9@y)+I=YydF%X+Jp!rEau9Cn`h2cS(pQ>vVRwS2{KD$o}38Y7hHx2p3{FwSb3S2CbT+F7pgLo zlwgvY!b#GO2PAtaQWm1WL4L~I)KdCOWT$0oKVWQ1aqwmso^4hQg}7XP!HY;%`@2&koXDg3islkJ>5 z0}+NCRJ@X&6hZl-_tb18?56GRv!f5hUcm`w)5KTA_@nU@-1{RNIsHAyKNAW+7d?8R4Y=X`E~Dl$f*3Mt3XRnAIj)=sL~dYqf6V+Dk0Q6=eySboaiA znuNBk`PvRa%@(2z>DqMgzxZ&b>A zUkU}b=KV?4><~A%?jC^6k$$Hxv9kGiuj!}$v=OrM+~+w^;LfJM>`Ew^)W{O2F1@Dl zRBLsOT|2eJYE}LeFT_I6e#)sVF&%7g4B1DtQ|%H8oz`@T6s>ex+P2JG5l^(#pxqYl zYoXQ6?_T`0{Jo`{#u8qoVT%H} zFViQkbDT3glt~f4!K!&Yws;Kmrw^~W7HY$9F0lrmhSgQI;|p$sgHCi;@X)X=2LaF} zYf{z9IMXN6X^bmRMjuQ@USNb%*32DAe+CAfFd*PAtHb9L>P2@FUUXL526~#p<)CI~ zVHVb*&b~lqv28%w!>r(U*RNEJvLt{*T{F&f$`j}yo;B-WIFXfGQ2>L>V zkTxO3$(jdihF(ZozkWqsF10JdJUlbu!6D6fN3}v{csIv!+S1ZcVrg){f(SJVgMi_9LZj;a&ereEf6p)x==#xXXN2 zCeI)vPvv_$wfOS1sTTB9qv15uBTH{j&$FdwjDq`k9sk;l&ORQs>qi8Wxs_Wl=00Ay z>&t@wrFp~e<5Nm3m)H%`XRGrF{tbRAedyxs_|grUZ|lHOyd5CLye|9F<9_+IPyFbX z2@D5^%C@J2pUM5aJxtCXllbDm_pj3TQ#Fr3nqNp+zkbs0d8Sn57-?e?r`cdLO^}Z8 zV?^+vX^)>+4~gpvzNC`~Go!zksVAs(g0f~jJ8zcpG(#24=Vc*Yj-g&gX1bUvvfjkv za8>xva6oLDgUcvBz98no4XXPC)Vp`K<6p4X0nL@^(8)h81=t>1*Z!#d^zngYE}hu6 z=J{#wsFe5qbnG#!?M$XSUGrE?x9sH}rPrIWjV0Y4IOSu6O1FQL*NIz@^v|I7d#sG8 z8j>E1>! zkqku`dMd0BG^ft}>9P{RG2zXw(?28sTc?;|wmO$G!$AoTiq@Ooz;kE>1KaUM9wk9S z10s*@Zk*=S?9TNe{IW2C;rYUG!h0hECE@bjZragZ79up1?u7L&yfGLp-&8tYz)u#K zHkhCJ6mYz6iRM&J_5*A#-prFFV`2z%1ST~KuR5#s>M|M6O+wRMVsdTJX}Uwg%-HUI z4CXXAqm{4~D~KyKFxq?{?6wnO3vIL&>W;!o6FohZ{Ry&!9l0YBdu}0Sr@1TDHlw_s zX7dqrhZu2id0mt6Qq|*P=<@JaWSI+kc7DR$oB*YJvOW2lYGFGCj?S^2PrX;_Y|AFW z_p~srU^ZH9Ovl1Z(!}Lp1^``P$|O_;Y#})7cytHuoJ-uEn(hP>H=U@q*HjCKmjI5_ zE*!2Db_J4+^)trfRP`i+i1oB@#L07c+=}<>mIY8~TM2xzufYf#7sg5?7@!Qu1@Q=Y zglnpWBNPHbRhjP5aH#|oYSG%&97wP+)Drmi!MDf#S*7?+S(&HMeh339UX+?9>IUI8 z;Astmc$ToY!Zp~@R{$ybXT3)HtsxT?j3-mH>{>Y)OdN9*Lo(^`?pN}Mxe*mh+ZB8S zBWcCe{^jUSh(!1!hE6zToXkIf_jNpWlGT1S_drfX@2=BeI#(<*E*(*#1sh`{3Akb= zTxrIZR%03QzJc!pVJ|ky??TuMi5?i+&|C*XMOI_ny~hT$16PTiU5^!aVVNE2j=Q6X z1aYc3Gq*iS4LAf_tq*gNbax>z+c?guzKlSrD?Lpjfoe;J2ewHpJ9Trev08u0peKn5 zhvr=#fhECjm05tXn)w>)4%t*3W-=<=kxMz((1@1C38Z8g@f0ztSoFa9_19`Zm%fr9aAB8aE+v#7LB=Q;cbis9 z*H1SV-QV+3nC%v;?Ln?!?}^+|Upp;gWj-M5Nrd$=v8A$5t&GIIH9`QPrE)^R(+B~} zc{Rpxbbg-;GB?Q5O}UR4{{LZ4keA^97rR@W()0>A&l(wbr*6?2t5x+Y2!eGwL<>%g zdlM3|2}CmssZe1&C?Z3*;CSLkOqeHyh#z4{m*Fd82@^kJLZWs8cEN7qM|2YrKPEu*Y4AC(Z&Px+_ z1P}A!9KVsH&vhgl%}DqNS7j^5t4w7DY2uZL z-va!P2~}j`mGB6;qX)TTLr(5U;*TleO6qGrnd4cV$n%r6QjLV1?{@;VOkwPWg%PEa z@GryfFVobZkfRDd!#Spu$LhFHhDv$6{PbZ>#;m7H27G_xR8rB%4in(FZbLcjUN#I6 zY+}Au5=ldLb8w=3Ut)30;#UQ$)?kNpce?~uizmAUioe?ZE;^XFYY zXWQZP?(lhc_`ExO-Vw9boU@0|yT97=?#eNLn)B}Kf1G^B+ePQyx~C3t-ib7)s+gR3 zr?Q^PcPib*dR3@HxI@m%iFPXQA>UnEDw>?XBC&3#2t9 z_a7zJNjex6>$Y?8cEq~>gpGfv#JXRzdeP?`mghvPbXcAv?Zh7;&vhLn&n5mG@>~m_ z{mYZ*o_@RX+_EEI|9s1`P0?S9vc%{w4+xEqG_K0aWx2r8Ipw7UC06C-9wPOn-8)cT z;_nT^h~@WQl$SHm46aFeUtWeTQ}mbRhL3U|NkyIvEzly%J#F-u7>=`#?F87i&W=60 z@B!d%WJV(T-1kIhSx{wi-l1)5u1a{HLxGua&pR2QS=zg{MTm`@aMz0NGU=T+A9tjc zC}Twv2GF3O%ET%$3RNan*j9~Efjq6stt#8=5PhcTF$oiq^v*(ESdZpvS5D&>ArO}_ zdZQfz@+P`IME^MMg;A`-{v;8_Hzvdkdbiwr)YVMfws);4K1mB883JNBNj6WS(I`9b zY~O>T^L`E0Kv+E#op)yXMx!S-7=SqH(TQ6k8zufv(w{mSyY6UA=8~%TTBG!A>LOaX zx`%GIj(ZHX}{nipTE1;%m1EZ{tLJ1W8b*&@L;}D#!&dlJpj$-rQxiO{Wh| z&90mo1S(2ocFfvVhs4!K>nCd#b-10mBa-&Zc1iU%X*&ps%uft8y;j>)>WC$7v|1-i zWh_W=2$}t*R=ZdiJYxYgz8Z1&vKt9Ig#AdD!=mMGZQb>%+-emwH{ISVNPTr-H=u$R z85KML0MkyOHb$hLKQcaC)^ch4@oJKWTm~5ZH8Z3Gwb<6tn~jfMFL}VN%=;9rZ~^!N z)c$iZ#$OQP3r6zInE8IE#HS6@m$^@)7uGfX$iy9jGI$y-<5qNwogl=HV^M!p^Nn>% zTyZsj0bN6Bid`w)Vs*$mbi5-{-slvrn{8Y8nX2i}4KOAWkb78mF|41(;#uKWlmhjR zqJZ9o{ZdBTwq|a`x86%LRCi+TzS{&{7l1jSt>`1@{BLw?jE;3-!imjU-uNle3R|n+ zRXcW+)jA{!C~wh{!T^kvsU%pArauW`2;!y$v1p^)GS52XbY@AP-Y94>iT9_vOX$;Z z)#Y3&#r+S}rBJtFzylTm=n0*v1!Lo0RXp~-CiHHCJlIgC`oTJ#JJq*VVJd&0(YG26 zV4U%bC6;Tv-l}-*`w9}#F7XBm0Y_74KWKJQW}@+(LgSWWu{b^*y+0Y*$jAc>03&BZ z{7fnj=AxsWhN=;9q8bsOl&K*MTmf&8jI2xL@CM@JBnB;+tx`f4#O9D0e&+t*bk#4~ zp?)vHjE~W#9D_MqLbSI%N44pi`)l@yZSr|^gydS0hDUfYXZJHneve6Hq6Q-)EzjbOe%IBL7T;mXCbMY)D6&R}g0j{;byEyZruwvhCT8R>h~ZGWFNTi}@x6tHRO%;n zuu@)mh({1ogXdo!k08H`HnHLn`h&YgS8ntcik}d@GV7sp7x#l#4Kro-mvl9Fk_b?_ z`S)&+t`gmnp#4J7795@MPDsSYRa*f=%N639KnUE)QdGoQ%-U*4? zan%?iG>~;Va(^QsZ}G2}cS0Xu9@5gsCBYl2c8f_mtKSY@Oc z;F6}qYI3+FVws!qtkZ)}>;qHg@i@dK_2ldWL?vsstkqNMYimsWb$~&bVkD871U;8U z9|)|OAG&k$I2Y^!Ia&uj431)LC_Nf>zbkklY^THoH)F;w=-eYK#`HCab6wbvV5FgM z5$Wj6-@&Zi)akdyrD3-8dx zpxK!v!~GE@o{+JJ{{`@q!dnPG`A^&5h@TWzGE|+seSXrubd=GZ{FU>OAAxQ9v+|K2 zJ_H~6&rIms;3Ka-fR8*wSieK^k+a@1A32RWl#e`BD*FTZ$R&`;cZiRy&+|uz`N_ll ze)2BCmWKT9Uj{$<3N2Fp?N7r`e*FIq zKk2;%esa%CFTM`G@-Kj&giBC<(!T4B_(_FY{xSN=JZk!|e)6z>^00pLuzvEee)6z> z@=v0lEdR}0<0lX6ClU6Iw)(Jsa+n_SFI_+R?*p&LPY#NrzhLhMfG$ez&=hk>x1ED5 z-t8-dR;R#-K=_S!tY?(4|iiB{3eYVQPADq!U-9NI!uoNGDEA3m%D` zpr+f7?Nk3AwQ|R!kGSn(+BB&a+`(vn?0LQ*zCG*OH)8JI5&HFrxqF?PXp6g>Ck`67 z9!!|%$KoXzxf4s=LA-hRC^k{GcH_j2D-Wqtv&6m?qlefPjj{VP+vMn6tPZUjzMWLlP3o7Z{8x4pErQZ2d&J%iEdF1 z;H7E+{{sCQrnoH48Ne65j^gt2gACxasUxOP1*^3|>Qmk2^J)W^Sj3(VR2VrcX9LeH zT7!A)U8+Y_X__U7Iec!L)%wjt>M->K4Bp!{hkqP@i(&R~(KjdkL)gP#lT}XxI$z{M z9OiM`9Bv8!Etc@#9&8Dh24jIGgGkO2u1;E3$15@c1!MTVlq<5M9bgQfYmDKK9AFH; z^DP_0>(v;3TCp+QM29UlhF3A-2O7gi$MY?4sZOQu!ozK zo%xz9<%3M(PjL4@lX#y_R11rvq%?7(8pX#^tWKksS{aGRp(FQ~L`uALV?zz?sNtaf*ZfxWiA_B1@o zt<_s0)v4$pnN2yfQhbtiGmFmJ{-;ab<3Tiy!U2?o?u{oJXF(ys82$OU_{LiuC-4dg zo$!`;z`8R}4*pwbI8LCm#Er5&f~U}87WBEo7Q8M#K)8griw_u2^?7`NpfvLMfID^I zHSR&~3=n+43p88XGmJ0q3LXsa7w`dQ0dyWAns&3C+yI$o_4+uwKs$&#F!eS%?-Xa#0D1kXqr zZGpbD@Sfni+{yZnA{gX@RhW28nr!;z0)(MT$X?E+zgdtu7tp{1WCMv`48|0n{+nbN z6^kW4{SuQ2SgdjAPrBboZLN;XVtG?@C)w! z>efG$y=xUqIkG+;dtxEcf9C>;)mY35iOoY865iQ}2ESJYkvNURyX}4Z0EFv8;rBNJZ>1Sld}D}k6<7X^nGNLmkO_A;0A&T^nsEDzV6NXh zn$cUdEa`vqXuSKsZE&uOy0$%;^u8@jjH}eg@nU2hD5puXvY4w&^wnk2Oo zm{|h@#=TFE1FSoNdvR~EjD_b)pFwX;lY6d4MaO5Da0Gh=@r!KZ4wBr`j*)ZK;5e-r zy>5ForA;sakvf!->%3hg4-I@}BoF-H<8By>R-KvM!O7}OZ%4P1v?H=B3f0uy4GxhE z3HtQ6`Z=KB6+nd8`%E^|qNzIU)2G zIiv&eLIVwy=AgGt3ccM}fZjTh`+?rdcdX1PkqkWCi;21@(A$^g_aPw@zop`w!@c{6 z06z`%mP8{4dJ6}BltOO<>WC$7vRZdaWh!>Oq+-XXblB&TVq8axblhOPgAFi@-ee@_Cj)s?bXl!Kqa7ujj-Guy|?={_o+z*v{*;^}9 zrvV0LN;v`y+~j^T7hmARBFk~41CEm`#lY6o*G?T_WlTJvIY7wYACKK|C6!p2kE`4> zt1RJt9xO094G1&9nzY&k2ON(vBAp_y;E$gooB$ydi1-(uxKj|o+mL(i}%wtlq(Et&TAjLuEYBtnlY`erGP&!q^r&UKJnA!b>*j$Do(l{{^ z*NghD_*GakaAjAGZ;?jTDRA1#{E+KX6{eL@k@#XJRJKi$9uxr_%|f?Wgx*mxB3j)I z$H_($lFQL}iMD)x8DLY18U^v%tbhD_O%HbHAI)o;{m{)q>P$J$l=DnEli^7Ls9H2Q ziI0Tslx75sy3bvc<3%Z-U zD)YBx|tMdTi;xb?;%yaAJ2oa(vQITVKWqlF3s(B32;39TyS#=Kl-Gj_eAd{jQX;;oN(#O$d zD5u2IqEE6eG|L->{vz@@o8f=Oc>)rnw4qL#$lxu7k*_)rD1q{VMC#P>?OI{#6=V4~^--!=Wn zeU~U?Qq&0}R(3Q~H0=?emuO_f&^elqrST#F2;XgDspv-rsKm5C@&eX z3(xVo@{MpHZ&$v#1))L3I$+PiQ&ga$9DwNHd4A};NC>B5f^r}+8BWWW70EyO_vCme zJ{M%7HE>*kmwtqpvN*on6pR#ks37#n z>)@sTAAhpPZ5wWnNV@Noyixhb%Nx{CkT)*+kJpzs@(`C{@`jN$MCvHW8=> z2$FfLB8Ys)%9M$eP$Yu9D8CELIZR8=__6gZiy%)@hl(H%OJ#3Y1o^LbQUvK`BN%>L z;`$zzKP1raVfo`PSpE==_aWtv^+M6yrTzNHH!*Bg%0S^Fj8pbM|5Hfb^;*s|~-W1c|9k8d~d^Fu>65~upoat^uu>p{wRuId|3W?=S?7o<&W1lfgF}U4%#G4aW`EA0}DZ=Hc%5$;X$r~tc8 zuOt+qV6KM6Ayl{(YF^MlMC00>a-Yjy)Rl9_c$ha<+TPN91j3Y;HoHB|}L zDh<}^9yNUU252>BzKQi_Us_h3i?8dq@C^gFY8UWP7$0ijzdy69G}>q zOPo@XOPt~xXjP(19WBV+plMU2a$`x?v?-|mMWv^yQyfyK^mC4*?w8*L9tO%(%TpXK zj0HT5iAXlnXs;dJO~$+GQg_bEq<P7`HMe>+G1MN6W|%WVJQZo1!d1{u#i36z$hMEeHB>H`ste74frZrF&Lc zq|f~%;TS8Du{~B>6YraBZ&vH2QkTIBY9195Jw^GdVCNVh87U{D8d7kos{zAmK9$nC zxujG1Z!rmLIu*6x19mbY2E%kJ8X1ha5EMv=b`ZqD!Rb^0h{}8gCiZR%gMm#2d&5Tr z?Golw$rj@M5rwXToH4ry_vezFw>0`_0kdGhPNY)_!A@e94#7^*MeYK=Hynf|^f7yhGSNf_+f{(SrcV92tOf-z zNeKZky;cA)74oTQUP8&IA^;{S8T^6|n)AT+js>|G{DW%dWt>bT$dvmy)Dj9HgPL7< zv9R0;!oBKmJK7yfFqJ2wMzPteuedO7&{vS1z0$;?ZpZ-d+rB4~AdhJOJXINoWXnyt3`WU_1a7X@d_ zefK=RD^w-;XX+v0I3xiC{RR;9N5n=6f_{U-`;<~}8wC9k^TG#;>w|JFoC|20QFAi; zphj0vA+VqMGyqx$6sg3W1pvQnY?26Z?=`M<;lg5g8E1A2S+weSjY$u0DRMq>a!@9n zUwuUFC@?VgZT&Gwhsl`)np z=xtd$fV4|pcHK0tVQ5HB9@!kdTN%ac71#lQdsQV56E3c-H?iRao+xayZpk;sO)P+2 zI23gI2P`9?+s1{|JGIz@v?=dFy0PFvYH-}jt7mS`gD8v#>A%v&VIYdU2kGzm%3H&6 zFQtx{u0X5RmHLWs6sOR4fj$j`a?8j##)b4MV9j0;s(U40m7#e@P~Eq)-Nb+N&w{7; zEj=-K?mOk`U_7^k1TUbNAE8jvpI^XpH~kgixxd0Hd&_w4A97s0GkES!Y8s9K{Qm{d z-E@tWBPF!~cS>rDW*ZptILJrrxRIZD0 z-EA^OZ-(o>m_m76_c{Fd>&11qv33u}bwA17w}$J^@!!Mn-Ev;#Bqa7h(tAC8w>bS8 z`6q|7J_Nq|mk=c63K5u!@!dYR-vHk&#oq|u?QwkaJonuiYr;RqUa&IXlio^h%+i=AYubfw;JY^W)FR`QI9Ss|n>D#^<)$HtC8#Fh=)BbC{1W&>ZHLxk3co zjR^SB*c1@~MZ6`Uwcm^r^==UX5pK-`L_pHV#=~k>}Th9M3#c<#-L{-o+=!z1uZnK@$?GHKCsr!f`iHJ;uw~d0#hL--j1I>Lt3x1Ki21 zuPSm?%fHXt!I}$Y4Ve1m_a$E~{8srC-S%(obCd3?PUe~VVhJ=$I-Sn-G^4${X*AJC zoY>6rMo|@Ii!$$u28_?wYtojdL`Qv*J$G&}g0IZ$Lb!`Hj1vV_GBa3ieZRN9?Y_p_ zBoWW#bF0f^o16YS=_S~ia~|Twl=~FC*BXZ7Ar$9`T6ZGUto>vy=bl zMHmutJA3i!s&q7t=EX~Q$59x2P5qJ>xJv#RC;yxroFj9R{IM$YP5Hc2IG@3HAxqdZ#V*QvO z6PnEf=C!YLQuu>QC%o+Itjb^gec|yANs_{UnZYBPtJc7&#cgo$6@<;xR z2g%a1etg~CeJ@i@gsYmZ?R$ub;7r`dk9E2AS)9LD7Nq;~Y!>Atmcg3hh1p-zowfh< z#i5$5j=yNVCLwnd>uvXr>^It8#2JdUl_W=dWy-%|C^d1Hq_1!LXND~0PZRH2Nc}qT zm`dRoidTO7P}2tozNr08O?*K!SKuj3*@vZUzEI<7+28!=#UVR(N7D{1gn{J@x1yFM z;mwg;)MGUlb<;F%@_|2tjhii-6~AN zoO#xBY=Ym1_9v*rY{z|tA-TZuZkM%JJSsb6aVGku(S3=o(NV}p`Z{Y&Vj2Ih;QuxB zv~gm#oK862ujFkUj4ZR+RD8l($k=BXJtm zXK!hh89a|PBVT0hb~051WApT^y}NNjYT^?P^OGbRQaDA9H*H6@=6W+X5Aom(ZyeM5 zU?bV(7p+Npx69VdPFPI={CBuc_I2iVYtsE!8426%9F#wOoh39x=3 zx9a!wjUu@@GwLkf{}j)xj({JA3>}L06bKKEf(YbDkB}j0g8ZjsNSY=8)olD@2#(`- zN{fr=j;jPtruPq`K#qH}P*(_%?#Bbi$DCJUh|N61SkJ`^`pZ?!G?XOW{yT9^tm&@p zZGx}6Y=SI+Pu(WXL-#+ljoC=EeBPUMm#yRrDYq}}E?>h{+FjAjpX>xUAZD2e8r|WV zp4WA|yq@jgSm*VD+q>rI4Td&*g}LWYWz^|wkt*ds2a4F&BGu}zz80xk{>%2@Z%5T+ z=*D^Q< z=Ss4#tvbK3xz4Q+n`>Fu@}C3UZM#M<9<R`iJ|v~(KgPMq;_S{^P=JA>4IL#uh}3GvGh0Lr&AcZ2?ht}E@MuW?a$lD( z{v!OMOkk61%5xB8SF+;<&NRPKeh&OZ=Di&@V`$)Gx${HHEumblK51uBZ>+X+DQ@a- z`Y%L`>}M$)e1w~(-dm+`u)0fGhB&*U+aU@>^LxGH)lR*5-=tNiyw-S3=J8!M-HZ3l z`cS%xHCHsFVfjjLRA%R{)5GW1>TWiBi;h)zm}d5uH9OYo1~}KFS3Fma5!v04*;(5C z^bs7UBdygWC*0?F75FKiekqTg(uzKJ*UOtTJ0tB|<<#`!5lU@!ChnHgv#_FcJ!y6u zHb~V0heKv>Bz?l~?9A^Zl~2TJ-`Y4|45qRkMDGO`n2J4awMs+f*uhQO8Z*io(@@F( z6L{HbTg4;qh|^^dthN>WpqI(M^|04N+S#V@wjgZb2ltI?KGvIA*4H3-gpx$f?;MxF zF)Z4m^TTTYh=^UVt|@n?aEX2d<`N?+B}H55HUXmRfDX7}N~4$dH^t|J(|tq}>R^!^|e#PZN(KS!ugpgMYOr1mf!( zt{VoK4q+a^IA%%)g|-PDE!`? zZIAP9M~slxFYa?9n}UhFq2t5byQTh%!un@;(@tWMl!YZ|_|1A_L{Lew!g}L=#Yz7k zZSNi*MRh*@XOjRy(TR!}6fxGQM5Ka(W`)o!BrvPHfFg)mL`74z+EUmgcmWbNx9N5u z_1;!3)*G$0(%Qx-8a9AgP^%Fu;FWm88CC&BAp|Ag_j6|U66Evw^pD?<*Ng1TnR9v0 zbDr~@=XTDiX%jg!Ft-h)Rm@cN=`}D@PsZ~Z8JXO4`HDSIHB^!@HIjV>x%^sLNBlkL zVKVRWo$2+_AE8crC6JUi`CYl_nSilY;lsN9zFzW?D;uG|s1>*-W+8XW;t*Lbp%~Wc zg~GbmbKX{Cl@DgE)%}^|@M@8GJ)v2Vu!sYwH|Iz0&XK20p(7&U2US|=x>$GxPx3F| zc`A=bhn;o0%LDL_4R?_oS_}R<>0`T3tj{qxM=kaG&@xm+!G2QMU--SGkiUeF14goqMNBF)K&ENy>|t`?<7JF#=YQ z>3YoKT$v_j=mRdaVxq_0sYyfQJRwAxdF5_kG65}BBYhTYcD z4+?VI1-V+oN78^GxQPcYJ9Ll83YbqjhVLOBe_<>>%I%jqEh~Uwra|V3?s-d(two9E z7_oLv7g_7~Y>BA2$GS}wBh*aie57rbhG;BpRkrzK*#!c!A2kpBlosSdEj{t`nuu8d zgxWXdTev4nYgoq<r`%QRV zHieq>;Sb3Ga4f9k)s2T1%1^kfr=lMQ4sMHWr`mg+Z)Meqss|R>$CJ+*e|P%ak$O@6 z@m>;2h7sa3rcFsYZFE5!=Ax)|=I_BfbL2;jVpJ!@u~BbC_dl+UEy! zF6=cIc3C5T^-Yfqu8d94`<=E_{2C%K^g%+Zm@VSo(VRNj!z1>S9uR#LOy!H@Oie9>fQGmHm0r)6#0a^7_4_~id^ zd^)XuVx7k*(|b@dH?FgSzwJHX87cYM*rP;f1QD%%If#T!AXMSvEl5oHii`B{fqs=| zi>XD1rRqn@c)GRfM7?mG-vduQkX`kYbtrD~Rs!gB*`(rl`j8(m5~AzubyEBL z)&V4q)Bqkr-wu~eA0lC|B45eDCdAe>LGJ-m1&l)cvAUmvD{#-WQTIWrNB8bs-C0MS zIG0Gp%E*jW5mWMG>n!0S)KPouHkD}iw)4tK*Qz)ifb#|?wgo-k8mj7G;WwenmCX>@ zr^ni+G!P=8cA_~|>k)Mh9YJ`)L#zp`tAdWI3mDgfp_%^h!N#g-k>Fz-PE}h$j(|rU zFh%85Tk+@8$kPfM$KK3vg3mM~$Z0MUO`Cg)kHw;2P*;4@sA&9k>u<}_k*WBRyPkh9 z_DHdH>WqbD0OTJNCZ@oW7h5h<#$IC3T`2G%9|MJ* zy4muYDA;9T>B0scof2Z+)D2aW-7W>W$UT51E^WSlvaJai-HKhrID~mfMtS`qiMqJNj8l+K*_-~ zb`i}$XOX)fATPRD-Cs!M4&DUQ)at~}h%mQa*&W=jTGwOLY7x!IsY>>cO84C^N(7!W zP66|&R6z+@spZ5$cB@p0%3OB$l;8# z;hRJiZb+bJE1h`f!gEtDmP;wiQnUacr9V62W( zQmgwH%bha^vYq3p9Gpr=(-2@UBO4x^FJKiik$j3$Z}tR@&VYo^Z?ba#@J-LvbEN+% zn)QdjZ`A7L!d`odD(^_;bW@gd>()EP#)w636d&CgX@AIbf<6P0r-Z&Z8LS_-ooh?Q zF0XJRu3)Wsw-RReS!I>T5RFX778$GX)*g^+sJUWqk?2MTAo-T+oBfh}ao};ZU#pen z-F_d6#LVdEJzYJaqx7+1!Jk%lCV(Z>8m;bZ5R5V+rrnIt=}hEP&XI|H5;P@@C4D{% zaV@ozZ~%r2hdkM1fTL`bfGj4r+R3yJewqbmC#HaxtmKkuR$D-p_oBd^2FYV!bNH zZCS=Nkyx*Zg~gd7q`^WodmZcVH+tlJva{oY3gp124A^vsb$6oN7QZLEU{v&wf{F3P z;Q(&R6Pf>lVOOAXato_qR?Q;eDsGyP_Edk8hVYs%q`_XR3GzX>J4dU(8yJyf0?3){ zG(jfDAEuj^cKKTJhRJODNH^CwPkXI?OPoGx4YQ?`88|s3$mQxWwH4wNTJUrBy!ldq z5eb;CKV4met((e&9xUu2UR{Z^&Jv@7jji2_oodlhMp9I3K!MM2BCNyRSQB>h$|1*6 ztuMSkM{AIIE)&de))oxAQ6RyDm@7E=@Mc^seRjQz<;pxN=e?Ya8$&=kjhgc*ZOv5D zo`_dS)O+#eN_&Bb0t5Uy9T`nW2t6v|li#y80khgCVU+4HxtRyua3PMiTHB3v%;P051ko0KWVk7vP?MDR7@$Aczrg_X@;ryAjn+65P}N z7jW-e)C*ixX072*!ky^Q;f};N+0Npule)6Oy0dJY^u(N)uNzsq86K%dabgaS z!xRNh%;m9&siPYc^8hLqPB>&^DtSOg#(ao;+&I1DPc`2Y{`7AWP9dx8HkT_+g=L1Wgeit*u+;RcJi=EquHb^lMt%{R0S^~^ zuyE2{0ahQbP=Y-qU_2_w33|Q|^xiF~AxUzJqNPScw5(F+eN;4=f@Fg3#%e)qFyy=4 zP(8MqMU+5ha|buv-B{J^AeV{3`uj000fh9}g$lc2qQygiYXcwwP9Td2WcG~^OoCq~ z@S)^+@Bz0FrEQkj>37c&+2V8ESZCdfu>fgD_pHM)>U~IhuiZ;vL!G#YQ=YFD~CNuPc#}W3^C4EP64MADXtk+qOai!+Q${rK?2}GWDa8ZK6(INf8QK4=~I>2$4 z4M!tVA{u3JlxUg+S^Ffs5?ul3BBJPgc`-20VE?)?&D?gg@Gt~@R~8Ioqe%&+r}ME@ z2b7gTlZd#@j&_RD8(+3~vYivxufD^Xq<8_H+cHzSjjH?_($NXph4 z-cxc+dy8AoT2s{%YH{`OUaH%df)=H^?M~x^q8F6CNSMk40(jkIYATJ~x;{|YgFMI{ zKEL;Stziefz-Xn_{+0&@MTv6iWZS_Ucn?_C7dRZImfDE zTfK%isU}1ZQYM-ZYeK+jmaBO#lykIC&Wc4LA`aLm!;d;9pVHEvO4({cMT&`nj=;Wiq#FIQI z6%s2T_)uGGfju1&_h1tTXqDvj9ZU#9f*6agOY6Td7^B+}_Mv9vkV1TE+YVpr(HL`l zvwT+wak?l)9dO%m8_*j1&>?3KWQ4$Z-FZ66f29klKkQBEUmsq((hJoh)r7UB$eKl z9W<}|E?5{(2=PJVLnX&wewr+?@S|5Ggz7`-tsLARe86h`Kqw~2yxgbWcm7(iDCBvB zR=1r2v9~DQr38tw-EQSsEUEcP<-hhsFpP5wQQ!U(eJgJg4|->!S4=*U`rXdiiz!c% zOd$I;x8Ag@q9-P@PFJ5~@O#-EvIUL$k;Z(NpiA7GVPzA}aPpXmmadEHu}RFd!zcgIK(+tcjgi%PngQt2NegvG{e$0v-u&B_ywdR{op# z10puMHrkKU2l$5*ZUYa_2u6OR!WF2{$x%ZNSASBzEM=U-eySocl)LX$5hpAg$&!^a zbUl7yJbkQ(eq(ETM8@I6G0xozIjVj1*5|h~w#Mg7ee170ir8?7O)eR+fub9QCd7AH zEl{W8L9PP~S?B)ic#ywu5daQ}2eIEH$SO5NPX94UI+D}>xA86`0l?{NLSRh9yWCf; z`a-;m{Rbr1G?)qE2X9s5nU6FpmCESgPg1ptjxTirCuWsi3QelR%-`Oh+;LCLV>+tn;T<;}OS7^w z*{9Vj`sN)M?I2!U{fOfRR0if{qVv|iIsp=!1saJ!1iKe;`Ulzt{L-ns88?bkU*!HY zbmJ{0Oga^LmqIWx$4*$<5LUeZ2Eiw~9&&_!8G#h0LMJQ1J3ZJ~_(&2TC^0ey5#|2Y zBM}(|L_@qSVHq4AqiW4xM;|#e<5@j)+ngzqO|ETlBFDKSap{Sxx9rx7pH6C zenKk9+-7I((Vy~jFIa4HP6^)=-NP0t;RW^_;8*hL8mYjVQm&99wbPHf?EvW#sI4o2 zGu8-rRx^tkpvi2QrJ!<(YZUhz{UrIE|Ea|%kd?(78{S;+n6h0D7&6z&wdH*PKMv~u#d#(=+ui0fGZ-;yOU?&*03A@-n z9Cw{tNzm?U)7w7E*ZaTX#tS|#=C2oy;16g_d`Z^k`V(cnTXQ{mn1Oq&!8c)=7xWQp zB1}s{WEd1;W!m=V>u+`XSeRsz;ov!5_r6;-ME7o;e}dn5u%L)kCOCl^%Gf9LKpmT@ z1EoN*cKjW0h7Vq^)z(tKS)Yf<67E9RxR=+OowoGqU{=+Y_-z{6G4RaI{)gkUNkSZH z5Fya;5C^HoInpqYM$_MO4|x}RY5I53JB`dldF`e91?m<-Q~2vs3OiKR6uub{*2Nwg z6NnK))7d!~n5_8AWj-ekS#?dchP1BT&TF!3=y$x*y_T2Ly2rYo;1_FlfCKBkpE(Rr zYxs^feK-?-vxf)0tvg>{mW%Pc)Ob`-F)C_r<1GQ-nlGgM%w%~vN<@`^Hog24ys%*! zYxTWRBPX1S`(M@gOcU%bjsgZ<+i=#7cj1^w5ukRge?GvpgjIlXWq#eTAP_T zih-BV_MKxBWzQwA33nn8D8J&ccsVF>Lh%h2zdP~2LtB!YY8QnW!HKf z)BgXp?C@Q{f?jfBVL_YxBT;(jJ__RHU%WBVp0rP&W!?%9ZhS*RyinSGa+%F_%}ABU z_A(4rON~kk-!4X$7p`%~^4*lpM)G5~VOERjhTSd6{?1TMq@m0Di)(TP1G%GJY3B+3c3CQk&Kd{TUR71Jd*ZP{$T~Id1!@KQ5m^X_5A?8Bi!n$ zj!D3fZ2pH5M}~cpn0Axws7c9ty2LU~is@!;Q3=Zwcd+T&B;E2ROQXai-CyAj(J9Qz3icx{ z+91)K)eypNY1_M{s*knwA~N;Tiw105*F+Z4Pvf6i=c4wp9{6KzlHf{B?lvtq^Z@zt z#z5rK9L_jN2SZ{yINc>O0Sn2@T=d8lNHr@ta_Ja9K{Z$lxtIfdb$T=$PLw0w<=(seS)5~XoZ;F zxNWdStst2X&^`00c~QkzYq*H3rxW^T>23>nxw`Nke%2Bx?5ll~&~5LBp})}62c)OH zgAguet%SU9Oiq{rWB0Si)@Q_snuS~yO_vogFN^nt%^s~Kxw1)`eXG8>7U1h z^zVzQ!p=;`6^Q7=IfEg9J~YTVaJ zlA`1Z+#{tj_{X*i2htiAQfpbHRe}jx$V?0O$*}pnv4A$AD`<4#_^NVfD{=W{;Qvk@t1w5s-u`Vta?#uL&k$Pv0hUKCWQI1n}(1tYD}!?2Zwu}P5K zu!0<97)DDX9g6+Y@7uIQG^St@aL~TBiZl3HanbYu44w zYxb)A|f!V1gShy?b{hX`1*wTO%Z6!G+ zj<4YazJo&PqaqtZxoC&smnP(&_1Q;axK>fT*bPAm{g6J}yIs4HKXTtSya!E1uD-}J zSv7)Ys}oESLn6hB@qqPoK(+ua%OxuoiwCH(Ze!>)f4DVAS_%#3Ns*iw>GoOYyo#hs zHs%#}PSk~RT2?;q&uA7DNRv#17V+5>c4L|gc;D3;+Q}tKs0Xex;{od?Sx`7tjM0+( zF66|e+2<+XtEGo~v|nb8+T5hS=T%TIW& zXR|Ogzu}aY;LD3;6jGGOkP9vP$EpF)!t)X1nKm+obPscY1DNKJl-8}ZuGpn~QtPB5 zjN7EFQ?+yn2&)BBaC9Vg8UJv$!b{9-05i|(dzE!lT6AO@d9k_dKLg^P4mXG5B9VHrasc`;ipoD8WirS=Rb(PFngC}?8TC@VB-V|fS%y!{NA}OU zT>8guumX98b>0c$9v)oDDF_Rdgz`Ezh6k))`-Po|x!OsNI2j52T>2bcg&jl788jl( zMy<9#1z_&R)M|AefLqpA=?ya)$%XL3euO80u9Zx(70QU4T!K~i4!;ZoB+dpXh^kgl z6>#pi{*Av%rj;7wyVz<&1uLj_T%7l4gD@%_MaP#orzC0V_fQt~ z6PFHn9e{}+0v|~DT1B%_-8c@??er7A!mpLulh7ZjwnV8G)?{Ex=od_B-R!gF!Sgai zcx-F%gCFUU{*u z!5PT^qZ`go`OX1ov(N3TZlI6((y;`3aopGk zaBU{^f4n8;$(KsL$Z6s&I9~8`EW_C<^~=j=AWM(Q`s2g}vdB67p9Tg~P&YWqlA($e z*(YKuOA#^O_djz(M(XoZn443d4~h4ajqi~Q(kVQ#AK-dn#j^KB_Mfy^b(3YZ)~Utf zCScTCSb62&Pw=y~=-zc&!+1*Q=0vaLcaLSNKM4G%_h|IVd^Q6>{DtkQlAMQvSijqE zE*@-+LEMp=0>(VT3)ctCg?X_OWhi$}+OgK7r3WHoW@n#|NdAphcMCxHBXca-W2&e}%dR5{?fi^@c>{cQ%;OjK zRhWNI4eKuG+-jO2BmB9wQb@J8R$4+~P`&JLGS)lYpjGQ=Hk2{(V^1edW}pkWJ|Bj zF&}yb@*eA2xH}!fcoffW;rkN32A0~hWbw}hW3?CZZ0~?Gs(AxiDf*~e^bDuy7Ab0M zRoUe(J$p5OT=~ivQs8SZ9g@e{BTk}2k1tSb&u*XAc6pcm1RrPTI?`ct!YST>>u9v%f1;_XsUW1Je}tjU8YKs-V2}ZMek=F zlTOfw@`FS7<3qr99tuvfKHg_tpZ0F{x#asX!ffo1mS$xzKg>QQDgpbDFclTA(a&1X zNBY5n(A7GNu5Gj@TqyRL6gkVv;dnv4v8shShhTX3RqCwZ=Q~RLRy8?_Wg1jotb0FP zFiFh}y=I*x5%ZX;iuokwC!wAA5f1)!bID*!n+1}fAF+eE(_`a0>~@^(JNUMbtPc1w z_p(wWWP0S zN627B_BV98RIcKcIRj;nZr&?JMSgr49udNurV^aUfp!q5n`Q>os2x+6%}=aOUZf=w z20G~l&d+G)r_}km%=x+A`3X5cwa(8y&d+1c&p-LG{&q)JMlDl7w!!@fnaUmqP!7E_ zj?UH>Zz8ZIFg5F$tBEXSKLK0aQK#)k<)_ReWA}m+% zI&e*(YaVgdp3s@dkh-}b&w6VbgDDxJfw8BT_l(J?I5pjmqcu;=<3o@SifxcJw9O|Q zO$Dp?c0}M{!VYAm7prV9cv7c5Mdswn{y1!9BQmLq{mce##*-X5(p+e9D|tm}Yrd-T zb8G4az{Hsc@A@N?IKO5*Mq_i}%hI4V5Dr2^{@A2EdH2ocNr56;=2`b(#f|W>jEbR= zX~KmK9VWcwaXm6`w_*(6oX>`X`^uXfexkKa>yo1v-1rcgh|~4R963lMG}0N*$Q@WW z8=|x&1c!`OLf~dJbcCOiCU%pGgD-ND0Q^nI-aFUL;_=Q+}yT7#TA-)L(Dgo@E7q({J8cu+aL4%FmNzUg>78?v?ozH*<+4 zJkuY!v!KM!R`_{xV7{KJvulh{+D{8q_fB%>JF_}+l5*BsTlp?MiOaC$N;NrYnE!pL zlqOB8E|P7-`2c~6$6}%$Xe>9?SVT3JU4WO@(#IALfY((V;gU!xJq;IkdVVlYz%ow) z3E2YLKG@c&B7K}vt5rGiPFxya#nEH2k$!JiC|8gMN!tS{Bjb4}zgF`jvAGRVS20~- zqr)J{Uw$W?xgzQ}%ktpRdSoa()Iz-8fXEe@*oAV{cokv?RLVXlq$RNzyo(&na;WsG z*LiltiqAPXThCfxSx=#^pm1!^>b??zMO^BUJXNhZz00Y(&8@lAh+Kf zcr9aau#u03rw$L}f@3+3$VOdh_B#@Fb=zXXt(* zP^-PuiKR%K0zzMr5}}Iazf$upeF*9nk)$ye zReA*vlFt0jI5t1)FcxfT40KsmqQS(8!@|(iSo|ZizCwq z*hhnHFAjgp)sCVM0cSmeL?+_haza<-_d$Mp>C_H_f9$rucUN5O`_f@xU5+(WfD8a9S>)s|B;g~0a8E5b8>5s`HXM^k%G>U-6)1B zG;1}YvJxFG&th&|K^EWM(t@Kr6@z58;zlJ5f|zagS-)VW06GK-I$lG{3|_J%U#$Jw0 zLPp4opW&_x=SgeV=#eRTqc-`C4|D-2gp}sp%()fD9zQT4M;D1NUXNUkEH=}sAUvLF zfiiHEbvLpjHq8xa^v|-?2!*p77NV9MU|oJteG)^g@0 zFZ8=fi&^>zIW8n%iZztoQ*El>x`Bsot@T%kROIxZxg3q*D9Js9DSaRnvP&?@lth1s z^tqPSR09gC$VfsBI+Ev{ux4V;Y@C#53;m@K0zZ31_?h1rs>=EjYDs(P&^+XOw%RW0 zuv2 z>u6QgeG`stao_5Z^MaA7mfxIX1;$RXwAxNu7nB9f%N5#ot7hU_-4tqbaYfLMLYMVu z;o(trq{vBNhHdvsHLE>|si9<^jpQ4Xn!_A%mFz zq;%5$ccz*aEp{y*m7HO`F>0?GyG=V;goS^wRwIP7Rf3~?%c55Iu)_m-9pofL05Mk885L@(dT` z*Z9~3Z!84RL&jb*BO+ZY7^*$aY3ui}E7i`!phmsf_H!r~}vld$>@z5MgSig&&j@qaW;1zM? znM(!uMNz3jVN}p}I_&`Sm0tlfeq=m@H!(FLKBcK#qBNCE$s%PE)}!VEWSB3Q&%*jLdY zMD=%JOAb+0%=3jOcX9G>I&Uh&Z%GuI3K|NcED|7i#{U4uGUZVwlLV*LMOpt>YPD07 zpvckYCAlhMAVD9yeJDKYFg}M~fag>f9!OyzMW1H@5)DW1vU8w}q+F@`F*{B_oX~rx zygUA57}%O38Go%-{5{HaDnkS}tE+@XC`!1H0e2~3bT3L!XY#m|;Een^LK{h2hS)IF zRcQkx**yO2Q~P3L>!>`y{MvU6C~u=r?k&A?zNH$fRx%S3w=jHnqkSjwn%H@Q9^Ys=oe-t*^m zSjpk$j~HAe3PdDt`zH92+kOM-KWKlgcsL@-_U(scnl`!g^frf?*sqW>YE$*X>^WMU zTw7twpTv0envAt~LVEUEOhb(KD4+|PmpDxACp7JgT;e#o{IV!5p8{b1$gkkTE=OxT z)#YfT`I7874xCB6Clp{`m;GB=HN(XnU#i}Fsaa`D*E`L=K(gX*XGxPn_5tJd)QT*g zdb!gSYA-tN@RM%EHv&JIB4w*&m8pv|cePq2PN~I5t6M@_B=XfB%%FjC4PFh2MNIIFl>!M6uAI&Gar?P|ixx^4fP$|V9- z5qN?pO1#UcP1e1H|2Uj+#!9Z|Ji%`+;UwNkTtgO{KU6Lt6uQ@%CuKHH&a_`jbirmzXw!BHH)Vc}Yxm>Y2~m;+8wt_MyZ-BdBqZ&vj~ zQ0E$4Yg!Rp^%{yw>;>pqWsN6AMhjNCl7kXaFp;|__wzM+>>~0hALiuj_-dhxS_%1z zuS$3+AG@DGV6*u8qP_(7TVrsZDV}0K1jx?QbQx>2cmz4De<6@3N)91`^s}6j2fU8j zsNdrJUhV#tyT8T!rbO0W@}_H6{(+=PtY_^Ah!~}aWfd_QaoM^XvEzq&(NUiQBk@B? zy+}n*OMnXJ60p9UEFKcp5z&t##m{^;23cvpR`&$7ikOHbC&p~t0M<9qK6+|W=(e8S zMFPex-Mk%>i8@cHmt@)?RrGQ&D|;uc_-O_D$csOOKA>!ezPxx%f^US2b9V?Wj*ncV zR{r^{{7W7sI3&dn7M|?zgZOXCn_|9P8UonC?WKcp_D+KMMP5nFf{VK1YpnZ!LIJZl z_fke`HO4-%hJ1Uo*wkG8Kkawq6_mpJ7AcfPk1e17&b=Mw+ zP!a^8yDDa+=}}CBbhqZ+QWk|1^(sy0tR_{|4*L_qZ!k|ZG{LWLtA)Vv`IzZ>k^6*5)52|YAuoH4Pz^b9cl6F!zVrQ!KG>l{%H&El2Q!1Htj zJ;C#%H~o;lUB~YKjPDbmZrqQ8@71R#@Ey9t!L?V#E~D!^xDJIy&i7KGqAb z(GwlK#?91({~=zd3SN`(O=E# z5k2SY5nrCZZ;#(BeH(GJNPLy(tLT#KS)fteoO>(YQjP}d!k*Oax+ecVSbFf&f}Egn zcEO=^EFQvK-SDbgJpxn`_GW~Rz1Rr64BP9l?@*Kp-sR;N>P2Rpbn2HQ_1NT*@*FgF zxDNFaw!X!SIW=hnoWPnT@&uE1)sFyx+j9H_KM%9+A_4(~T7QwH3}4S(gjQisb47A> zqUF9sNCKX5Wm-FwHRDROto;nLI@SzC>icBpicM6Ub2OLrQ<3yhS1$-e@+Fk&9MDEb zdu#Ql3Hf6~OVjET^7EQ}I%YLvY;*U!04E-MCJq{)WZ3gzCYO}wyu}RE#1R% zG99ns9r-G-IyH`wiNlmZPZU?R-Wr=R(N7Rn-MFP7?;>*mr-^w4;3*8I-@uI+L2k;| z!xQs7c8NlKHEoFA*S3xIGjWbDafVURY;Hl)z!V5RzyxUE3|eQt5PKgm=H{v@sh;gW zB^VwZd=+fgP0pJ#Jn{RPR~fL(jEeqBHW^8a%EEmn57rviRt7TOM|>P7Se=MBN#FnU z6By~%G8tj%KFG1g`#*@^iS;d0#G(~0xOdQYeS9A-LQH%K~i=yW>lJUSvV zkK*;rA6a{UFmEnXLz|p8-x3F9pc<2;^pE&!uXP!q-WyXlH zn^}{ZYp9RCr;uEX#q44p$sBq}RzNj}eym51^m|_C?i`st7rV1Z?$~i>kDB=Q4GBEE z^W`_m`4Tx&O$HYS$*L;;C7UwRr_ND?k|bviyW!c?V)Tvw!FoiZIXHa>ikH9&%Qw)W z_~!!*P=cR0@eID1qV79VkTP)2Li$^Y=K(YRzC(t{x`{=WlUp3g=;>@(Kz3OJp$%sT zJm-nSzMQ3c**naB;)S4(0Cx3o4^!t)d?ms{@k64d%T`zqoGsW6t`OlqGUBZFWSJGF zNJxFq`-N7g?1D~Qy!9H(o}9r3%M7j%lg;OHQXEJ9#fZa$GPhvmV^iJZ-Cf0-y!xYQkEMu zzThAQvrHkF-#oxyvGB)$Z9j{O=kRA&ZY(9h^F}8zQC}HiWeMXe%<^@{SIXUyESJRA zUx8S#b>JiyTT8*Eq6&qr(3V57CEwGrwN!Z|f=O&;QlY4Wf-xCvbKyekY82E%$Mh~R z#F*OW2uw|Wb5WjsKaZ|{A@A{)6oYs55BujTOG#26`Ate6sfH9-N{^L#Q?X#$@^wN` z35(vRx#*sMCnZ%*cgpQh{R*z=WfAn!9GzJK5|dRtB30xk;7EvCOu(Qqt^lEXTpkGJ z5IZBd!g?7}N=^eb+$Na{*GQ$#6j791vhy8_dp&op?3(Rg}%-g0X>x*z&UPAT&9 zvlw}J{%#`APdd-L<@pah!!_-K+0L)#{`PZ!dvIRE&g_A_C-ld}>P7&%$ld=DRkG+1 zwy9j1Vj{qgX>HG=ao36Y1ZgrawprKwC#gg_PRs`sgTS;e`nvTi@kPK}B7OR8mN>Jr z79!HMy5}g*EH2uk<@TA-ki%;Esox07_f>3}Aj+<69=|1ivrYy58D#_j)^$RZ{#cpZ zmnpxpKFDvr`>Vuf-izFK-OV@6eV^t2-st|$bAIcp`E|0^HA)iy{4sTZiTk)he)&hL zKqLSBM%^m;iPg36wg?pGMk2vuH=PIUHU7j?>KPlAZ{^pRThwsQkb$EO?X`y^|M(i%@Z5WLNrARF` z>!fOxt)i1Uuh@D%;?uJ^?1zwe!qZp|B^v)v6!Fyr3MeFdl-K115J@_5!B3OeNG)FM z%E1!!85)VC!G4#;MH!(l!>vu!@2U9IA9+cDuvT6tQNmi?iB~}YPLOCvz!=fC_yz_W zThLU2TD%&#%4BmuI4UeXYE>f<3WG7{^|!7^FcEfq3u!E!Q8zqpaas^}UFMmLVvlsiQO<{kY5V{fDRr=@#lpDSxI z$a&iY3IO#GRM?@_@8BDAL)N0D#j?uX5Dl1P&LOLa{gyv6DB$VjdPvy(%$%SZDzF-- zu4+XZczF4s6)&;!j#yDcqbO7{=reOLH>p zpYf_z+~Z%$~R9IM)AJ+fL{6Eek`BUg{F%6V%H#&dwmh>D{8hF;@z_v?7{uN z>52J-B|zX;5W+Y(!=A37rCLc18g~|00`RFB%E#%fcf?BYomefi*v36%{Yhq;S^R-K z-^a6c3~RQ%Yo@b&e8Dd(fL(vN{Ko8C_?2blLw-}ziNv?>4n#Duvfvs~S4JVRqZwVw zR6lv!kw*X`yWg;0y6ZdGJw|ID8bsv@nitKf-ao5qFll~Isd;VGSN+}i%3FDw!_(}_ zxmxo&z70H%3$Z<5z{AUctfE&cMhA=ze|U$yyOj~s!`T=#r!}ul$02tqouhis`Pv6hh8bZ)&Y0*a&g+=dHoKE$b z0FxOor+tsfKT}i3f~)i21BS*vKEE*%u%Gj2&kZVXi{_NKtlG#ht{* zICZffMPiKd_(*^k4Svq|`K8EEmO4d3FML(5^76h_bxiz~gd8RJ1-~0wtu=EcU4Cen zv3B3PJjhj8iAqI2r;g5m@rfc$d^A@4S+~6LjHarwTp>U;5K%Qh93{rh$bEK>?w_GO zmpu)Q{tVrmnJM=mFMWj1iV%&y3T2A!8Z*@huIpX?$7eg`}%47a#TaI{n3Er_b#e z9Mz2z!kyo7aXs|a&p~WrTpj=yCpg10A^t{_)6bUQJJpr2pnWCGQYVN+=K?>W43=E) zn+tB@fF7bvD~87BsQCi%iimzM{`@ZOE+*4X4=4SM)S7c^H{JG;-@CT*?C{z-)!nnI z3bf{F9`mAT_5SgdM^tzBgpRB3UQu~83wvh##X#W(HU6{&4Q0q{uPuI#y~U5)PMjdZ zjiz604#B+r#V}NJ*^6qF{SyvPh~+dcr9zI|Ao~;i-mO|VpFkEJ@hmLoyT~z)8oz9S zBA63riH}>|&|Adcq5Koil{r*d{FjYdg9Ij&7hlKIRP{7vt=4dxdJ0K=7hx{t#os@s zH5{eVR`8Ui(yslJ)*$w-^5R)Mt)cGLM?h^$34aw``5Mn>Lo6(5(T2(#JAN^g9(FV#JJbcKR91Rc9PEl_1!J)>gu^)7 z<7@0o*r(iMn5b_4-|1hO!KokHN+ZF4Qfxz+VZpX#KMPE77;p^R?q_5+zEjv=1%8U0{RX4Y;megU;7R9 z)$QLS=owe5+Aia1fO@+5WvxN>Ym^snUeD>J3hK*vlDNb2;;Y%Uy`6lmYo*4i{Iw;1 z({1nl{aS;Zh*MsC^M0+qlziqY;#D)s!v`A8nAxBmz z$c0WDbWfL@O{VbZz&}Ia{gtX;_2&k8zgFJMivvvh^Ho!&JO$*bPxO51?vpnDeFiiB zneO;gE(w2mar3UKi^_{zzR()xsah`LW-7U%sk}JGX>1{d@l~&C4QHvRD_+qWju0F@ zF8%K0ul>$}UiH1Puj<0`;6HI?`ItI+oFw7w0Oz72Hx7F0Erg6^-R$an`d z-dop8Ycu$37dnZuq9thi5uxp4q<$yg7Rl#P?|kWLxlF!)h1I#qnF|x-{Uh~GGd=bx zLO%|jsPVZ?#-~kv$JpCrH}jbOeUW^Z(~p{3qf&nbf9>D$-YVH!+WBiQl~+~UV#&RL zSNIB7ZnW5+spo2epG)Ic@*~?KWF2Z^X-V7CDDhuwgGA40lQvB;2MmfIhdih?dqo-0 zQ3^_mx+-P|ysyumj=P(sBdk~rxhP>{6iwpJV^WA^(6O#S2a^!ds z6&ToWabMl5cZGKN!NJk-1p>DOD|y>OKdWBYlOJM7$a(%q9tjI3vgiejjY;{>_!`CN z7(sUUoOr< zO6|0f_Q9d28H7s>!fPgdqCaHQBgZhJ3)tAr8QX$it$DnRces=02>@x6%d81y-lDgC zo&&4VN3k*UtBTDRo7tDDw%OyIY}<*S0cmpbhL2-x+3%usApHFQ;k1m8gWlITpY9{> zot0ZXA-Q%T`t&q4@p?!_Nnu#^Zy)-IU5Ecw%|Ae80~p?Xk-w7mTH{qe_dLi31Mgd< zkwv*g0KXgXzRIM6+KTkGk!P#tBRuK9x8wM>Nkg#gxsY>#Wi&bvQ;Z4K$^FCVR+vn^K=s zlhoszkyg_>IbY{kniJuO7_nWM|68RBKDjOkw!R3gs-QSIzgN!T@e{&L2p+_wdtVP- zix?|toX&up7|#(rd*2NG+%H4F)>Cw4PsJ`ZyW(Pa8^@tJ9Hn&OotZrqTRD)RBCfuP zSNABnH4Zz2ag5KnBs=|l*92WBv+nfAWPY+_=0u=?&w;JxsZT25H@mpGJRw>Fr?E^Gh z3NO2u5iJG&Bc+qRx8(4apUeH~x_PC?w^~4?%cTW9MVX;youlqcjjbtRbX^m5 z`k2fEgWm0-PB|%E%F<%h_Rv7}EfyNZYem@QGi9URBdbrlcU>H@w*(NSiTL9Q{!zwe zvS(F2-VZ`2Ne#wYj@1l(A*~!It?1H1{Cz62Z*h7T+9T_u>iuiTwvxY+8Sa{!uE=t4t8vbyb%8^cxn&DeOOZLGCBNiukTVZHXAcG zlyb6RsWBs0aBW@1(s$(*bVX&>p;fu=F zgFQ@h=AC8t>=ENmpHic;QNJNlc=mD z_7AKiTMRLgM0fNX_nl9>FU?AlTCdDWOU4c5Tev+RtH}`UzP0^fz{+&u(6w~8L#fnq zPm|VsY`7Z}%0oPx|Cj^n!w1J#&c~!L8n(7n(zWJ!9^*~NT+{YZj^`^5$~pbuk*Lxe zwdV#*(G6~H+*mQg{PhwkPS1|6+0jWkKn-^fsTxPnt;aR<91)IIOP}woI>V<_^7zn1 zzm?tK_3w|&@Tn;&)&q2L2Q$b|PO5GUa#DEz1Fglk`IIUi-;$(PkmudJV2Hvq=E?Du z*|pJygJl8oiwf@DJpWTRK!R>Z{vuIX1LGT=@nv~-m3Ud9M5`A?`1f=NeIC7j{u#E( z3z?nr!g>y)*Wc*s_2xxttWPyB%CFu(q;jxQ@yAzgOjF-oenY%>A?NVz_bh%-Yt}KR zUVq*$btB_|@UA-@by3M(nQ25~J=K->H;%Z&>itCIt#EB7Q92-bbMkvVd- z$TgAUE;7d*>}DXENvkt9KU<&(Z~aG&UCye0k774u5f}({)|4iq-eKR z_X@d1Tyaikqxe%Ks0#nYgVyY!h&gLX^?{+4Ip(bV>H|ZnUcfvdwoG z>lmZ^*S>e#gVhJVtGeI3S{3QI0)=s@}Gq?SCv}KjhlGZ%mV_qGtJ}|!WIHnHA z++IU!N$pW1liIO z1mU_(t;qrp8xJ~43*$cH1A(bd)>}cu_57v~Wo}_`f^)YacTbIEf5^-lSA=P-EZmbB z^4F*x>>P$olfo43n6nN_d%zxlGQp2In82s7s{W|6IvhJDWyH;@k4LK#EMe}dMSJh+FjJAtSBe6&5!UVgb{u@SMrjt;w2*{*8qZW&I#QeKO*(2 z&t*4r@yffQOK!W-BcTg&CV<|d@Dh75_6cA3Wx}&Is4a&z2ZZl&?>e;$l@)Ha<>qA& zW^0TW!x}4FPmYY$0z2Nen!58cAWm$ws~G1NwLPMEoV4Yg(XwcS-&{by+Ty3Eet}o< zlhwW#8XZLSlI5-NRloPGMSXllgF~ExIwv<=hSV62iHLks?Ryo^gV0s%6O%gnxzGCC zGSGPPmb;`w+;bTz&5{lck;TrI>kymb1D$zNednN_d=`bCiXo__vNMLuq@$sM6RPj@ z^yK@^lAa2}Z;9E9R(!#cw01TY97Qi?_P?^}UqZgYCjE+%@>vHG3_-Xzx{=)G$x$gZHb@n1FYih@*W=i#CLYl@>)qr&WyP`y^eNrwf>{m=6z<+Tk+VXzQq1Q-ryH3N#z>;V{N4khQ9yBgb?)X-vdzVb9zP6jY4rN$!O2+m+x!O&c-wn zMfSHUcE;b9bVvUPn8kPhmgqXM=_{7R8VbsaN+T5jBq#2mXozPFOa9z9!y7c;-gb@a zN_HdaFdCyoxN+o_Qn`sf_SW`5VXXAjz1+O8XoNm@zdtgh2kOtA#MmEK2D2=2m?fr{ zwE^#@C7&eA%eK|pQE)}XqPq9#7szlf$Z|D@J6*o27~@{)xO3hq4bqxszO8W489(01 zC+$eQqWZe%6aivF^|<5U7b^E-AjqZJC{@IKM9{Ti~6kPs? z-5~yZ%7H+)W9$)PkGb)#8d~f!0nZ!OkGu9Tk>82KCkR0OoI-TOo(Tj#clsYM9aLv9 zpelz&NfN07eLYt8Px=OSPQPOL7>5UdY$M3V*psVj&Vyb)Vm(~R++VrqEWapn==ejL zWHNITv`qYwT$m^yf`#ibhRDP}QLcKtf{Fi6v92X1{)>^|Dk+@BFBATsO!)1~(k47O z9|96O1bJ_RA-k1733_4HjH?cL$Mq~4gD&lACTDBSQ#?v4G+qgRye+%~Np*1Lpz8hA zT&FM!#}&@p=&2o^=(?su?QP-qCCZ<>IO)&*@BDjf7K?xHrOC>__Xsj#@$B>dXa8RL zYnt*u{+Ir}svA`H!}<5n0>rzf-e|TL7R2vJ;7ieS-KG-l-gf2a zL!{r~DXD!u#MH_`ir)s3-n#t1Acd7yloX zX2$=l`2PRp|4Z|a|Cw2;PG1*6+-#Zy-PLrr1GQE!f6bOWR_ z92dE`?X-Hw&+fR$m#7pu&(>_JR(|o>T75rNNrv)^FPS7o96!6`7e8J3#Sf?=8N~nB zbU!*=^0=k?Ns4&QwR#8Oo(#uX{uw2zN*%BCt(P7x13Mvpd_qo9dgGw$obhHwIti|h zF#hKJqk8$w9nGe^Dd9Iyj+ZLmJj*E`Z*~3GSG(_jbKWa2bKf6!zqctcrp1>z?=z=5 z-&6aBob<(0-1NC1-_hSxdwrjF%G(zw(jC3ZDb+Z`{W^lLPST9&Zjx}fl=fGSJ>h7E z9EqrQ5fFLccgm9=|z)nl@Cc7%HCy1I-zi^82*@#W=BP7M{UPBB!eg)}P~KUKQf z$BV6ka1MJmpByuSeW~P@e2A+cg52wGIr5PSE$~o(o ztBWS}Pi1p)>>2%qc3gYLOO#F6GiFy^l(c6E35$A-<=cUTI6w2K6CN9cHDishJo*Dm}E3X(GAYcin0TY4r3>d+7;*6CTrplXW zUwlD`{#83s6<&H|ApB}zl?0KMhsRZARQ#CKCm+e}oyxg8<~-==tN9h}8Ot5=DL1Bh z;(u`|cmAc$2$vgJJ!vOJ|K@#vgikVMp$CzS5`=PUxV@x3W0_N|q;a0dzKX9+j@`_b zO`tAal&VKX3|<~nRXccejfF#;$;Igo#_#C0dHWK2T2kG!hzm>^B4z!^A`ilZ?(vzo z$+z*9KAx(1T3mSnPaQnrDea(AvGyW)D?DN?(L)8M$J{df7n6HJwNSQ^Dn`RzWc(2GmSb;O8Y-b7^R0+n)9n3O?g)5h(eNx6EroSN-5-TxtyjQm$!LH>y< z|4W!FB!A{+m49X;|LN-MIy?^KpCtK@Qz-`+RLTF{n=1bqiTvL}%4SpFIiJuK_==S3 zUU5=}{eeoq^vTaiznE)EDhEogw^VT3WUd|48sw<-mY+Z>_TPC*@^6>Fh;fxOQp20c zAo3L^10`4?PYK&uL$YW-)8nTn)_Iwyhmota+Fz5`k*(hAC0m_Jjq|vsb}bg*jTIO8 zyj}o1ka>7UosTF4)&s zeV}L2zhHk4&AXNBk(m*>8%1{jTtP+_ELyd{gZhuB*vLzRTw!o9mH_*g!b2M0U-Z z*+hH78`Qj|Uah&(bJHfF_?z|$^?SaCk!Hzqd>S}_W^7qO%uf)9^4w-pM1RrsHMn&e5?$CFCK<%lYR>!9FT z7Y!o8B_@(`CqCltti|Vs?U6DvXUSO}<9b5*+4 z{7EO%778z^*)?$n!)WU8LNZHyQtQ88d+jx&8}~T=s5kYt9R+%ueOjrRZ3uHKj5!R6 zlcY-;7iO&q=jSXXD{k~1r~kZrapC^3y`)jkq@ec9>r&7hZII;I+n9qBbnVE-XE zD*6#B1e9&eoqAhOglt73jGHRPYS^%i3^g&GU|e<;f(qBU4vI0iN%iL!y~KFllI&Dk>@FmJ^m_R7!BnLCg4y@B6l`% zc;BLE(7UJdL>afLd(=Qtzprt;(?r!naIoF_a5>2=?XZ^$4Kq#JO(N^8Gcc_E|J#4e zm;Xoq_x`Z|Ts3rP|FvZQ$3eSJ_fJyYzxRjTf0%fw|E~WS65akM$DLb82VoYxNN54m zAc3yAG`I>nSkYLv<_Bc3Qwy(x=RgBN**{Z(i|SSAkPY$}Sx*QQB9V7_7MEbz=?PuP z-|EWI2vV1O%-bE&uAC2dUQ4E|#V3V#jI8eNUv(TACJWa-VqCS>Ap2RBJvDovU)f~W z5oqS^jtH6#mu@Q+Ju#pBo&$lb zMJttHr{o1t;AQPC$LBHG%>wC>i_=k{omKUm)DET zvz+Iw-|zQ)_jB+<29O&5om8xr7>m8)lj!IY>=@F%x4l>#crew}dNZ{7vIWrKTN4|d zRgbc4Uu|7O4+0%y9^U<61E=JsZY>Thr#GpA!PB)(4RB8?D!RPrjH06D-F3h5ZUrsP zq)7>z*k~xF=ACv@O^+=2$2DgZjTqd2{=X6%+dO*QV0z3oJx0^u(&K+#+j=vNsJlcT zrG_L@x4O;16)k@L)}!++W^VQCwf!I2wxuLMu+pS{ib&8!|Gb&8__%Iz6<{XJc9ZK{_>shH2`$tlv4p&CgChdy2*<;g~E(Lc4_zyfv6>~49&bb#D$9$ba=xrnGxk=luJAJo- z2SJ>0P`}(&bI^vmF!_UP!N$X7`3k2d2Aow$h{IW_A;kod)o^$-20itTV^eCd9OI8A zi}FYrp?jEE=ywocJ_^Pg^K?^3z~=Ln5m!%;5ic(9$Um#DR7eOfnzr=Ae@CPud(5(* zuf?1~M>NEN?e|NVcCXH~@Tm70FE7Lw*z*-QZY-cUuJyL(zs#D^)q_KoFU%W`O&@0_O_k=v zo+F{#tV2_e^VGHf$k7qT%o?R^<%y}C-sR6>?n*9zeR|M4U)MM_SO*6j7xAuy^H}Fy zOUr$D5A=ptg?sdjXJN51$Stg8EXxx$KkTu=iNb5|GXX9f$3{%cIBj-{a`^%mk};L0 z(M{E`@4XO7{73GqH7kg8iIDH7IzN9zf2;%s2lt2-%v^Y&LjbzVw#c5J< z59N}Vj?nikH2}Yt@tR1K=siHVi7_RH`w{PELr0?#(yOHE)-?|p0UqSGE1D*e>|66l zk?*G;G22#kv;1wX#n-S{L(m(|8;qbjd~jw{B=8IzRkmlhNJD7&#)$U$H*g#fs^s$R z*L@C8w;!q@6XCK4i`jBk+O}ItN%R0YLM$aTo1+)k z42reh__b`9-`B7lT@O2Ot+VQ8TyoCFB?o`3>(KRdfAeZ1?oCNu*eT8dLHvS#;xVek zZj3{6?O&am)ER8(I%xh$Fx9ZqR``)lwJXpGQ}s-sGc#K90D*+8B>Sh4&*+aY1Y3Fs zS-0|+sB#yj&D-1v*dG;!F5cP1OaTD?*%aCo%do4q^Z+bI+g{U3b9f|ensZ2|B*aw9 zLOnRxa1)N$JD6Th^5%fHlul|cN&k|f!b_8)n4Biv-nU?1oK=vkZJ5ggkK>i?ta=;Z zYn3aua}O-`Ru?xrBGAKQwjl>LZT(Ux6+T#A)A;lvh-~NGTVx|5)7nUP407TdCAcp# zCA+CBlsbRdAc`VEA_S`FPInB%S=B^R)dwGh@o-4kxd%GgiOIh>6le{N>BQ9scWul2 ztB;?7a^WW+rU*BKcLPp*Jb(lq3s{2Aj-=+r-uu@JKM;o0ZB0qFSo zCqsnFWu2h@BO>>udc5@w>Az2(Y& zaBliKK*7MfFQps<;}RrIns%$}TEgYegbY)&N(-1!Vs!647zUh1nEz1aLr(nfyon_K z5vtte#Ka$mH7&Rz^ZhHH1Fgc6YB(VUZ;}|L6>rfn=f20J{0s-4)|IzCRx_wd>7}W79T3kzSvk7WT6d5DVDT$_A{Y~V;T(lvx`In! zzFpQ!~`Bpm=A_`zAZ3>*;udw0yMoPdKF7V{;N9Vy;rnL#UB3k34Nq}E%mMQU1C8gE^=#w1Dr zBbWHl0^khjm$?fR_JNB1;^Y0&1T1%Z8()>1N*2gJ%Xo6rayJmqw4`^_3xikIAB96c zf)}uzcfbgdiEo`~=6^yn-m<9dGa0=JXL4~1lhR$w1oewv*wi&3ItSkrW-EFHL(l-} z1TJ*fFh%d$iL>MC&_eZ42wdUf`Cj1mp5KxfR%9K6d?*MF4F=k>`2fxH%=e_v&Ak`P zP7zA4hZ5SWc7D>=X;#*zMX$g&wiMatE|`C8c4LEMoD|q!#CpCjqWf6DjAHS^tiOZo zMyr_zKbUzT=~%7xL}669faXsxT!=<$$>vS6A)G!C8S8W0ZPeXaVDr3LCmlOlJ`nPU z2>S;FXJecjs7MA!1eU#b9V@w@mPz*GoJaU^&RPDdcU+UJc;~AJna?I<+WmO$5ld}7 znN?PwmiH4T+$GG>AHCzBpHTdBr~JYTV~Tqo zfhN9R2IptHpNGpkja?{bQ0(j(|14!YFsWI-3sPwOALMSBT5<`C+PJ5Jht8rum?wq) z4{w_%h5ipZKfGs(fGy@pVTyn^%#$tuz;G_mL=D|<3dClpz)WY6Ex+|E z>Pe&NiB5k@Ey=n%yu{u7N!Hb2!nvhdy9t?LhOam4c~(EW4(!XNuJ7kC?9he=DVkf0 zXJ!)wWS58ipl^SN?Omqs+RQ2oC(rEl@BRD$+u!!@{rmuTUg+O1vgK#)wD-n3W$1!^ z{)z1Kiw#Alefxag1%7#1r%d@me}{_m{I{}B6`~K{gMV<41I9PZA1EE@lDrcV){F}R zsR^y)zlhEraB+TULmlus%Ga?ZtH1B*Z!{PGe3MI{Hk(Uex{rFPScy?WI54#HhV{xG zpz#Pl+JEvXmS*^bnJ^PL3>?*(Ln>%~&-?+s@uhEnqRPEsOSje7>HeEfyJM{;gIbxw}7WvPcT#)RG;W z1;_o&lb6gB>n&sxYOFO+3bCcrJQ22#HiK(t(I)dGmsdmkEm?$&|IjbbQ2}k*sU=Sh z(kK5lpFD4#WD{xJOCRS~S%lfJ*{51VkxMMxt+`VRW%6kp*e@t25cG{N^KP~EWbtLv z693-Em)!~f-p7~qFZuM+$Cp*j_I+=B*}K?(-V0wAZL{ASYi2lbM&*cQRe0B#xfZ?|a7?suF8;R_$=^T00YE z9El84=Z|>cq((mU6?2^-yl4}xd^UOJNkv#W9t$=fhSy>)UBd-vOxKaF;hA95>o#3O zEn0@TXX0odofNW6feB^gM7C}}UBf&G0bG{SH4r35o@i{ph4~urdsMy#Ti=|OFh(Dk zrlJ3i-B2DAznuAJoRU5xUiYhilFXNq`0?D2t3_Yq&ec5*6j%sJM+-I*2 z%nY_YSX@Icvep`BbtVWUkUf`NM#^LKNOfhpZmc|BaFiwoQk9ASzsaAux)Lcz_e?-+ZDce+?~9Un1;1)SAzqvGCW1)dm6 zmgL48B5SkU{u5m$-n|zXJZ< zXzxNKTdsVs?yU4=UikDHw%#ZYh^`@Mq}5p*gESj;1;=4dZSgL#UAzJLiF0MHYYm$0 z(q#RjCMUL+!khs-u4beYBa39wxSEpab>nItBLo?Jd$_X8b!s+-l8Yp`A#++CzoF4} zi^#bXJ=#~%Po>M(0}q8NH_!i76z_C1qWC{S`pj6Xm$0GG4+U(uH28Rb zW)**xhv@YBsLq23shaVR8Z5_~*^hsnnckW45BNGgEb6R&aKxP|u5k zPkP>9qSfzoYxIad-e)_!o(|XjPT?|7(N(+7X}LV`JnE_T42$8!X0bGWHO)FP%Pxdk z%3Vu;Wm6gO6dAV#J+t43hc$5~%R#QRUxt1JHo_jXu*rn_*Pv)BYOcXp^R~0-dd4rc zLt^?0VkKZkNgI`kCY}p{yy42NvK2XtQ-ZZ*9eSR3yj^Rh>{q77x*PE*ND^mYRThs$ z6iB0Pv$~p~yuxC$udtx6sPt}A`W}L~o!CyM!1N-`1<@$Yx&HfA(0|$)%ASKZY%2YZ zJX$fNUvz9AT$v-uU=`4sY?lvv~UotDc##U%WjM(9F^M0{oRvYYu-U?eBxX7r-AKUOjFq_{-n_ zDFptl5cmoD>?5!uD)R_TLtyY#c?`}WAt?-6_KU(~F!(?eR+$_M8+`dj9&4%nFImj( zATWun>>*CEsB>pLX>mAhad=Sy4uAfE91hPhI83@0qjt>WFbAT7!>{CVIMWk{b$Y7K zABw%nEJP~*<1CWr7dX5)l#GqC`-oqMMdE{m#N%rI5*^=HfkNyZ(N_W3XwdgggT7%# zpF`ijU^JU%)*6YEWn#uaW8$wP`sc$mO}Q_>C<{_RI^;PMuP0vY%Sx1X&>> z$;)c7IIbk(GZFbctjv+&%17oLlGqro>~NZ93d1XRliv?3;L_IES|>J6%6EqMpF)Sq_9Rf5G*~wyo*#UA~Cww22SzO3R z3?Cliu)#|rn8Z+5vdnzR5eaM&k>zTg$~unSVITnLJeH#$rnh=yA4Pkdti#%Ml}@hf zpz`H3wM@N?U&NA_@kJ8<%zR4xn-XnMuR7O3njM~dU5^;BLz(;-TmJ9aQC7+b8Dvru z+em=Zoioj+&)6m@4!MWcRz_rMRYV6fH5VICq!p7qx?^MO+@$b${BxPkK?L`jn9yJ| zX+?~|?!R-d>&;FCnND4iQ<}5EcBfsOjWC? z(SKsw(0ZsDRQPj#h@PBkTGK|cW%`ZU+lkAUhmWR`iLiQ2no0*}goj*-ogpTNtOVizx| zZm#(e985E>MswagsM+8K-U%jG;{XrKdUw5O0ydlK=E#rtF-RB>x#jLVyF-=lOD8=} z(X?%-6NR`<=(Vt9Ik9hW0T07krez(pbYyJJk2xP4bRS#uBkcW#yf;|vEJBNa#?<~%Tl6OS6u3n?!qJzu&uJnpLHh7Luq7je0U zw#U}|#4+|o<>m=j?j)MmOwp6+ar`d9x|te}`_DV`&xoXk3@4Cw`TUc|wC46(=`VuK z7yyIKLk6IlM;KdM_i8BcG+ueiH+m3!0M@ONXD^6y{q+PG(#^WF5Lg)CjCMzBKXKeBli}h4~`|emH6FF>6L|v`6A-FSc5=%BjnpMe;iY5)7E6&Qvy4 z#$MBHNJru+XVt_&`j>3uB8lzn_Uz8=9huK#E;Uw4GwZ%W(xf4zrs}mOqr$RKV4Yiz-`Vzg-=K6W)khMZ z)nJOs`4XmdnI#A*f1vFat;MOy2r=T@-4p6oCPpW4`^Tr*NN9z2%q7ZNc8K|;or(=~ z?^DX!2iBGKg8BxPxAarzEuAvLa4yizk=h!?1c)_hQvOrJ-|S+C0gch?lX#9k*biK3e7BoVZpKCL zX{}(edHAU2V(l1miTFZ(UX4Iw6}@!{wIa8|m|dAK`E)##JPWuuTXSqN9L1zujTjCu^k^C&qz1R?(LikjFHyXWa4hzF17d*4Oj&lJv)_JTw$xsre z*^0HS5$uG(8NWJfA5bSLWDy})QGG;F-CaiP^3hu7fh%Y%^YQ z!nw6}c}bO3Gv*~rr+oJH)f`;q>9fd)SpX$Gd>Y9ihl;uNpqj$xK72_z`;71S2Pv=) z@ihMx!9DbWt#_B*r~9B|`Sxwwn5CivA$s$lM5yZ*E`JeLhf{tP*G1e?Ov3$*ig&C6f z)iio4-EugwbQ(XRo}A|En)TvpplsVh9*%fvRo_0siDNZ;kgDs7cSou^t0o_PFtBi+aY}* z&Jkn_m+z#cEr!{WE)}kezaF0YvW&IR4B6?>EM;3a zv*q0WILu@Ezx*+DCzSk)9YfDab#8l}5=+tQnwCfz08G|bcrP7K^E2$d@k6aU$;^}blk3AbOdlF(ntuF=o4o(R%%-u_ zX*GIvU({FWFa>wDa4pEo4ntngU^%etUpFx{utSt2+28Kai)YwAoYSjAcdU6Ga-Mz zr?$F^t;dh$9EO!T_0<}LVz5~L*zIX0% zIjaX=lUDP9X-I_qXGW_?f}&nt|Hq3i8iH1-H0J1`KcB$3ND(7CFOBL(WA(q?^v{$Oxvu5MKvUYdwyLZW2_`~UKfXM*F3kPG+HMX zBYM5F>Kqa|lTu~)cjPk-b8<&XN!_eq(~Sd)Z~iqY-Hjbc`m&l1?{Q<>;zo9@L|ZT! zB!|J{sp|e+6Pv3)->v>wU8~tod#W%jJu~$>w@qM(nV-Rj%}mhr4LIIS-kUy&hgo|E z@ldb_;l$%s5AgnZ#^T7Cu8)w4mh7XGc4{yD6jIhL_Z?9sc^r<`Z1^C=bYx;| zbnkeJVRf*c)g;mw+9H)*FvlE{(N0Vfhf56N)QQ$$c`FA@4Dw!IznhGhuiuEg+CKkq zX<~Zt1mbh|gi@yrq6Qkeb<|2te)-xg=T~?|T6|JL% zgL*fS5*t>?LXe??WvX=+Dc=+@efK?K7TYjw-6gK&-Z1EfG)}x=Hp2vs3wW#lu&aB* z`T^tUtr$hhsa|h6k0-7la3YVImq!xI{#*DIk!yLSb5jG82(B=HA`P8pXWA38C{ zno-1Es}HHz;Fyzy-O62aUL-R$UqsIgkzJdUYF-T9Pcz*{{;zf>zUr2DaT+WJjXA^8 zT79FhKqY~$IXd6es*`G7uTFTR=-yLW?M(2{_wJ4kVW5BiLzr&9qd^wPMs+nTNj)DF z&aGYll#$qK#_UeZTPC-EqQ6ZC%b(8Wai+_eA9%Z0W%;E%KALrq#>qzB)%RM4Y?khb zQ?upF)HhG;r_*iG_;uILzbTx$U*aOV{YZe&)^6{#yG^27tCE?pKK5z7F7iIfV;10Z zj7++8?@a=Etkuzb$y@^P-ChW0E{Ju!aNv$PXW0(EkWF2}RNZyAfe9_KfeBsE71mU1 z8CdVF_`PZNc!7iMlDE`8%Jt-`d`~XQ_v8WmAJmhSL24aC95X5QQUi~nP5RnhVlr-d zzq&U&pCtWhcrW_p`KPx$05EV@^!Qnp?AhEkIIpr>h8w9DODix@a#5c6INrDQT!Hw$cLe@|xx65IZ>`CjcJ3;C=R|T6--LK95#^SXeJvMrFL#E{znqJkW;;U{&NfZ^^W`?KhoMB;qD8giU5iS}97C+0 z!<8PalX;6x{;sBu?o7ed8obKVW8+^>P@7fCBCxd}?UaR$m1I~iRIzc-byuXXglPHw zKyOZBt^rjtuDQuETrNshv3bpUKT|qY@rSOZYC_l~YGrK*!1#8Q^P4UKLm@Ghd+3P@SR5L30{S#}qvL21_&K zEtmu+_Ej(lg|7OWtZvNqG9l*;LXSrckfy^J@-Sg$DaDK3xpL6KR0N(^T$GwR{o#q;-{n{vHNu>(e>BJ zCFxCa|4B6{O)YyWOo4MxTidJs+^;_I>Cksb%jK1)nu~@q!ELXWasbL#JHqI&5<9Ma z;^XBVZ64)X{c@!PzoKG^$;IUy(vZ6I*W8)xpl;&A67Xfr6Gj{|cN!0Q-I%q(SkYlFK1HReA#U2A|_{!gs= zU2f&+bN+?nP3GV7x9E93+yC9|g;N8+dd;MwmZQA=wM_+aLz6%L{MoZDj#>6hDpoFNgJs%ivJ9w zyr%#7GZr2@zSz0#tKd?q_ML`3r#Op$E(}J&GGqAnI4iAt+mi7YJ2B}S$A8m_|CX07 zt{W`}@gR%m5So#pM0gZVza*be)=0l$6K*;2W7K5!)MU#yi?47iA9dn4fe~K#D6nY;b{o%>?l|H#}2b(}lx(*f*m98-U+a(3b0go3%0%y|n(kmbnOT{)DzlmgM> zhKljgEzGCk;j{7DrXH%X15t(PN_vvRKU+P1YEyV;5|!BaLsHe^Kw+59j_46&X>Ztb zG5n?;;I@Eg8>em!Qf(QlZ*;if=c^cYi%SwT}1>FvPow{R;sjjM2S;49~y%Ie?LFOsaP2sV7PB2aYW zW16s0v|E%pE>-_PQ}@96XQ%2P))DaVh$NQUG9b`p>*a*9PdjV+rRqDIx(}N7?^OLy zRQi!r{ckdzS_U&ckNualn5Ol$TzS*skU&}cWF=3gCMQEsUY1MNl?$iHXjdnntYJ-y z|3V)E9Jkn_&hQUTz-0@ZT*d;FadCDDRHn-rI(Z{Ispq|j%F?X7wL{Bg>mN;v<-iok ztjqHgO{Ts;yLqE(#W_|JIJ;P^KF`&x{uQ*GiRHh~@{?z!PI*YhBQL(mT``o_y9L%QX(jV>cQZ9IK$`+Q(n*iSj>WD!`YL;h9>WoEyC?f-dclFQZpwpoCW;S&n zGruI!bzjkCgGw773%JhD_skiX=xTVZztKlz;m6uL?Li<-UmEDd|IEkuAiFcp9wm#} zOn5Q;cIfDi%nSXBB~`mK&ciV7;V)8A6uri;je1gl+sNC9PW2u*lF_*BZ4A)LcxxJX#qc%) zS!OwU3d?#6F?&E2gj0vEyIZ=9f$jWc{+gq&bnHC!?&1nJfeBMn>^egaxBa}h#5>XN zWb9&EH4BxwGmmY(?G0wW>Y)U)!pViTaHrF79Jm}V6R4j&o8MM`>&10KUDZD>S8~~G zFIRAB)hRX0xir?7M9nfTm)inMxRhCp&ziYxwU-Ufs>K~#Hpdsz$#C-5Mk`>+w`)zY z$-zxs#ZK&TN;P#Il#$|nw$D_16@!Q@u4sN zR-@nSSLz)~C;Un@0ZLa04G927{&?-gm9IrGGjxpYgaBQVbM?q>TG6y%BtB;~DDvi1bKlv7lr@`#)Q4FAblwmmh6o6)9u^7gnLu8F z%XNy-b~}o=PKdz&HkiQ8O=r~e|vwElzrUP%mmiqIlseI9&$}gH3f)+N_UtUx< zI9Wf7%4VptOPRQqF|ElPE;l+80K-|`U};69MRN})~NxuZ~oVmKPfqwGgw(uRQCmG875P;Oavc?BY4kQ{CxpfYWT-Y zoXVTtMc*?(Jq$RYdQd#c%Rj-FH^Kt9la;hmu2(JRgo8+-Q!SU~+F1 zo4WW!)ssAzf;)U8eR8-CMRQ_;?$jc?BEu&b?TXxDu{g|x_#UYvBrA7B9Xs}!7(&b; zessQ3YCLE4U$tdZ($qTdY<+UO>K~SwXo}@poOiPN5q;J7Uy-Hw%+&BN z`76`ftawHzehrT&JFBl;P?WxmOI249YHTy$-1wk=BINUl9|5=vT*px+*Z-b9k9KH0 z(N{CK*%np%5Q>usVbrDReq3n=Zn>J8e7PF+&u0tk%j*9K{_;%~`Q&r}{?z4tC8(Pp zlG#kjdZYOSbrSxSMm08+70en;NVE(qR#gQuNF@igaAggSX~J`=QXaZG zj646HKM8`eT(rk3^Kbw(A1+*En4BI;Hz)p6HPbW2R*oO(qw&A{{y0WWxJP}E5vFE^ z>DfTKSu8l zkT~khLoM{AJADhKl5p2H(31RaT@0ncEH0t&1%Z~bS3$cVtU`v8M; zTbY{HG?^rgz2%2q{=oe)95Sk4Co}8GDuJ!l>t10W!bjDQlzX2! z8ZeZctP(cEpU>W7LY+m4*PWQQ)d)dcvV2_;NzUZrB~E!nkHr-fR2yn2dC^EX3Klnc z(@2iNTj?ntUp#H{;*vFGl<=OsQDKKuS5mC*S<2hTVuk<88-08wxd$`%l8iI^>P_#* zyi#+=M-nfm=TqepI*@(+j943o65E^RaE~wXF85!5A)L6X)tpm4lX#Kp zQP~P!VbCkRv1(pI3Jd+yP-2}4hY2Mw%a-c)MydoIEDmw5sge}XOowTPg#9JnyY=?< zK|o$d`p5QtOaA?{1@BwZhJEj;BQIQUmX5sUD3!yNM@FZ>O=InO*&Bq*wes(xW&WI7 zIl8W#GkJ>P>Aly}V$-ThqJ*^;*9|iq?GSOZ*?bmbjN5k=_+#x?S$b*gC7dSE5j@{# z8_EzpYZ(xrpxn}|RMG^LtTf!;8Pk(f)ooAitB!(MaLLW1kQ50icGXJ|b0^(=pjlnC)gNUAM^>3X;q_om#6q2%n5Af#fMSE3{wN&UQ&b0%g4i&W~HKs<2cW- zp0n?9A+M^N#QY%WDm5xSwF`N_)>>#j37!J_qTIPJ*%C z@xJmh{ivK&9Q|c@Trqi~Q}v}}foJT+)aw12w=|?{w{k*Rv>`lhq!Sm74T5e-4hZH& zs&iPjPl3>>@;F zJi$k&r5|N0^Wn>ax3a+}<0X6)PC$?fY=lm{QhQh9I^o{FdKVuDK-~9#j~DH-qQr;XdsM5;7Dom?uqKx4&$sVmZ7 z;Un+oNc8YgQ+>K*)HDxsLX4Z7UBwn79wSKfPA7?%ymw%Grd=c+qiCwAl&{Uf;p-=8 zrtl_F?a~1IR7$1;okZYMM&dpUSebYZLm;aYso{JAfgIwWZ4=>u2pA`r1v3W)WDQ+< zB0f!1YzY=8Y)vazGpp_DMa5uxmiUy6Jv~p!>e!5?w)mtBYB}3fYsjQdH-IJ>LV(%_ zy^a%mMl(wKQh!#VbuzCtAEHdti!T!Rks7%&Gp8euZzj#Kq0GHl@>M|2zR-$4jE~eX z^pAUA?_!w3>#tI}Cte?z@YVT*Z(o83rDHh$2sA1aSke>yr2NlQJfT7N)RlDOwh@dm zOY)Y9)VTq(6n@t%sgs(?Cv{SK@0Zk>h3$*f9cM}1(R`eK4cOGa+f3pQq7%~>`uCxv zD>^2_cp_CwN$)#bgmvcHtqc}N?-NzKH&4|}p?{k~OLgszgQ_iss?{y&P0@^^EQj8G zP&AZ!Q<%Ej_dph;vZ^X-GW%{I87WQ11k*0Q6EmZ)~?J8#>+Do5oC?Eqd%l21>*v&~HS;|kzA`^P?5$I!?7Qybcz3Ag1 zoIxz|co&O(Ac~i+r+`L%C!{fb81*@;zf}e38&^!i-OaV4Y?{%Z0zD=*!U4(S(G+Ie z69I!Xf+^|YwvG6G{H9N$A+P@S!gzJd$3ZU(C?%AwHh4}jAp)ACnj4^+g=hJg{RDop zGZg6PK}GLZ=I0_XZitv3 zv>WmmL+;L!De<) z1q`4Q-vD4+$~c%h*eJA|xXo&#sM*OAZ4~$8%i=c;p;pJz&+-Q*BWo{S+b?L;@BY{s zn%2r$-4BJP6Z^TQplK~zoOxXNpc8Kc;%Z{JcuTWHaeu~4V!K}Z)ta~bZk*Gj8+Mrw z#HiOXL1NVV*sq4OUuCt^XD@r4se-6ypc<^E<%b=6_D@4Ieq=%IJV0$qnK3lsLl9?~FuD{n zIUhfV6P@Be&^MMD&qJC}BAmL{K-w_{{B;4X;?v75i7KRMjRLog`)4C2txb=h(^-9Z z53>5kYXFUC&e@Ql_APvSU21$AEZ$0CJyWwE^SX$pYl(ZwQuxAeyDpD>Fb4!fP(Z)9Pud`;Y8 z+Cr|`V|!y_Ed}$H3MrnjxVKce=i>*cAnKQ;oCiR`rVm0v=k`r-gT~p)_Rkk9h1BT> zd39hRemEua-8E%>aI$QgME~?*j0y7nC&L6+@`a(#S^1JQ1&@1&p*J@0{VTIk8ji)6 z?+z?q{+NZ%1Gi!GvcSF1e*I-A&4=8tFA$RZDz*LY*MsvgeK9cEH#3DQZNK~V$9nJA ztM4*%#9`prxa+NctlJAdLFJW`i=&+a&qwn+wTPMbUETu5hOkMJ{GEXHSG{*?8J7Fp zsk6JZc5DdD?O&qp^o5eKpbW{SB69(w<@3q)RJ?Wk=g#UPqqUL$j%Boa?>;+O?2jOb ziL?Sf`x5r~M_8h+X|68c1=^>zZ5)u6ex9-)2%1WjlN-%QJJ9r*dU!zLOqp17pP5N$ z(^7biead5)*!QEqS`4==?G^ho@>f@H`RmkYml-XV7C~az-79rLUL`AiC8v)}mdP!jS3f1jIi5Cbbj0A>c=b7hy3Svg_c>qDIPy#bz zdR{N)OJF(C%c{Lmewh>lCJ)O#Qdmt^XVyy!%SvEpqA&QsZSZh*&OD{)u?>D``3v1i z-}2WR5S8b`JQ731o)iMa4HxwMMrk|}Yy<9?(kPCRA! zc?N`g5dO_hJjgCAjb6xbRyjdUG%6?mW$C{W8xPBNco&```3}z#xE|23@-i*vSG5QI z-$%cwu-M-8|BW8pPEKCi&HR2K{r^z%S}7|jf`;L}I%q?0!bq?1M!G}6hlMtH$o(#b_{{$+*{-h>DM)auRMEi;80ES)uAVbLj19&Pgy z&(bQKZ!bR=g-qcbn$9zYv$;F4e6*OR?N<6ZzrQ`@t}HZIo-_47D(?joF9hFtD%keg zC(}z{G7h+Ts{o4_lS`Hi9=8Ib4Mx|9-SR4K80HS%<;6157IsJ@mKptVUj7$F+R5U9 zJX#uG$!4ZY#G{lX zqSaDP8D@Lx3QH3#RZD-TOPw{Z;K+RrwU&nmmh8*{U%kKc2k{ycSupph>N$h<722W< z&v@{qAE1BQ%)iNJvT^*Hdm^0E`t|-ZPb_b>_*ZLxFgD|y4I+4sWqxzEha)(P-P&u7 zt(K&MxP&P=h3~#X)_}&>SkPL|OYTX5FA@ouh(om;g=>q>hO z{nteFd%GT16-5GVu)Jb4B7ygn^NcunthCF+sUt2BytXbYzPk#(holPD(2AV$ng(((JBu8s3mnNbsoND=$5B_Q!eOVIGx>o5+?9!?Uc ztjCesiS20j9%wf?0F~3wxu+eE=1IziV(l$PT`qqa94*X5`J#2@`g!U<=WjL6g(tbC^0nT)OMoU*1$RL)?zvP`GoKZ`A5@7Q=_CqsY0f%IOVPtmh2JWDUri%%l`Y$X@vATx83W$8 zRrTk!k1EWyi=PL_qNf^3u-@&SK?NKixt?C76V#T2Ki{xhVR{EW^qUz%GdrlHZTlb~ z*HmYk;nZ~1N(MWy(OL9Gs!|ioJx!QLC-5kJDeYLk)LDI}(G7i#$AZ7CfmsJB8+{s! zo4Vgjbi$YgK|Qlde}0BKljfSm9nDlj+8UaPo)UlaGr^A~0qH-}cRd@cmZSXf3EvvN z>GoASS&EmQ$)<=iQRKeJgpv-&uQ1qprUL#~GvcG7=Gj-Q z_*9tk;lwXznIcO?SNqx`ItxT7wN; z4bhTN;uE2Slm2EF-w0b7)bz@iK5ch5VxHGoyuq7Q^JVw9do>}E$}8}Ld=WwvZ1~3L zqG(MhIiZRyBsm|*0r)_+-iY9CwqGN-LsEN~z;C91^aToZKJ~C{WED8Kj37E@>}~me z;t^rvc7DVAQ1TnvAqTVU>OkQ}x!(8q)Dk(XNBi@v_#H#-LWv!OiD+wQ8D{mf^MAjV zqRLsd+h2$DTqa@soAaa07CYrL&f?8H;DgBoi8XFvzYI2ZiTsIWWtJyH|F#VIwCEB` zHb_MvOrZebdXxLHZjsa|jCSu^GIR&ugi^6lg`}y0XK6(t7(bo)&|BKPR+Zz#+_*&) zmliF_JztOgHivy$B$qaaP)am6bdYJ2#f9ej>t|>rfn4-K%@z>dF=}>zX|_spihg{1 z*1;rke;JeFjrbclku=xPj8Y!iZLF5B!sANG7|un08#CXWYre7DUiKS8wPGJP-=Lv5 zoQojF!lb{C$=CFH03c6re9O1iCBKiIGDoX;KBOo}F1%!J)u6&!?OJ-JWA_sfp>DUG(f9@h6xww z>lzBC;0#08%Ny6q{OYXQ>5nZt+7_O|>)x;W(`%vlW_ACB9P=lU{KmDd{B_T;B>x$m z>tncWa3V0ZCH*I}YzQha(|wct7$v-`uaPv;Kubk7zL(fGKfc$<7oztgS-ArU7vaOR z^uEw#YSVMw-4}himqf9(gdX>lDDwImk@0Zq)FT_w;0K-<^SmfL`h6HMAX<8hjdZx( z=-Sm?lOOtC=@;6KplY8j?b5idBXoOQi>&8}$O2q*nJ^RDZWuEEn=0P5o83VV^5P1z zvj8-|^x%%j5#o>Fk!I@kx~K3WQ7GqcAIS?a#sZ-IB2#PWtkEZ%yeUf%!tcelZvxN)RTVGk_Ox+*3)jR>=W(q1FnOEtoQij8TvuY#Zi-}R% zA=oL#!*#Gza0>Sg>=Zla3{xJ)#D=D=tqt!YBfP9;ZBLraWaCj`^$C8*;#Zqy3`)|P zCWO3|^TztELAqMi+%Ns+rb5mS(A-Rl`I5+e)I0BG%9ZJ&_tb8H*@5ILH@-6AB!E(`I(a&w!{jU>oBD?2f)8b>Tz(LPx0gE-%aF))t6BLP1(WgK(58IlhxX0QgV(!b+r z0e&-7i9Li-+v-E(otr=uVKGG zhy7khXcMWcgk=6WCzx?c|qVY((o`5xV1AF*R z=azf5uB*>M;@u{RcaJvkpXwR#o!h@jW;KZSX3t#ftO{!TCPPfWP-BQAqB@6)pnYS&GDyr0|no^7{TyGg34u-!TyrLWTnY@E&w z@C}UfA3RPDZQN$$v^|z-_-npB%QG;}A&uLtm}bW5tO{9{VJjeShEKXL#?4Tn8(A?; zR+04As7&&<-`*SSJ-yp|j%WV(K74y-ybQ6Rz1ua!6qV_G1XkS0VD?L|8iPr3&^ znuY)U;`=|S!>DwkC-%noA+Wp;JI(hPFqdHcX9+Te2))r+^=J>q_WRV9S941lZvh>D z)~uR4i_q~~Ra-J;DSF&e^fuAh5@JoD=+BY6FrhpX4SOKz=Riao_89JeHZ=XMIdK1O zAkhKuKOT}Ub0+AQM4gM61D2d3~pOkrc6P&@!9|7ANEHyx}b(y5k#+YSyk9TagX z=%C0-p8Fg=CB2Lp0w`jPK@$q18+}x2HU#D^=av>a>8y4kFk3}n-W7rQg`P3l!Z$P_ z{e*MOKu>+h1|XkseIL_r(7g1(^u_gnGAr~C97A&L$DhCP67mR6vm2pn{XB8L`ywMK z+z6T1VC8dlqjTF}4=&)^%cHO7B_A+^!!~*&m(>(oK@5MG2!rNRsHFV(Z6jS; zWa1gG>TZza|EgtKFl7o&wOtKu!8HjHH0M zO8*gy45ER^ThK6CzFEysbkHq*GIQti;GpS8cE#v|Fx$-%_||3(MWWAzx+)BGF?W0jF#mB(=pkCpYe97gh8e%^BQD2oePUh z`7P}(KsvwJ0H}g@dv9qnLly(SO!Mp=Ik4>wu$$>(Vxzp^dIM$R{$U>)Cg&e&K`8NL z`Zg-;V@Y%CMUiVMvL7V5km)5aki6>eFq)J6Fs-({?v`HQ%!a~dl8e&KMxh->MWM#m zY}~EXB~WamFIoIHJH53Br_)@1;EEfb$ga3CD!U>KQ$+!LfI$j~@DBenStAYzWEW9P z`MEn3dzRI=kgh@LzH|DPd_1k2yj@mMH+h4Mxi18yZ^3HJ;c*;B-WEJRr(sV&(}&XK z#Ua}8uG(1OxMTP0z!TxrsVlCxCR-xZtfEChXlOQlZX&O5;kBqCKlS_^K>PB4h1w-P z%d~0KE(g-L6c~*2`j)WWKSaXWgZCtt8XU5?V&lZB$w(Eyn<JXr*5Q6x)CMykt*gKNYepyBTDI#G*(*M&ENx6OU7ON zt26}pY#nlle735we+~ksten_W&i^oajfpuqXCJ+W-DL~)8bg*+ImT?8)gxJ_JkhE1=2F)QQ@c5)06ah#`I#y~sN~^dg_=F;97hxG%kk z46Esn@rUv3qZj$Bp7+vE=v3(s)K8FV5WPsZ)lbMvFqB$csGrcO(mnMep2$>IA9K6r zw^zG2>Dfopi-h>1r?j+4Iik}iX#_p=A{)d<_tJ|PCqvubhu2e>aWm8+T0VnTFgF{$ z$ZQ%Y(5GefBho|kZuh(D-A8S=5AJ<3O{OPNne;Jv_GYhlSPPvKd$Su&L6*IdX&c~; zu?kuTUoT=f+fA$e@`^yra<=DbK-uz@8=Tl5+0o=ZxDFUM4%h3A9>OS^eGRtK7=i9wdjFPXB-n6g&;^ad8#f@hf-NoIYfpix~`eNst!wN;tsAF)|lDOly#gBmerrU={@@s zpO>pCj$V#XRCjS!Ao~1r%fm%O2t#$%$$Os^tD>}Nysi6+7uAXQhnFv$#kbIsFY`7VnYU{Ujqb?6cZ!ASts7@PgZ@y$f}F?E30O{ zRRD1k6Z}aokS}jG&|v&z_amk%xEWNGunC4#AcgwlkfiLt$O|eL^U%7cZb7>Dm&xLM z@5LI8u!tzQ+f98})0OY4o!Wb~Tz#u2h%7A-!G;-kCEG^g!Su5RH@|BprCBn*@3FMU zny=e3Pv=`gb~668f~A5i24rU}ja0r9{SRx)auMYZtMYh8bKz;(SHjL*%>E!s7Q}I4{R%`8Tt^ zlMCySTVl4JedgyF>dCFI#OuD-clW11()zYTmvZBf5j5NWKI8Zi6$6{V%>v+aZ}gL) z)WT9v8xI%2cYD3}4fFk8!8c_{pXtMAces47H(ed;4WIk2?`fu3c712%*O#I_))#wv zZhZrMANav`|zng5UzASBX?haXA7fe_q{3F57*|1l+d7r?|e&_wu^lbm|Gq|vxJy6_i zJ^R4VzmF@J|NX_Sz@6-Qd3i~g8 zjUizB(1+ch(lGmgp99f{Ha;={!s=W4;1m6m_oWZt6y1N%COP)${(R{E_0at{e7e7& z)VrQdEtFaSUOZIqUBL}+g%=cqqJbClvjn+@wj*qDyaTV^h!)TX>N&o!o}&xuF_@!z zvV`%!$7xGBR=#{LWtSm$bU(rosaS$Ry8nz=#?Izb0r++>*UH`k10GQF=; zdnj2wYMPs@uTm;uXH5~_blwHI=j~M$X4>1Us?2Zdh(}I4on-T!Zt934u5{)F>FSoQ zjUnhCO&@qZ>$veMVRPFjroq{C|nBOn^mA7<|-_qw0XeO_I(ggLD{qyQwcAmE?JY|npv4=7+h z7UCW?kZ*qcd1; z0-XsnS70S$8CjtE&vz)4=nj>0#>`%C&bdrbUq6ng zxNu@dF=rA9B@0KYgH$=yiQ}{gBu08~X1*^Y2v8ZcQ?;8q(qi|7Pbi71+m4vRFxw}i>^HxV4@8aFOH%Q*K=Jf% zp-b|y#lunmL6p79u?&wK`y}$_KPLeMcDV`IoY{cNG-&tvQ2ZokEheTm7%JkZDzdba zXM817vYcM?iw`AguL*o(12K}p68D5)vD-eu@5uzy6YdR;JF!oxng?<{Qs{n{v-qc` z@^ zuUWy_s3oBjCKZR;YfLxzHQnIX@5T%iY3^Tpbfd#r{G6U9+P!0JH(JBVt6IZ>7bA(Q ziuq5J#q^PpXNy{5cbZhF=lK(#{{5~owyw93WQ2$ud>9!{YYuY#bK0z%X1iyH;6|Co6?)>$f zTezM#Y3B2w8y(fk`p#wM^YHskv!2ny^)&FCng?#czK*17E$1vP+NBj*U1>seH`6TS z*99*5)twG@5a_`Y=jn_bJ`Kk-w*Wv&yGG zM`=^|ry760mRW-JcM-w*+2=Yk!+VnF-sAquf!-ae@&Vl@+A~LCp3aQ(N~ds}yuY3u$UFZv&D>`1 zeKkl17c?=x-!i9WD+~CQ-I%W|ipn2(=9NrA51!*D^P)E+q>e6F;(eccLiD@| z5k?r{se##;K1nWE;r&h*4D2{t>oSyO(Jz@=zpXdfaj87DzCM9UJpQPU1NGmm4xvpSy{PsbzujTp8K&=?Ab^F& zo2}CRdf#E|Odldxc_(NG-08h;ue^cTF^~7lO`^&?ze7F*w`qN`)U zMsl*hJZ_L>y>st6waj zKko_H!1Q5W`{}v(G0jS*$$R-IO;UU22!Y!`p;a}b_Wt1U36S%dk3llVUDXQYC#Sa> z(D|-jWkF|=DL1_}^PG3cBp-t&=ozW(y{~d11ltO3d5?XG*Hr(ntiIu|L+!tS<%B~R zF7L}8+n!hBPh($gmGI{#PgkrKE4Iun-(gtRwl1COzLqnzk&wl1##`@W?Tesst*%qk z=>|HT@2nN~7(U@TjwE?PfjaS<#1YC+WI~SGZN`dFa&Wl+buFAWl;<$>+-EbhUIG|e zjx(`NV8g9pJVWI#II%-jXO1ZkakBE_(LB=NfAKj3g-c8oRBu2I<~$Tw#}dL{)|9Yk zj)ZJ7ih+E@Bne;og2N8u?3raeB6y2crLF`at9c_IX3(rn7k4psg)I?C9kB(ywEK01jnXeig! zd#&6>DqpU9QFZysn0X_mjQQ1}U@a`0NE~W^C$6J288#?cw@eRps-xYw6VLg4XEAKo zHF{eMNC4?G8F$_rMkFxOG5__z7hYSP18UiFI>*!0Q#g-r%Zp#2S zaj+pm7qLwYXmb-2q|KOCz$`+2muQ94Lt(XYH(k0Zkdz}Uyf}&h(4!^&4VX!695){6 zed-Hh)2>>Q)&Yj*LIRjKZaAu23JmlD6!1>u)@{ksQ2Mrl!}nZg67&v1mD38_USW*w z{Ph1nxO*4ysH&^~KS98t=mA7TD~f%wLe;)tQHem!XrdEM6cv?ft+ckO*Ge^sXuTxP zOkg@5#VTrTsq|v2t-fkskxNAq(12JKP!VmbsIAT+UJxxttnmMQ*FH0ICIr;BKJV}O z^E_nE+2`zi_GRsLUu$=e@pt^Q!+Moue;ZbhI^o>;bqE)yeTHzwAkX>zJHNB-JnvX05+hm` z?8}lf6~QU?yQJgM?D@1L>~ykml1n?TEhyL67f>M%LysJmj6-|#n_1hX3vn&m5YXTIY1Pl{An+#6A9v(S=NHTFmAn>Rl!eoowy3rTPSj; zvq35(uEe!fCa?|qQOZuKV4qLW8@HiTHHhL~&t`LP@&xxNQ6}8Q{cJ%T_d~hApZmMQ z`{CTrAo&K;aq}bkeA}|=@ZW9RYau;lW1m2Jac?meq+5I_hVCQ z{PU)ROkj+%@dI6)8wb#~eW;zrQL1)AglOyaw?Ky-KUM9YHMKVVHepdv(ONJSN|(f2 zQ$e3ot1~GLiF$)=TFeKS7b7G%)x--FMW}CTx+?-ph7>q$&0x{3-@iKjbjV+ree#W$ zh2}#0e_-#r^gt4j;P{j1+|ckAn7``$c;enN-YAVtHw8akoI*dcbjJ(r<+C~s zQZ3m-jeqA*-o}Y-0zc|B-q8Y5Hi|8O<`i(nr9hyC?LfbP*ukur)shxBGiS0I$mLzS zl!umMfhH&AnsgpNYCU`EO9J}i0nt;2+czv_35|}V!nwH$`Sy8ljs(U+`vCKtsaE1X zlfG0n^^Wy^sVOb(Q|tc9L_JjX2X8KFP2Vz;)Oi=5)x@9g&VVw4`Z@aV;)`b2rB69m zBod-I#_NAhoKxE;W$&RjwKOf+*}Be$ciKkZ0prN2%f1so&>alZa0K}_HOUbgknJOO zEj*qqQBgLv=50%yGKuLI2ellno%A0J#d!<)NP9S2GGt}DN!$E5?H zyk+t7=Nkgl7D>$pg7u+y)3!JFyT6cjqrP`16~;$7%cD?cd+` z`26}eVtf6Y`sv`W>T~R0nzpw&f1k2{cMkge<}aY_f46_VKF9u5|2zFNEx<%h-2EN| z=RJA*)Mj?==nJuQ_zT7^h6M{bsB+lg@|D$I4d(~Pyq~qgZ#2AGn|_6yRt@`%YAs)W zW{p>~w#LIrC%u-VKV#oGOL(rv{~rEs-y2*%NIc;6*x{*@*%>3cSjMF@)WWF0omr?8 z8DG>LY46!I`MeYL2SkFAlf-CB9Qx zK4s`tr^}%>F?DcBjaRiK?p3bAyOxi&#=ar%gR_>*xatHj>`*dB)Ss`47r_`;j-}#0 zR`G{}OVDVnp>it~J02sxAaTv`l7>;Vq0_FzW`cHjgpj{TuRn9ts@OO54f{e)@4{Cy zM-7dYSCw47n6@EU`Bw@IpN*>6QM%$q*E;e=5!ovrT(5XyLv1?_mHYEydKKN;CBoZ-)iDA8v}8 z{;4r4@G2KmbGR)hNHS+49H-V;uU^g$h4S*T^~g{252Q_!r?9SA{`uhj z;Rk(JS=QlMCYPmWDFJp3XR!NsDm0z;=2?5GR=b;3!cX=wI1QMFd(}3yy`QS2-|+h1 zt15b+x2QUXA4-Swlf98TnUrcII(PI^d%znL$~T7d3_32z!}kJQyiuNDbl#HfhqE70 z{e!sQYtBI7lPa-gY7*(dI>$G;wC4Gkdf|<@Q(y2#SP!y8iof|QHO{$+yofNO@z!MS z)wpU#;KT6Iu9r0hO6_BvfK#|<7+Ia@$TU3b=tw_0a^Y^SBf%wNz7ikp<+Y4fjW1}; z{6l{f);QJG*d+$j%i|Ku)0=y#IeclPz2v3d;|0CQPf4&B?bc-GXno@TkiY%c@RCGl zPcO9tf)vq>6&j+&59KFfj;7pA#6rz;ej?_$iCAb0Ht=GF)6Vb5C-95_)Di|4J9^2N z=^u%F7GOQ+5xeMv>~HIpA+r8-W?Pe!m^zY^fG^N{iG}x5z};EgxhA-IN7gxi;WBl^ z-{mA$w8rnXD_x)8M5CsRd_-5HTC;yalagP7l)8p@v>^SFA-quI`>v5*qiH0*w2jGN zZ913sIF+Yy|B9aF>)Wqg%r!T=um2)j?8Npa`*6u4kEj8!a=BcRw#?BcurJ3>pTKv& z!*>yQYzvVzI6G1PQ<;=@ZhLA4e@ioC5QHX^&g?dNBgDHqlbXF}6()Op2K4ekAFW9%JnrI#w+bupKl|AV+{RCEIrR$@ zZXl0?4x*3%EYazCEn{e8fdB*e?ZK1^;%DNIH(#TWhWJ5V&^8mG@jFLQ#&jV52pGaG z$&NE*klTiH4D4oI2>67Mmbyjta=S0pr7I5905ElIARS!Guh;TLIw4k&-Gf%&~sLz$8~o-vMv8V?^*4GqWb zC~t&ySI>)fliNm5UO=45--S2WCNsWoiByxNG$6#z!E{<89arLhn%vI}evoO7qzmCL zlP^{__5)Y_t+2Uofl?S&Qc)5)Jjv$jvoAXh6p-vgIlD4m7}SSa;2SCSQa{%s4s`SM zID^zYt$^xko@NM2qVqJtP6r7GoLgC@Ah)=A6k<#2jc{wZ@_but5t|G%d>!kP=LH@xF_XOHarSjz<&_z$h1cILh{EBGxT5k# zsfNGHFYY>&Zd-%#^a)dfy{sXlTwt;@7^_iCqlL6~eZ8>I($q4V;aN!{%L%^dIosCm z$arQ`>g);jLVO3KrZ^7%vDYztB~I4~aSKP1_JtAX!b>~Tv-0@Jd1pYt>-(7D#PDTi zj^60#KO;VZgjDBOplU6J1G{=i97WK|4=oM#tG#PV*Tu^Zxr89~Wjws*wYcBwPd`1r zM2FobH;a+T*v_wp2{9#9jaQZB#PBh63Ewi?=dsMO|I}1XWFO$JR*815E!#Vu`PpOP zZquw;luY~?Nc*g{>UhWkq&Q4-Z|dP-NTOvFaIs8PUp1x^t?JOn*Y?xjQ->N?LeL73 zq?rr5rDtc2gxMG@2!rR~ho<}SBUO|)!mrSS5i=*)&#cLMFc!*w7j4w~XO}&~f|R%u zGGc~`JND%0w823+#+b81w+c1fK-TASIq zHuZS@*K5k3u75PUg+LO^jk_fKK9_i?mmghLKd$gLT_V=pC-Hk3z#q9!InzwvShJ}JV-gznr9 z0QSAqET|SG0&W0kqyQxOZHuhwAq8NvMc4i=xAYMlanMC0_oKGVKXz|c(;qTzWmQRK zrsup^`eW^fk+G;D#m($SZmAuWQw3dcqRAZfIy?FykFar?6mryZfeOb?7zrIq zOdV6APA;ja;h1SM6WIJ#W~@Ip&AByjScq*kr%V&P*h|TN5YP0eJ?E|1{9jFEnil9U z8Qrr>W2BT|h38J$i=3v_16cT_F=0$}zdz_l(S(VKiV3BGScHNEz{j=IyY3K_bbzTU zhdY8F+YLp#MJ&GdM*q|#eu9_zlj!VSzyAXEeo6H?f5P^1Tik#6NdYX!13$-d`uQG=idRJW1zhi`xZ`}MXCWZ3Y_{fHLZSK6}mjtLbvx_f# z9d>+j9#lByG0hDp0^81TXldtJV#?xahr0rcO3b}M$bo-;X?5FM=vY$~wulab z(le*%E<|b2Xx$kw;TXQ`lHtKkOlD!dYBD%5uJop@lHiqtttq@x1CHlOBLUtfcP%ZM zq#lw+9=71Yy&%mXML5)u>3pP>yX;qX$a9U^FYbZA>*K^EI!>-67$w7n<5&84Ennfu z0_d4G@RNfb0X`8sljh>0JxWT9n+oQrPP!~;L*-dD>aAc`CL~9;2khx;?dfVIt2^`U z5B6G4p?eGVbnSl}w*Ssx*M2$A7?$CFV}vFJ8~9MJJ706J$J4&v$j+x0`%~9KI$tad zqrca(7$mr0fcs4U@H5k?paXKm3?>zFnrnE6;)W*|H>|l@(BC!nw>{k0#;YlzFEw>n zq^ak^7xs?6FpU?&86M!ZTuZeDySerr2w#7TMVT)|sP-mB+WWP8Avfm7crP+$Emn}` z&y0q~1%q9ai^C>w=T%xuy+e|cqDh?`%qsM!Pvd^MStt)Hek(YK-HX|8@`3q4Ze$?;Pe+R>n4Sg3?vgCE?h4ygk4d}Qxh}$Kqj3tQHk+udr zNQ4E@MI43Prc-BuI~DM8hE^TJf7noZ%3wP(WHBpW!@HH~cSb!mYr$@oHrRqt3UDN(&+NamA1H7yQKC&m?|g-iWI(WR188Mc#;pq1nze+|Jwt0tl{Rj-Zp(NO`q7 z9sOj8Zm^ao-rN(ga>OTI+OsYlpU7R$T5W<3h)5Nd&ECx5<1vgQRp}K~<;$-+w9@Ze zUVF}Sl*AH`m7d@aTv0WmEe3~-d)09RVt)1Jx+*OAx*NowD+b2=%dzmS51t~ThsKUk zizo20nob^#E`ws$boQ$p@e~)8odfF9^__#fxf}fxN`sTA0XzuXqv3hsfjr<4li;Pk z1!@LxPVk4lr3uUKIYd!=dPuB$8yqJhm@8;IB#nWes9($?p z3Mvx|n|NB{CCkB#h?d5%5V(Tc^MYAS0!+*;1+FzsH$?=Ia(6?qajt1 zR=+PgSHDRO<4cuzpU%|+0bj~Y9R*!21GD!XTYo@%>7La~du~?O9f3)yMkA36ur2k^ zgq-f*G80Ob&w|p)I>)6C$(9E-^vg^+H?^^$Pvw~9jSHst?|6s=>dJ|gXzx*3{`!?! z|B@Y=HVuk-$G%rFeN@M7RmoNLKUgIE)Sj9_uS>IMq0(EV5UTi6b%37=Ark$Hc@Q@u z^+onjQ~gaXlQm8wpRd#R)$pbf2O)40JU^?zYU z&d{Wi`kNni98#Te0vXezW;@T`vL)GC|6p*Vz&eb>%Q4k_J>1Zlli2X9>USqazf^I% zx2bpP*&T*6XBlTuK1-|NwM+q(5S%mPxWu@RO6qrl#fQz`(!1fExPSCWgsTuK&p0kq z`5tUL8%M{)J858Z?}lvC52pfF{UI%8lyypF)+KUDv^JIX+yitWCVNyXt6*PF z-OQJdOI-QdNP3~eu5nOe0RQaWunt6aLZ-5V$jPS(7Rv5?hNP}oS$(gXu_g6;GRbNQ zglx}E-I_h%B`wTjr8RyWB=Y8Ei`pyBM^c&$30c?=1jJ-4qmmQVvhx>F;xFt3TW9ap zb!Mg{9+p%uRi|H|w_4B4PBs3yV`}`0b8Qkpawo-3Py4fZG+!{AZTb#vo)J5%OCe_j)P^!nd5!+!3c%};hT5=d~Oe5y02jI2&80NQ4ac zVtRGF?QK}~%O_DXg;u2x?UOjN2Pd0Jki$!wLO>O%_p<%SLn7Reez!Jr&@zQPdK_%U z|5e_7D{K7=PeldV_wd{)waaV$%G%8|JCrJ!J`SMBiknoX^o*0lA6gC=DuB>IA~X%? zn}9GJJ3YJ8w}HAzv9AY8yN-{=6y{!l3-)ID=4er?{fWD5t}8tR`k^NP;z*PFJ5je) zz+u+K5*P0B&(g%g33P#{19)23+@qvlP^S0frO^#SC=J%}deIjLR(Nv_j4CrnpBwkD z9Iz>K%6B+M=btsD@6?rg$NPPU#r@G2`O_>KmF>cc-nw z&^Y()?H=CronhAf%8E@V_&sgINRxS64IXduhbhHgbYELdX|}^lyv+{jOl$_C*T9;= zUe%!-2$;HXn04tg&v=x&M2~*KzI;LYG8ExN8Zxe6^k{%~1_6g-z%1FDPZcU?b(n{f z!|M0WV;-|RgxKlc7wol~%<&^@eFAmUgl;~SJzbT@Rty);Dl5iWJoncN^IS?zp(!Yv zaCu3fwEzdj`B_@>b(I{sL5;5`r}eRWbC}#asO`^rveF+|E*|G$=~zzi`z{l=!+x!X z#re^^*I39{`f?bU1@m=XmHw7Ep6WqC_HCMX(i}FO#Y}h3T(fv*C%ZJ`k0(5EnE`l2 z+B!E#1_E|l`^=@2Lx4*gti=-_0#zPJ2?i#$BfsKgk}pC^;+b9UeSIuHbJhZdC-_hz zJJWlTpf$70-FlYxC)=Hl?zAh^LGkoTI0_EB3(C@uS7-V@5g$8Kb-Zb#p<%GG_2Xjx zjU^Ha{edSP#c6caTI&PY0o91ked47n^YpteaYU&QX!GI{4Xb=*!&^1w?G4w*{L``6 zZh=iUsKT{~4>0K^>6OR(1HXg1c7ncm!qc1};}0BwJ|uizm$uQ=lH?30q_D9119YIN zICp45NrcY@IKhpq=82K0OTC9sY_2Oyud2=rToLC;CSLKbz1naudw+K>{OjG2`W}bR z*Clqc!e+);L43lX|snZJ+AWWgUAYtiNP0Z_}`#y#lQ2uWT8&23f!6~?jQFiU; z4bRw&u?pVx^XL$#O3?y3bS(u6(wU1*X?PXH<`GFw;miwFo=I7HabjKR)cT|SzTbgy zH%V~RmJeQtr62ceDn5>R_x*`%0_Qx%emNN@x|&*Cppbv&X_hKc$R+-Vs~k3}?^~If zHIL7t+^g?Xq0>%&#N(KMat{!k1{Tf^N%0<9Rg*dBX;ZSF%>#B4{WY>y>!(U=A!mvj#vaxK;&qNr9_b9`g9N}<8c*U-?9SPE4aqW zobc~h8O+g}IStHo04L#VAh}=-8EB;^Nk58S7g|PjCExHZD2INEt+d3m`ta|eMRM`e$J5ef+=H4ZxK^0etEFU*aF6U$ENhD0ar52J=047(D}ozNCB@pa8R!Xo^g zt5K^)Z5)M)#Q-^`4IBVfppx89WcxjN0o^e4R+E00?VP>hFE}A2Y=n@Eg_?wL>16UsR}DiZ zS;j}a)WO1kMq4xu$BH*_j5rgdZm467T;zo5{c-Ifx|_|N%)26}ylxLO#>2)#P2FKg z`aCRu%DdrEwdwDE3RTN@@~%@XRGQ-)cKOZKrf19`!OKbDUm3Z`v8KZb2h|oSrYY!+Q2`HLs(lc32y` zFS=&KXCP|>d;V%hnB?JVee=byfA*{G* z%LZGKg*+>&JX@7F{ngQF|3vI z4@hqj{Dcp%TfTE#ez$<}v}QajJ?D8QAJgb7!A3E) zp`U^-IXg&u&ELDso0}{X!{Cq*V3#}r7#E5iQ5PF~`hd&+yDqlF=>tcgs@N^wyhN<6 z%-)sdcM5fT*AEqcF?ToExnuj)K|_|qR&CkT_^f|zt5L>`YSfKyF7c*`8}{ZdZhmFU zH54^(y5=LVC94h9ylK%#-ZXhI9o+O0n!&YRpJg%79ANcL!-ebfxDaKN!-bXQ=MKGc z9pa#KbZB^^7Pf9=6{XjFIjqyyJ@S&qR$6|!_+YE|y473J@d}@ABBj_>eEPBj=Pg<& zg1V{Vqx!z{THST*qlSa)(mQC#;pl^n%+|cc?s4*?dbN@IsA0ExODO7iX5M~A^*5D# zRKL`}_S?)+$0E>>rkkU{9RV0GQNT-nQ!BU?x(m*xeGO(O4aU1Z#jF{Eui-3tTFE~7 z-UbNOxghpAx;Gq;$0e5`;s>Kn){F0(-N3*5cLkQeR^%!9VyTKK9^> zu8;TC;}n19wJ~|YOk*l6!~R`|xQgG<>pqYx3#A6ntvvDEw8SReBZxcdOCXUa%_i#6va0g8z3biwldD`(@aybM zp*1o+x%wNZ-&hIC6*7fG`3eexaqH@_B^gTQPTvXW&fgm#TmRfA=rw z=bVzv05tbE9Fx_{zLo=D2!Aw(%I&h#o5#xxpBYC$={S;GN|S}Ta8tvZ!5+L`y|h&* zGWe~OKkizlz1z6W%XOy#PQlfr!vKte7Q6-Z`*VJ!zv}hw?W18vu9;HOK26G5_O8MU zj~!FL8>N#<>h}qDT%}FY#6tnr5xytFbp_u5z0oQaTr zh7-`fVM%xV6JcH_4EK-15LVe_1IU%rVF zC_^tvf??4=y}3P)BB{$}eCit(ptt(^QMmJ4{;U;dfy}w7*Z2o<&{=7iP0Js0)lTpr zE`qZ%?eA^CeA%R!xg+4SK5&2WT}lgvMJ&--iZD_NDyf}cop=rc#;LIRkht1(fZ#ZZ z77BrE=%*B|hUExHYkn*yt;<;_ORMg(nM_-znI@zJcxwjCBFjmhhyyR#%t&#c98M!x z48Qlc!@z`3)T9^oqd*994lS5m8^+mXW~v_uY8|^ezD+N6(kSAY6WAoAty2JSrfRk~ zmzY*p11Bx1-`4V~aoo@AB5_1X{jToJ616jrxzC*3H@zNVY+tmae5pr;ck|N3=6$`N zw^bycM$^3srCtq`qpocki@BsnUHWL2=C6$tGgWudMrtCJv_2pko0-C~Du)z~oaI=R z%NunF$T#T)hk$UJfIHom(*z2q+t!ao*}XBPrEBt12WqC$%j9qsjl2WB%RO?d=sTRX zqUXipx8>$5JdTnT)B3p+Q^!?jbYg1ZWDs{^>K-*DTj_EnteAFpB<#=Vx;qd=2c_yj z5Q41(Oar5rhesJ|z7M9?A=Gfy_DY$=gq!;b?g8v$5Vucb<-$c`)l3)F%0Aa(I^86T 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 N=7=>DZsoB{CZy;2Z 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

3byq32coOba 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%0DX`?L?5P)&`0TG^l|zGeUd&! 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≠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�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

t|fS0UG8b;yla6P1^%;86>-Hq|>6 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 z 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

6=3(=QdDJ{+ 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 z%0Dx_b%4&!PJNQrPJ7{MV*KMBuGMswMEGO=#yd5gYjaq;JUL$u$^~+vTqGCEbL6@5Jh?=kFE5Z6%8TU1@)CKeyi8s$ zuaH;DtK`-48hNd}PF^o>kT=Sk5{I#Gc)d;%bheTu5|t@Karox&*bOw3;Ct| zN`5WBk>ASia0KQ-&)el#$9P zWwbIz8LNy_#w!z)PWEG27Xk;AdGtI_ued(u#=;X|5m}ZR08kW=DX2-eW#VBXl70!+0;JEyfM4THavbw@%@ah z3Agw@o~{|+m0L>fzz_IVsf_oqYbDSpe3;I{e(nimWJ# zs%VN|$x#AIt};uRt>h{BN>C|K3Y8+ISec{DRpu!r%6w&wvQgQk98=CKFO@24OI5Fb z?u~|!;@PgQ>3>}HbPYjo&W6}X?I@C%z}k<9ytO3uZN#?pnu#6q|KvnyPD=<;Q9Wvy z;=bWBnWiVS%`C%A&mA8&8bDL0`XIv!^LXu_^;GgI7F)SF zR}#AV3v9pfVa~1i&OoZBx1Mp|gEnhM)48~C=!h~bco^T6N8|m&rQ8tDOrmO3R-kkI z)96tBT~B0als?q5++O>6o#%C**Lz;S)PFKq9ik3ZhpEHW5$Z^FlsZ}+tBzC0s}t18 z>Qr@_Iz!c|dNouvs7BSKn$>XCqDH7z)uu+N(W+f_s7}?b#;S2@yy{UC)I_!PqoyXS zDQc>krlzZzYL=R<0xF`SDyHHpp^_@4GAgU`s-TwUZ&gLrRKJ>|2Gm@2mO5L_SA%MS zTBH`MbJV%&JheofuP#s*s*BXc>JoLSx=dZJu25I1tJKx%8g;Fz>8k5S8*1zR*(aD9 z=n8c$b$#b}ZHeKXb^k%5bPY_CbUm!Y(vwZKz4yW&lLbYWl5n8W{DHdpy4v%jbcwpz zI+3>7ykWJ%59>73Jkw&+Qqww9TtT$f)bz#F(bUs4(iEk|o7|?d#>&Q;#vaCg#!<%6 z#_2}8F~%5WT+d=g+DI7##@R;NU?z6y4(U$l4(guk9_U`_?&_N9Kk3@)WA$Hj9rT^_ zRrKBTrR{`%a9pH5x-|c@PF=5VP&cZZ)XnM^b*s8f-LCFXcdGxXyVTw49(Av}Pu;H` zP!Fny)Whl#^{9GGJ+7WmPpYTX)9M-Zta?s8uU=3us+ZKu>J{~>dQH8q-cWCy~)W_-*^{M(yeXhPxU#hRv*QNa5sBhJG>U;Hr`ceI)epbJzU)68w zclC$*Q~jm>R{yAf)qiS;Rz@qUmD9>=6|{<4C9SenMXRb+)2eGVG>6`z@2el7&(>$^ zbM=y*(dX!KJ)&QwNA+v;dHSdN=lYlWBl?^ANBZ0P3;KKd@A@vG(?dV$yNA{a?HSr5 z^sl~oX!Xzzp`AnV&~c$*p_4;(q25p=bZO}F(3PS8gC;CK5VG(7hZ~bAcVX7q8HoY=5v4$BI=)w(~b;;rqajULA zbx|at{w;?2?rdCU1=>QbwEoqWXiK$a+H!4$wo+TAt=86PYqfRSdToQY zN!zAv*LG^Vv_0B>?SOVrJE9%aj%z2hliC^WymnE$q+QmI8G?pIhNXrD$}(lSvP#*a zY*n@^2bDw0Ddn7UR=KELQZ6f3mFvn4<+gH9xvxA{o+~eux5|6vlk!#hq5M|!@|r`f3BUq1r@krZ!evsIAo2Y8$nK+DYxIc2j$*z0|&HKXrgQP)#(! zrWV1r!8XA@!LGp(!QsKN!6`v=&=K?my}|TgW>5@j!Ghq1U_oF`U|ygouqLoDuqCiL zur2Uk>Hgyt?YeeDyRF^V9%v7>C)!i(nf5|^qrKJMYag_a+Gp*n_FMa_{nJAHW&CCR z<^1LS75$a`mHpNHHT*UGwf%Mcb^Z1H4g3xLjr@)MP5e#$&HT;%t^IBM?fo769sQmB zo&DYXJ^a1>ef|CX{rv;|gZzX2!~DbjBmE&Eqx|Fi6Z{kX)BQ92I=|i@>Nok#{xE;I z-{Oz(NBV94D1Wry?sxc|{usZ@@Ak*~vBQon<^mNNg%fiyY>F$Ul5f>u5Sh`!fTKZXr zSbAD|S)we%EMqN+7S57n;Vq~Iu_Rc0mTXIgWvyk2MYU|QoU<&qY_ZI?EU;X$T({h` z+^}4cyt90_Jht2^y?;H!pXCSqpda$Xe#DRYaX;y&{fwXW^M27U`DMT2SN)pb z@6Ywm^3V3?`-A=hf1$s~U+kabpXZXkvsQ;M%xc`6l&a$~} zE?l%JGcz+YGc%K&hMAeU0XvD4HnEtg%*@Q~TW01;Dl>C?o;~OMiaYninzeSunM@zm zv0@8OJI^@JI?p-JJ1;sfIWIe}IIlXdIj=i!IBz;{Id41fIPW^|Iqy3kI3GG6IUhT9 zr{Of6)!b^h{h9w}zKdH+wxfQ#KZn%x$Uv7 ziv63-wAHd#vfs0Pwq3E^vQ@YLvR$>+u{X6>wAZ&cus^b0w>7uVv3uIR?3L}LeYm~9 zy^me8``CNgXW1v&$Ju@DqwS6Ce)b;rq4s|E5PL8jfAGZl)cMT$-1)-!()r5y+WE%$ z*7?r)-uc1#(fP^w+4;r!)%nf&-TA}$)A`H!+xf@&*ZI%sf|bF_V&$;%SOu&iRtc+& zRl%xa)v)SV4Xh?s3#*OQ!Rli5u=-d7tRdD2Ym7C)nqtkc=2#1?CDsaSjkUqrV(sAX zkM>vxtRvP5>x^~5x?{<4m_BHke_TBbO zJ8xI*tL=O3`|U^UW%8fcZ`mukHO{Y=f8YMce#728e{g=C{EGS4><{g=^2_CaxBsxe zw4bmaws*{bZ+~p}%Ab?(k?)?LnD59h%FoCz&QHr9oNdEc! zOZiXp59D9XKa+nbe{cSy{3ZE&^0()6`A_nV{OScYk_Q*O&mU6Is$eL5{x<=eh)u#K zV^grH*feZ9HUpc9&BA75bFjJCJj{YwF;{Fp=7zar9+)TQg?VE>m@nps`C|cCAQprL zV-Z*`R)Ue3f-T0DU`w&(*a~bVwhCK|t;aTC8?jB;R%{!#9ovEJ!ggbOv3=Nn>=1Ss zJBFQv`JcwlU}v#&*m>+Cb_KhE-Nf!-kFdv>fjz@sWACsJ*hlO$_67Tj{ltD@zp=mA zKdcg78Ly7l#OvV=@W!}n!LWjV`M>ks3nmwY6$BOd6l4@EO&wQ|P>@-$ykK>KqW~*N zFW6Wh7ZeoiDcDu8x!`KSk%D^#{|Y)4Rw(RJ*syST;a{K1zQf(exDU#;x_h|0x!0Q4 z)~kb8cd!0l(*q&`w19m9X9Dg7+zfad&^GXEz>vUcf#U)<1bz*S56lR325t|G4qP9& zFfcrDW8nV4kAdF<9|iskJRbNU@Iv6+pp$_I11AKH391& zpMp=tr{UA_nYabF;;y(m?ty#Z-nb9$i~HgJcn}_fhvMOQ1RjY;;jwre9*-yBiFgX0 zil^b}cm|${XW`j+9=!hK;{|vj?!b%jg?I^GiaT)($8i#;aTe!s5tnfl*YL&oa(o58 z3SW({!Pns%@U8eRd_R5wKZGB~GlF&n?G6%x_68jex)gLX$PChhsswik?ipOo_lj?m zlACWb&S<&9c7(u9d31T zIf@^{PvWQW)A(8Z9DW|Zf?vb0<2UeI_-*_S{s4c7Kf(>%#Gl|V@R#^&{4M?-|A2qQ zKjB~SulP6o2mTZPh5yF?;VwiOq8w3ys7O>IDic+Rszf!SI#GkDNz@{06LpBXL_MND z(ST@3G$I-kO^Ieia{|u)CR!1#i8e%gq65*9=tOiTx)5E7ZbWyY2ho%0P4p%D5&ek) z#6V&YF_;)i3?qgUBZ!g2C}K1*h8RnXCk9zvt;yCDYpS)MwYSyFy2yIPYPW8&?y(kG z^Q@XR+j_%FSTn5;tp}_Jt+Z9JzO;U`p0>7fy=;ADeQmvFeQLdLJ#KwxePaD+{bW67 zJ#T$({bDt(G}h9!vTJqMGOq1i+qwR=y0~_7?cwU?I>dFpYj@Wft^uy@u3oOwT`jJK zu0gKxu92>pu34@Hu9WL0*K4jfUGKX-cKzb|%JqlqKiBf}tIn@7zxn)HK23b;`_%F2 z<1@@>xDWjPAtn)%i8;hP!a`UHSHg{OCp-x+!k6$PLWoczjEE$ni9{lU$Rx6eTq2LK z5q2Vh?T@DVl}abSVycUHWOQj zt;9BBC$WpzP3$4|!Tk3V2Z)2jA>uG`gg8nZBaRa%h?B%A;w*8AxI$bdt`XOX8^lfG z7IB-nL)<0q6Ay@o#3SM{p%VsS5>JRhKI45XKAt{4KK?!>UKw7cUbq+QRpiBc30{Pk z=p}pY@LKA1z-ztNIPV%;S3*L%%V#zM=6W)owslGN}hi|cOi7(?T z_{zSkeK+{-@ZIklP~`8sAz^dE_JmytyAzHj97(v4a6aKm!t;c82`>^pCVWo#mQW_~ zQ$o4KpYZwPQ{ox%oOnUJBwi7(i8sVs;vMmx_&|IlJ`taZFT_{k8}Xg^LHs0s5x`nF|`;z_0 z{^S61AUTK}Ob#K3lEcX1dA{woGi1*dVcO z;*i7+iQN+iC-zC4oj4;AP9I8)N{mg+PHblD;Qown?_SnDPzV*mgm583h!moPBq3E; zAmj@9fs#LMv9Ia-*SCUSMZcH6Z+yS|Ht`$a*U_(;UoF2HeqH>!`Bn8B z<=4h9%`e?A(=WqstRKApLrx+mlT*m48v$Wjs`agrcOk|Jr6Az6|m zc~T%nQX*wiAyrZ%7n4iKrQ|YlIk|#dNvW_W5n` zyYF|)@1)-yzwLgl{X6-}l}RsOsDulaxRzwf(^eZjn9 zJ}{q{FU(iwH}e-R=Utwy$W~^nvenq?Yz?*+TbFIXHe?&IP1vSv_nD&-8Uzf8vP5}B zO^sR>RS<U-3OsGCt+qaH=wi251zD(Y?2 zmZ+;y@1p*~{m)jDYsj_aI&wX^f!suHCby7V$!+9zatFDS+(qst_mF$ZedK=f0C|u+ zL>?xOkVna5CBe?h(^Uy-lLH{@IL9r>R8Kz<}Yk)O#g~qzsW!3U-BR6LY1M)Qst=fR0XOcRf(!hRiTDNcZ#kaJuZ53bfxI>(M_Uj zMt6&z5#2L-Ky=gSSNOVUW_HCZ%l`n@i7l$w#4u; zk79bn>M<)~R>d5M*%z}b=4Q#Po_C7&|RCDYk2D zmDnz^#j&NaC9!F-39(tR8L^jRU0kYC)u`%J4XP$pi>gi4q3TlgsQOd`sv*^gYD_hu zno`ZE=2Q!+CDn>*O|_xgQthbrR0paf)rsm%b)mXa-Kg$V52`2Ci|S4Fq54w&sQ%Od zY9KX;8cYqLhEl_*;nWCf6g8R}Lye`zQRArz)I@3$HJO@1!ST1$G-^6EgPKXrqGnTb zsJYZU%0gKwS86`xM!8cSlqcmyc~d@=FXc!1Qvp;U6+{J7Ayg<8Muk(6)alq&v3p{7 z#vYA*9Q!u*LF}X0cdDve5~GN?={ zi&{WsQ#n*Fl}FhqJC#orP=%C(Dx!+1h14Rdges++6iyKoNl_F{F%(O26i*41NJ*4T zDU?cS)M9E0wUk;$EvHscE2&k~YHAI&mRbk%Ur%kIHd33Y&D0iZE47WN61iLA(rk|>LcsELckrQ$Mi zg}6%8vX^8p%U+SaI(rQqe|v$tNL`{XQ&*^~)HUilb(6Y9-KOqPcd2{Sed+=Aka|Qt zrgX}nOzH{slzK)zr(RGmsaMo%>J9aldPlvdK2RU2Pt<4X3-y)yMt!G#P(P_()Nkq! z^_TibxzJ_kvUEARJY9jVNLQjO(^crIbTzs=|*&8 zx(VHsZbmn!ThJ}(R&;B+4c(S*N4KXt&>iVcbZ5E?-IeY}cc**MJ?RbEo3jsQAI?6K zeKh-Y_Sx)n*_X1fW#7!coBb&JarX1|fb`v&-a^%_)~t zDW`HywVdiXwQ}m@)Xiy>(t~uRuy65!B>6Ozv zr%z7boPIe2ax#2!lJ9ztOlELrB9XW;acQEKcro#4;^o9$iQ5tnC!S6`mG~s_c48J^ zHR(m-v&099dlNq<)=KJ{UT(X;6}^jvx#ZK18S zD?Oifqupr_+LQL8y=foXm-eIm=>R&A4x)qU5IU3&qr>S4I*N{_W9V3ze;gf8C(wy> z5}iz^(5ZA9ola-anRFJtfX=3K=v+FFw$XMvpC)LQ=IQ_Fi}Y3c8hwX;O8=spGp(6s zNllZ+BzYyxPqHStC#5DuCuJweNzSC)q`V|Y(xN0aX?4JoM=ba$v8S~KiO=%3KOVg17V!u-Q#h6RL;4+{#jhqVZ^hJ}QU2@4Gy z9X2v-YS@&pE@3;uu&|`C)G#V6GVCbart)`KtMJz0Kj8k;otS>i2xc5JnVH5|84t#f ziD8nMWG0nKW73%nCX>lx7BJaNE|bUD7(0{C6flL1gDGN)nT5x zTnb+mzAt=T_=fOn;akFwgr5n27|w)03NH=+7v3x4O?ab-#u330AH&B-jEq4?maBqOQF(nv86xy)Q)t}@q{>&y-2 zCUc9q&D>$`GWVGK%md~j^N4xO=#0Ub%oFA*^Ne}T{9`Jy_1MO2Gqxq$nr+9nXFISR z*-mU{whP;h?auaKd$GOQLF{052s@M=$&O*iu~XTZ>@0Q;JC~iuy0Y`(_!l?Uo%LY7 zSZ~&c^UGV$h zsv%865<<&`Gzf7CDTwGU60#~p z2{{;YH{@Q((~uV-eM|e54lEs3I-+!R>4egWrISmilujz0QEDx9Fa59hO!3*`bHx{m zFBV@az6_Vs(h|HALK0#VvJ-L=@)H&%lqO&aWJ2Y@zJZ(J{I3$$$r3EdQY^!=tjJ2N z!m6ysE@qdoOW9@Ya&`r~l3mTNVb`+j*!AoNb|brq-NJ5Vx3fFgUF>dlFT0OD#2#gj zv8UKG>{<2_dzrn;USn^tH`!b4ZT1d(m%Yc{XCJT+*~hHT8m!4aVV|`(R=`<+uu5RjwLWovY2&;p%erxdvP#t})kyYsxj_ zT5zqn*4(I|TS4V>Uq*h4{1f>l@<(Kas7g^4qiRGoh-w_wB&umto2V{P?W4Lz^^F=3 zYz>YKo{=y&!8M_GLO@}|xmvEAOXcp*tr~hDcT4WN+zq+gb9d!F%YB~vBKKwP-Q1(O z$8&Gzp3l9RTRZfA?yKAnxu0|2c&(;W0vKu%{!OZG4xE{J~;oj4cC@y z$F=7=a2>f$TxYHe*NyAW_2hbSeYk#He{KLbkQ>Ae<%V&?xe?qbZZtQB8_SL3#&Z+6 ziQFV^GB<^r%1z^@b2GS^+$?T3H;1!uR&GA$#(8jFoHyso1#&@L2p7tQaS>c37sW+$ zF8I`$AZrVUkJVud?PqFPL5;al(>CyhvRm|t&7_d_dM=QTSN$x-H6nC0C!=2^Map$=U+(qsZcbU7wUFEKE*SQVj?Z*ot#=iFQF9rvF5z2u^w-qysV-?%(i){TPOFo)F1SZp^RyOeL(+z(4NGg4Hax9ETKBYe zX!_$Hz) z71BSa)k|-m-ZH&^x}^P3f2qIK4=LqSYoz{2sgzndwP|YG)F!DtQah#&NFAIyJ9SR# zq||Y#9;soeE-tnB+I$_pE?b-h3avFW-;v&kx`S@`L!n{1AR9Ka3yFkKjl0qxjMM z7=A22jvvoY;3x8v_{sbfekwnWpU%(V;rd7MJ&-yyd35s3(03&Cv`k(h@Dx%jo6wI(jX=fnHBFxARdKbN$-b3%D z_tOXHL-cX_6n&aLL!YJ3(dX$4^dylL_Imo8bR+#$dc}-M-sLjNX0*(x57$4bEL0Jy z3e|+_LQSETP)DdM)D!9p4TOe5BcZX-L})5B6PgPxgqA`pp|#LPXe+c6+6x_ojzTA) zv(QE8Ds&UN3q6EhLT{mu&{yau^cMyQ1BF4tU}1?V7$=Mu zCI}OSNy21diU99F2-Ae=!VF=iFiV&%%n{}a^8{C6zThUf3m$@};3as&g)DppKfzxJ z5Q2mdAyG&Z(uGVRTd)asp;#D_F(_kB#zl375SLMu;!L4Zgp}ne50V}wbx&@swpBZ; zUDU2>H?_OkSM8$?R0per)FJ9nb)-5*9jlI4C#sXw$?6n!nmS#bsm@WY>U`Bh^;Er7 zA2m=7QA5=*HC&BQBh@H1UX4~0RWg}QW|J2uE6MAVmnCmY-k!WW`FQe{Nlm;nH;Qj|Cf>RI$ zNst9aPz6m`EG!Y03d@A$!b)M4utr!btP|D?8-$I*CSkL%Mc68A6SfOGgq^}JVYjeH z*emQ4_6rAugTf)D{ntj}1Tu_0qyMo>|BQ9{vzqMRaI(bA%mMZ1dj z7o9HBi!KxyMNf)86g4gWUG%)@Z_)drHpNYf>lHUEu3Fr`xLfhS;xWY`#hJy6lAq*m zP1&AuFSTxN{oIDR&2wAlw$1I3+cCFOZkOE7xqWi0ixtF*VkNP%SVgQVRuij>HN=`?EwQ#(N31K> z6YGl&#D-!cv9Z`hY$`Srn~N>PmSQWhwb({%E4CBciyg#{Vkfb)*hTCrb`!gcJ;a`3 zFR{1SN9-&16Z?w;#DU@qnMjR`S6UU1a#EIf0ak4l? zoGMNer;9Vhnc^&Qwm3(eE6x)wqE&Pi=ZkKlyI9PZ@TEM))4a$_yvl3*5`HPaf?vtc zD6|wt6~+|i6lN4=6=oK$E-WovRJguSDO^>!tZ;21Rk)^bXW{X}9fcPPHy7?L+)}uy z@O0tD!tI4G3O^KnEPPY=sqj)^J;#H>&xH>QZxvoHEa#}?_+D7qQPokyQN_{DG0f4@ z(ZSKv(bO^0G1<}I(Z|unF~~8>VRN)~EO2ByG97-7ILCBHjAM~wo+HqaNw!I>^ST=3HOL>u6Y1ujsF%YEiSIHbp~N%=Vf6GDl{%%yi52$efUwoH;$yJJT;S zCNncLATuE|J`>MenYk)+cjo#`C3AIVLFU>_Idf^|y3FmFmotxKp3A(Sc_;Hp=F`lV znbouYX8z8smDMn-8eIRhl2k>iDpixJOEsjLQf;Y@R9C7mHIN!gjikm>6RD}xOlmH* zkXlNur8ZJqslC)e>L_)RI!j%ou2MItyVOJKDfO26Nd2V#(g10oG)NjO4UvXQBczei zC~34bQJN}Elcq~ErPNZWYZ6x%f0ESrbT*A`~WE-EN0 zD!Ntlu*j!a$qGS!&kOtgTu5vkqh($@(wrT-N!lQ&}gn zZe~5tim|N@Ih1oD=X%bQoX0s&b6(`U&H0q`Ju7v=$^{!2Ov;wBcdOgg#M1myx|As0 zQW{zsT{@{`O374WHZhZ!MFhd;uUXOpDO-ZeN=tc?O|nb*Qh`(`Iiw<~SXwA8l1ijf z$thtHE)fzbQ4%dN5-V{MFA0(;Ns=rnk}7G^VrhxAR9Yr2msUtCrB%{uX^pg2S|_cS zHb@(#P10s*i?mhRCT*8?NIRun(r#&wv=`>TPuedXkPb?Rq{Gq?>8Nx}Ixd}%PD=kt zr=-);8R@KaPC74LkSq|4G3>8f;1x-Q+2Zc4YL+tMBBt`tD{6LCa15lbu}vWWyD ziAX0(hyns9N(q8kN-QJR5*vt(#3o_~v7OjUSWB|i-KDQeD>&Vq;m#eUhf4RC?kzoD zdZYAa>7CLCr58#smfkHrS^B#4Tj}>wqx47VuTrzLit|rteP;`2D`$6SPiH%4FXvF_ zXy*{;0Ots2ALkV380T2$9Oqo;RA-zs#hK-dbtX9roS2h#;!fGAI@3yQB@0UmO864G zL<+u9{Gj+w@jW>I=bm(5dLTWN9!ZZST{0w7dLliQo=MN87t%}VmGoMABfXX0N$;f( z(nsl&^jZ2MeU-jR-=!bYPwAKRTlypYmHtUCav8a-Tuv@8SCA{pmE_8D6}hThO|CB2 zkZa1dkXy>F?av!;`+)wT=50D4SgXF>T5P7IPOny@Qs`y>;$b}sj&EsCM zpV)V7MXn52nXARsSI8^nRq|?ijl53YAa9g6%Uk5F@-}(9yhGk8?~?b*`{e!d0r|LmLOv<~C!dke z!oPpGJVG8RkCI2rW8|^&IC;E0L7pg2k|)bkOB3orw zdA{r>yUQN3r|czr%RaKN>?ixn0dk-mBnQhOa;O|8hszOiq#Pwj%Q14S94E)i338&G zBqz%$a;lsrr^^}e^E2fIa<-f++vR+@SY9ZX$e2vYtjx*0EXazyR$eb}lK035Thod|kdN-;!_3_vHKXLs^%zxB`yg zNRH+ac8^>QIZ+MJlP@pcGY8 z@2dCI`|2b0p{lDd)Mx4w^`-hwZL4+HdTB$nLD~pyq&8l2aWQ05ej-1WpUKbV7xGK_ zmHb+MBfpj3$?xS4@<;iT{8|1Yf0e(<-{l|jPx+VpTmB>emH){uN*SfBQcfwaR8T4^ zm6Xa#6{V_DO{uQbP--f*l-f!irLIy>sjoCp8Y+#H#!3^VsnSeouC!2EDy@{(N*l$+ zrLEFVX|HrpIx3x%&Po@htI|#BuJllPD!r86N*|@K(ogBH3{VCtgOtI_5M`(`Oc}0> zP(~`Fl+nr7(^A`dEFOK3<=oPt+&rll3Y3 zRDGI0U7w-P)Mx3l^*Q=neV%U7t-7l|Uw6~pbr0QB_tL#}AKh2?)BW`TJx~wQgY^(S zR1ed`^$0yukJ6*{7(G^x)8q97JyB26ll2rmRZr8?^$a~z&(as@*?NwitLN!9-LB{B z1$v?G(2Mk9eWAWcFVRbNr;h2kPQd-w#wp{K3Ccuek}_GDqD)n$Dbtl1%1mXJGFzFW z%vI(o7R9Q#D)SXL#a;1GJQXj+Tk%nR6+gva2~Yx+ASGA{Q9_k4C0vP6B9$m5T8U9& zl{h6{Nl+4%Bqdo%QBsvOC0)r-GL5FV>gnOZ8>?a(#uqQeUO7*4OB3^>zAseS^MH-=uHWx9D5-ZTfb7hrUzarSI1F z=zH~j`hNX@eo#N8AJ&iPNA+X+as7mTQvXjsrJvT%=x6nF`g#3=eo?=qU)HbaSM_W9 zb^V5ZQ@^F(*6-+d^?Uk#{ek{af22Rwb=}ZS{fYimf2KdzU+6FOSNd!Hjs8}D2lHR1 zELT=2E0tBsYGsYGR#~U4S2idcl}*ZKWs9;^*`{n)b|^cQUCM4{kFr#Czbz{Q_5-OjB-{vr<_+VC>NDW%4Ow>a#gveTvu)=HZ4N_0Vs$;p%90hB{lFtIks`s;la*daJ&wpX#p$sKIKC8mlI#Noum1qNb{8YPy=CW~y20 z0yS5K^DkAqny(h9g=(?7P%TkQRi}!nxJszB%BZZ$sk|zvqAIDfs;Z0CCF)XjnYvtE zp{`O_t83J?>P%ynG2579%r)j27QL!ilG{svDjE*EH#!H z%Z(MrN@JC=+E`<(HP*rW*Qx8(4eCa9le$^mqHa~UsXNr2>MnJUx>wz=9#RjhN7SS0 zG4+IcQvFXorJhmGs^`>8>J{~>dR@Jt-c)a^chm>!W7SYi^{M(?eWkuu->7fZ_v#1r zqxwnxtbS3ys^8S_>QD8L`cHMy%4lV^a$0$<0=)iI)GBF}wJKUwt-4lAtE1J`>T3rwYOS<3T05=1)x3S0AYwR=j8wZSo#v$Xdal|-k95ap^CybNEf5s`}v~k8bYn(IA z8yAd=#wFvjamBc5Tr;j4H;kLcE#tOv$GB_UGwvG?jEBY}&y14Y!`f2^O0op)qur^d1u8q=0Yh$#r+Bj{3Hc^|TP1dGpQ?+T@bZv$< zQ=6sD)#hmy&8oR-^EEfkUGva9H80Iu^U-`YKh0kY&;qp}Em#ZDLbWh0T#L{mwJ0rG zi_v1WI4xdF&=R#IEm=#^QnfUgf4Y{TWolX40xet1(`;I)=F~6^*9eW&D2>(_jnz1f z*JMr6RBeg2R9mJk*H&oVf299lemwi};YU@onpxefVb(NjnYGP2W?i$MS>J46HZ&WV zjm;)zQ?r@b+-zaCG+UXi%{FFRvz^)A>|k~@JDHu$E@oG=o7vs$VfHk8nZ3}%>Xmd3^Iew5Hl3!U;Sr|pEZBh z`dQ~^y`S}eHvZY_XX~GBezyDB{%5D3oqu-unb))7^G44bKhN)(*nd+0qMnO-wtTJ* zXgaXwz>=O^&zK>Nhje^?amd3Vi9;_9>Gr()^O?h9hCdpEJ{o;rQ$^m;Su&uB2C;fzKz8qa7lW8;jV=V4~J z8DU16QD(FmW5$|sX1tkTCYniRvYBG0nrUXbnPFy{S>^&W+srX@%{b{I161Lj5r6~0E{>f-4Kkp0Nn_TxCq@CjJO2d1dO;0-4u+t0^JOZxC-4IjJO8f z0*ts0-4cwr0o@9WxCz}FjJO5e28_53-4=|v1KkdcxC`ALjJOBg0gSj0-4Tp<0Nn|U zcnIAYjCcgy1&nwM-4%?`p}T<*26T5Y!i4StMm&M;2}V4H?gd6XgYFGRJcsTBM!bOT z3r4(z?gvJ^g6{Dz(YM*M-E2uA#c zo&-kxgPshI16<0NahU>+2g*QC1t$Pyp{IcpfpXB(!AU@Q=o#Q-paS$va0*ZndKNep zs02M5oCZ{eo&!z?szA>LX8={9=YcbUYS0#N7Em493SI!zfOZ9E12v)NgL8md&~D&d zpf?&%fRW==ESk5cCExA{crj7!d-!35*DZ-V8>B zL2m&g!lAc<5fRYaz=%lb?O;R{^bRm08hR%f5d*yojEIHa4MxO4?*Sv?q4$Cj3DEn% zh(zf9U_=u10WcyN`XCsQ0(}UKNQFKOMx;R>0VC3(kAe{y(8s`tOz7iaL>BZ3Fk%7p zNiZTC`adut2l^BkkqdnqjL3sN14h`O&w>$l=yPC1KJz5_;((09QI z3i=)xK||jMBN*rhU<3>O5RBlUAAu1(^kXnWfY!kX5!wJFBxnz5v zHP9cyh_%q4z=(CwpTUUr&|koa4bWe~h>g(Sz=%!I-@%B@&_BS4Ezm!~h^^4Sz=&14f`O3r3(W2S%VS4@RJ_07js$2u7f; z1V*5)3`U@?0!E;&3Pzx=21cN+4o0A^0Y;#%2}Yo<1xBE*4Mw1@14f{(3r3)>2S%W- z4@RJF07js02u7f81V*543`U@C0!E;23PzxA21cN64o0AE0Y;#12}Yo91xBE54Mw1D z14f{33r3)B2S%W74@RKw07jth2u7gp1V*6l3`U^t0!EkESztsv z=-FVzT|F7$jbVji>`7-4~S2P3S| z9$>NMifKaz=(y=b}(WQbUqkS0$l(` zltLGR5l(0a7=b|-fe{pRF&IHZF9ahP=tW?}e&`Y~;sA6h7@LSl7{S2*c?yiE+Z%p17|{Zn0V7&MvtY#jXYiZ^BMw0GV8lUa0gN~VErJn; zp(QZl2(%1F9EDcEh-1(y7;zk010zmAF9st{LcfOXu>{(s4D8Q>mO>u^Z-MnP==0#c zuwD**82krV0bLiqehhjg^l319SziU+6nqrctD#SU>%n>rbXV|yuwDy&9=sLS>!2@! zPr`aV^f_=}SZ{!y4n~jL2z?d24c42WFN4wJHbY+l&w}+9=m;=++*as2;O(&927MKb z9=9F(Hh2fDcR*hU??gb~1n)wi$AEVupzngO!}sigz6U-I?1er9-q0211s&ZTX4wL^ zA@sKBdJ^~=a0vQ4_%ImZUlwK!Mx2IiaTJU=1APpPI17Coj5r5< z0*t882j&JwRD}KyjHm>C3XG@>eHx6Y0(}OIs0w`+jHm{E4veS{eIAUc0eu0Cs0n=$ zjHm^D35=)>eHo0X1APUIs0)1+jHm~F4UDJ{eI1Nw0DS|DXb621jA#UX3yf$CeH)Bu z0(}RJXbOE7jA#aZ4~%FIeIJZy0sR1sXbJrgjA#Y@2#jbA{TPgB1FeG*ZJ`Y?q8+pe zMzn{10!DOzehNl(gnkA_bb@{kMs$XL0Y-FzehEgLhwb(8jQFI{RWJ<1pO9_ zxD5RcjJN{*9*npO{Q-=)2K^C?xDNdZjJN^)8H~6I{RND;1^pF_xDEXcjJN~+9gMgO z{R51+2mKR_xDWjcjCcV38;p1e{RfPA1pOC`cntjyj6lEtT~_@ssLMbjP?rTGP?rNE zP?rZIP*(sWP*(&aP*(yYP*(;cP*(vXP*(*bP*(#ZP*(>dP}cw>P}c+_P}c$@P}c?{ zP}cz?P}c<`P}c(^P}c_|P&WW0P&Wi4P&Wc2P&Wo6P&WZ1P&Wl5P&Wf3P&Wr7P`3ah zP`3mlP`3gjP`3snP`3diP`3pmP`3jkP`3voP%p3P>%#7P>(|Xza9-nRD1^e{$NBU=&@i#W$1BW zL>1`qU_@2u31CDu=!sxNb?8Z8L=EW4U_?#mDPTk`=&4{tZRlxWL>=hqU_@Q$8DK;` z=$T+dedt+WL<8vAU_?XcIbcL1=(%7-W9WHcL=$KW7||5k3Pv=8b_FAvL(c~zT0pyj z5iOzJ!H8DS9$-XkXiqSr4YU^+(H7bpjA#e#14gum_5~w4K>L9a9ijcfh)&P}U_@u= zKro^UbPyQP6*?G<=ms4EMs$Y`1tWSuhk+42p~Jz5UeFO>L~rOwFrp816d2JLIvR}V z2OR@O^oNcGBL+anfe{0tz&8H^YPodQM-hfW0}MnI>5 z5hJ0~!H7}N8DPX{=u9wT40IM4F&26O7%>hy8;lqaodZUo=Rz(RG2t2P`-2e^p>1Hq zBxpMrF&R1^jFR>Ci=B#0=fQHa(z_)=$&}+eWfX2}4z;}Tr z(CfkXfTqwJ!1sY>&>O)IfacJfzz=~I(3`=JfR@l(z>k4e&|ASe&>DIh*Z|r;3+Iw14Nhe&=!goE-ahp{Ab9pJ7Kmg+E6vJ(a(} zPI?-DiQ0NPe}y`F1}{flJ(IsiJw1!RL4Exce~SisHh+hPdJcb&MtUy)fX4c1{t-Lt zc^n3Q;dg%ygYq zOwlVjOx1sKn5O^YFkS!6VTNACVWwWqA)o&hhX0H78akvaa!6O=kgm)jy(WkBS{%}A zb4XX=kY0yFdR-3b^*E%fa!9YwA-w^I^oAVL8*xZ)%ptuAhxDc#(wlKeZ_XjT1&8#O z9MW5HNN>#{U5!I}8xHAhIi$Dakgm=ly*-C?4G!rYIHYTGNbkrYU5i6{Cl2Y_9MW|- zr0a4>*W-|`&mrA_L%Jb{bR!Pw#vIZ+b4c&PA-yYy^llu|yK_kI!6CgThxA??(tC4A zH{p=pheNt4hxEQ2(#<%e_v4V>pF_HNTyzT#!$0@?6NeGHC5MsvKn|nyK^#WwgE@@R zhj19H59KgUAI4$4KAgkj`Unma^pPB%&_{8YsE_9Gq&|kjBz-K0$@(}BQ}pp1rs@+o zOw%WFn66LaFhifrVWw`yVU|9H!&CZH4zu-X9OmfLIn32(aClm`<}gp6$>AA&7Ki!z zY!1)rHXNSQ=WuvlpUYu^K99pfeLjap`T`Cw=nFZ#s4wF1lD?S3%lZ-yujsZM7VAqn zys9tb@S47y!|S>ohd1;U9NyGda(GK$#o=vzHHRho8V>L1YdI{{*Kv4PU(aEgzJbGg z`bG}#>zg=ypl{~zp}vK~NBUL{AM4vVe4^WP_*CD{A@{-^96tNp@BSP<*Bv-~q3`1G zrM{cPSNa|f%XLQ%U+a50e4{&Y_*UP?;XB=#!}t1r4nOEF9DdXfaQI1g0TWE){k*mrF(N&t^07O;P0({ zIjo`kaj2;KbEu>TaHy;Ya#&Lj;-~RYCBI+tJapGX_!&H`hw^;%(8KsyJfes5bLgo@ z@bh?7kK_gDrAP5XJf=tUBJ|c{_yzRQWBEn&)#Laj^wZ<{W%SpN^D7vjC-7nn)KBoM z7^EliYZ#)RZz^#ADn zpX_q_UwQxE@;d+V{{N`|kl|QtUu(i=PI9H9QM*5bJ$0J!l9}DltXj<8HX17a}N9IFF5S4zvOU$ z{)$6Oy_~~=`fCmc>2Emn@V$M@;Sv2EhkgB-?>RKnKXBMv|Hz?<{)xk``ezP3z0NNj zcDMh^VGsQqhe!RH-#PTsD>yu+|KQMDujJ52|H+}R{)9S-SrIi%O)kgm!hy*`KZ1{~5Ga!7B) zA-yq&^d=nAn{r5R#v#2qhx8U4(pz#!Z^a?KHHUOH4(V+;q_^de-i|}MI*0W39MUy7 zq<7$uuE`<2BZqV?4(XjZq-%3X*Wr+^%OPElL%KePbOR3Qh8)t3IHVhMNbk%cy$gr* zt{l?4aY*mZA-xBO^qw5jdvQqb%^}@{LwX+$>82dg`*KJ(>E?0KEjV=i z%x46Ldv!|=o%Dem?$ZZx=&TRsaKAo;Ll=E0hX?dw9J=bmIXtM3;LuGU$>AY=6o>Bm zXbunSV>tBC$8vZ?AIG7mKAyv)`UDQW^oblE(!@QiNHVZOed zL+*t;I6P~=lf!em1Bd7JT^ttZyE!b>_i$LGJ92nI-^<}e-HF3X`aTXX>&_fr(f4y$ zth;b{RX@PtHQklN>-s?sZ|H6u-qa6qcuRNZ@V0)K!xG(t!#nyB4oh`U4)5wmIV{t? zIJ~DH)4SVxcMu&y4%VLd&TLsdPF!}@wWhYj@O95&PwIBcY! z;IOft$YB%xB!^A)Bo3SD$s9J39mpC{SN~n?t$^hx9re((7_aug4)>l|y=c4(Sazq&MV{-iSkb zV-D#}IHWh_klu_#dUFoxEjXmN1rI(+i*y4%OSlThjeug>FqhBYj8;K zz#(0eLwZLJ=~^7pJ8?+Y=8&$#Azhb4x*msgeGcgc9MTOrq#JQaH|CJunL~OP4(VMv zq<7%%$htdHQZi$0RWuKFkryXm7j z?5>aDu!laD!=Cy$4twe2Iqa=Z;Lt>$$YCFS5{IVxWDfi4Rven?Q#kCWPvx+`K8-_j zeL9C0`V0;S=++!s>N7bUsL$eXkUpEk!MY8HL-aWu4%O#!I82|%;c$IEha>a_9FEi% zayUv~#NlXtF^6OHB^-{`Z8;pLFXeE&zKp{O`f?5@>UJDX(pPXeSzpPamA;C@Df(&- zr|N4soTjhkaJs&Z!x{Q|4z2YK9M04?ayU!h#NljxGlw?%77pj=TREJoZ{u*DZqMO- zeLIKT3wLn1z4|2FxcjIuKeu%^Mx;uv(^uru()IB)dq#xmMv+l{^7X2uP zTXioEx9P_?wAZ~k+^+j@xI_2laHsCap@Z(v;VwOZ!`*ryhkNvoJP2+4yVjq0FwW6G z^AMb?f8n7xPyfopaK8SHhvNeMJCDGHdIgWfMfwjOg^Tq{9*s-%7!DWucY|X&T%^Zw zxLA+paEX4LLt8z8!=?HO4xMWG-JipK`biF*^&}4W>&YCt=qVf?&{H{d)zdgUsHb!2 zre|R^^cAi|cd9^TiD~UJDx3=Ms=Udxy$n&l3 zIOO?Obq;yHwLOPC->ShO&$o8qkmp-9Ieeyf()*c-4d}~h*dA_w5hdkffn?s&&HQ|uwTl;Xx^R1>F@_cJw4tc)Sj6|$@nVOM+l^>yFZWHho6*c(?ptiPVt;$NZ?m;W3wyb5x7~r3 z_Hy58>wtso<-W^yHx99v`yN|I9A+=~y|zv`!d~wCY@KnGz1;WPy5JalxgW4~#c}p> zKWOWQ6YS-F$krVv*~|T~tp{4!%l(M0Cr-7O`%zmjoNh1oW47LCZ7+8pTVI@IFLys% zf3&fedw^{q&b60&kZmx|x0ic}Z743ZmwT9PI4-uAdxUKy+Sk~HWuyd zZKg|>32Ew*ULBz(C={=sNd(1{~Lu5I1JVw zau}jN;xJTy%wd@Rgu`(CDTfjIGY%v5=Nv}qFF1_WUve0uzv3`fFXu2$f6ZaM{)WTj z`dbbY^miPd(BE^IsDI$_r2dh^B>fYI$@*swQ}iz!rs`igOw+${n67{4Fhj54FjN1* zVU}LW;VJzmhuQis4s-P19Omj(9G=#zIn2`)j{g_W4D-8@4)b+I4$taJ9G=saIXth| zWAuFByRy*`JJ2%(rZ?j7y55+> z8+sECZ|Y4syrnne@V4HZ!xFs(hj;Xr9G2>>IJ~R3=CDjx zt8@5BZ_nXlU4z3XdIt`l>Y5xr(>rqbT-W08h2Dw7m%28GuXG&_%XM82U+a1tzR~qL ze5)I9_)a(E@V#!t;RoHA!;gAr4nOH#IQ*=4qsy>3l`ua!?8|b4rY^aasu#rB7!^Zkp z4x8xXIBcqq=dhVRfy3tdL=Ic%lQ?XtPv)?dZpC41eF}$a`cw|v=+iiCt54^!oj!v@ zb={i7_WDc?HS}2=cF<>YsHxj<*ioOup_V?E!%q4<4z>099O~!`IMme_a;T>-;!s~- z%%Oq4ghNB!mO~?bDTl`TG7dZI%Q@_#+i}=cU%_EFeI0Rz1(ALp`Cp!hb#0r z4p-{&9In!jbGTYh;Bbw8g2T0XB8ThrlN_$slQ`U6skb>scIb*H7_m-0_c|W1EW(_HsXMn}@sY<$lICA06%Ge%AIJI@!zpylnwG z+snPswg_G9<$l5TBD&hk{gUlvbhDTH729HTx0m}>+iU1yFZb)VH_+2w?l*0rm;Egc zkLkBL^wvu_^wIBd=&P4<=%?T1&|fd(FhIY@VW57W!yx?uhr#+o4ny=u9ER$TISkXE za2T#XF`g;x& z^$#4L)IV~Vq<`WtS^vyoivESeRQ)T5Y5F$~)AjEhX6O|hX6ipU%+f14Jf;8SFkAn{ zVUGTr!(6?J!_#^-hk3d}1HThtuK#vcxhvW#VV=F*m2GQczP;RQ+1AE$_HtLTt%C*j za<6M!4~y*Ou4-E!FWSq!fo(&)Y%ljlwvDmaUhYk7o8mQlxi_HEcWJLwmVv+IGap_Hx&l{GfN`@T1<1!%up5 z4nONXIQ*jbE;|( z>xvus{YVewN;p6d;>u{L2lJXZP!Hj?aF8C#YvW)&jH}=fJ)GCUp?UJSj2_P$<5>MTZ-V3W1l|nC_KoS-N2<~UJ5 z$y?wgJ&Cu($$Bzxg;shBZ;ey*RIY|o^)%iFr|IduEl$@ncsrb-XL5D4*0XqfoT;DU z8aPYO<{fahp2IcKM$hFPagKhPYvEiyk9Wd(`Wdc`^YwhLgA4Std?AP0jr{JC}Ti?i`iN1-$KKf=3P4z7t_SLs?Xr^!Du%B+vVSjx)hvxbY4lVSZ z91hSOIJDGvaX3)l&EX(@4~K(wM-GSRdpR7cJ8?Kn-^bx_-I>D?`hE^a>Mk6P(hqPr zT6g7ejDC>AvAP?F5&{R)}uIFqDOORtH*G-RFCCwnI6aCay_0yJN-C^EA#{oSL!D?T%{*+xLQBS z;Tk=O!?k)chwJnd4%h3c9B$ClINYeGbGS**;Bd2^$>A0~i^Hw@DGs;k*&N#IIUH`+ zb2;3hpXP9uU^2RlU~T-KD~%TXZ-?)`}K<) zy6BfUJfL6Z&{e;};X%EaLpS{@hlliQ9J=e*IXtZ2;Lt9B^-L` zcQ`zzmvZQ>-{sIpFXPZxzsI4UexE~s{Q-vo`a=!_^+y~A>5n-K)}L?~qCe#@RDZ@{ znEsr@aQy{`5&BCGBlTAtM(O1oM(eLRjM3k47^}bKFiwBRVZ8pH!{hn~4iof`9G=iW zahRxo=J2Hcg~KHMD~HMYHx5(u?;NJ;6&$ANKR8U+D>=;2e{z_q|Kc!9|IOhky^6zZ zy_&-uUBQ1lH{>2zgG26tiX3teRN|0(pfZQt18Z`~J+Kys+yiTK$URVnL+*ifIOHB! zmqYG>^*H1nsLCPt!1^3=4{X38_rQi6au008A@{(>9C8nA!Xfv-rW|q)Y{nt?z~&rs z4{X69_rR7Mau009A@{)69C8m-x+ylFF$UU$Jhui~ua>zZf7l+&fdvnM=(1b(o zfqgjS9%#xT_rSg!at}1)kb7W14!H;R=a74#IfvW>E%-`Q@XrDV@Ksntx8$o)Q6I?H zpprg_uSI2jFkgo?^&xyc*3yUa4Om+r#y6shKAdmDI{FB{8SCmJ`4+6FkK$WVRUgf_ zVSRlJx5ozhSiT(_>f`thY^0CpJF&4ofjeLmeInn5P4!89H#XBJ^F7#Hx8jc2LZ8C- zVoQB0cfwZsG`(jY2s_8TMer%&#a~Eu@&*TTNoj!}ZqPjktAH?>$4R=EgeGWf_ z9rU@}9X0iN{4jRZ=W`F#(iiX}*hyc=JyBa<#E+tmzL4B8 zzKr{#p}w5^p^gK8?eTdOC-j z^b8I+>zN#G(X%+*s-NO;o1V?pe4p+09KDUcUC-4|!JsJ+~u+rGeXd%3@~eT9+saxb@ijnVdUe`EU=W9{Ys&h|aV+splf?MFfeSJ_r$w!PdHcJ#Xs zR$z^SKe%GSO0HD!Cs!``i`Ojpo7XB>#cLO=<|+jh{NHh`qr)0{T@DrXdK@b0svIio z^*OAmH{h_A-jKuEdLs^1^u`?4(VK8sS8vK;J-r!+s(Nz{>+3BzY@oN~u%X_H!$x{* z4jb!g95&J0aM)CD%V9IU9f!?zbq-tT?Ky0zYjD^~@4#VeU6VsKy(5QhbS)0s>YX@j zr)zVluIq5vUf1PNL)YW5gRak^rf$GtN8OM^E!~L2PP#FN+InXWb@VPA>gruN)YH3h zsIPbD&_M6Op`qTBLnFNxhsJtu4m;~69Cp$BaM)Eh<*=LHm&5M58HYXeejN7H`*YY! zH|MaoZo#36K7hkMx+RCE`all*>Vr5m(+6|dPancze|;#2=K3%WE%f0W4$wz%XsM6n zaG*Yl!$JCJ4hQRFI2@vn<#4Dzj>BR4cn*i_6F3~9PvmfsB0&(Wh`Y zR-ek@IDHz2Pt9Ws@rD6W%|-=xLjYB4ej*h*>Ht!mkn3yE3)A# zePuRWt*^?4YxLFG&{toR4gK`B9Qy0)I1JF&a~P;^;4nzv$YHR)iNg?mGl!x277oMo ztsI8y+c=ES?KzCpw{sY!@8B?6-^pQ&?!aNJzKg>+eK&{k`W_CC>y8{I=zBRlp*wMy zsPE(Or0&dNlD?nAWZi{_V~T!&M_{V%$|EsNKggpnU3cTrn4uryF_@{l^H|K%5A!%Y zrF-yr%+`+()B|}27U@Ae6EEn&JPR-CA^a3x(nEPRUe?2S4qnm!e&7E0-nY5lzp&hU z_%w&F^*j#W=w~>5tLJn0PCv`xd;J`TAN2Dae$)#%{G=Ch_*pOF@QZ$d!>{^94!`M_ zIQ*_(=CDG)!r>3Sn8Ql_Du+MyYaIU4uXFfYzrkUZev`v${T7F#cJj{w9FEpYI2@zj z;c%>8%Hdl5E{E&%G7i`4_c+|3-{)|n{(!?x`a=#k>yJ3xqCe(vtNw(;ZTeFV?e%9I zZr7i4xI=%zp_~4a!$bNj4&C)~4n6hP93Iu*aOkDKK}2M&Gpj~x2x zpE&f_KXVwMf8j7#|H@&A{*A*>{X2(YdIg8!`VS5x^hypR^`9I@>AyIP)_-#tqgQbl zt57mxEA1rxYp!4q7mU?Nv8c#_vFn8a%pOy;!eD!^ zr%&flRiD9OechVF2Kr168|t$-Y^2ZTu(58#VH150hfVdl95&PEaoAj+&tXe_0f(*h zg&ell7jdYjFXpg~zJ$ZJx-Ez8^ralC>&rN7uP^6NL$~8lQ(wVhM|~xSTKXyuJL#)= z$#D0jzD9>S`dSWk^>rNT>FfE@3hqmNgI=Z^=o@utsBhxXNZ-t%vA%`F&iYmkyXf0E z?5f*yZ|tUT=dioJgTo&BP7ZtO4jlHP{S*>H9eB zr#o}lU*FH6x$eTDg?@m;0lF)Pmij>s2kLGd4$=>CI9PY*aEN}G!=btdhr{$E91hn# zIUJ!M<#43##o;LZ7>A>E`Tgu;3&+~~ayU-+<8Zw0&*20;fWwJ;AcvFmAPy(%!5muY zAskN8LphwPhjBPf59e^Y9>L)ZJ(5FfJ&MDbdNhZ#^cW6j>#;l$m+5i*BrezEc@o;` z$9XcY(Er(gd*pxhb*6Z|aEI5N%Hd8ujY9`LooC>#fAmaSxW_(=Lr47-hkNyG4xRKI z4)^J~96IZ#Ioz-3apeo38({FGXuHWP^Lchgfq<)*jD7}Qk zX#Ea{F?uP7vHD#Ok+=J2Ynu)Wu>?t0@j@P{72>!Kn?Vm(yCC{#sdjK=y{6JxLe*1}k9h_x{e8=(ru zV`Hp?$MN6&`qg}mO)w4HU{g%TW(5JHPsdW< z+X_Ad@9ICeHQv`N`AmGE|K#%5I@>w?jWz|V_?&{(d~QJnpHt`Qu!cULLq&Z7hf4ZF z4wdyq9M;qqb687X!eMRQmO~YNDTj6RWgOPkmvdN8x8qP%U%_F0eI=-)K_!Z zSYN|o6MZd*E%kLAs_E-FY@=`BP+i~1VS9ZOhZ_234m;>uIMmd)a@bMd#-WyO&!LXK zokLxH2Zwt4P7d{T2M!JNT^t(fyE!z{_i$*eJ95}r-^*cF-HF2<`aTYO>CPPX*7tL0 zqPuX|M?b)!sqV_5nSPMNe!3fn{q;i}n(OWyTIh#49H4t}XsI9JaG>tV;UN7ehl6!5 z4u|N+I2@{bb2v=*;c&R_%i##!kHe9=KZm3A01ij%fgFy}gE$yaE<=}{a`(W5z>s>g6RO^@Ypx*o^j3_YGhYyCKfGxY=xXXz(6 zoUJEvXrrIxaE_kD;aokL!+ClNhx7GR4j1TY94^$;Ib5V?aJX2{OP zHiygf91fT3xg6T*r#W1q=W)1FKf~cFJ)gtX`dJRw=;t_GtDom^onFAZKey>32EYrINIfq{QYYva;Z#eYU-*V`qzvIwXf6t+x z{((b({Ue6~`X>$p_0Jpz>0dYu*1vKXqJQHsRR7Llm|nqQxc-B~2)&ZSNc|^=QTi_q zqxIh$#^_ZX#_81@#_I~z{d}oEuTe07E20tx{-Y~9uZh7Z_gcHUWf%AqKi*j$|yfMb3+?zOWiU}z9X3m>qBFepm^Ol%|a&P6lHKw54 z)ttA%G?aT==j|{9<*x3$J!YZYHJo?AY?QmE^NyH{a@TU+3G-0y+Rk+_ALXv=To2Eo z-1VIsU;)bA(76#7q1=s~cgBk-_b$%6;$@V3H|O2480Fr>c~88Ca_{B5H{L+Gn>g=- zw@~h;&ii5s%H7O)KP*ML_jhiNWhi$G=L7IQ%H7iWKzxXDALM*6K1R6@aXu8EqTGi$ zACAva?jxL!#Fr@dQO-wWIm&&E^Rf5_&UPr)xJ z_o>dO;Ww1~bmud$0_AS)d?r?++-EtTjlWRtHqPf@70TV#`CL@-Idv(YhjsL2d_LCI zm-7W!Pq*U>QB_~T7h!#UC0~pU^i_NbHq`&!uYa?zb2YZ|wQk{Su(iIGuSGR|8()WQ zbbG!Y+v?l-25hHq;q^jwuX!hj?R97FfV%pAz65eA8Rv&&C`{=&h15I^5egymK{@fGI z^ZuRqHcPPdm|f3_{OwwGUjt}UEpFTegG+dN!se}SLDCHh64kGA?H zeioPNm-#tdreERbak*a13(!u#$_sIY{_lSMe2%>4Yt7(%j=ZjCa_-wV^a9R(`=(yV zxo_Xni#Ye~+xi90{jfwY<=hYN=yy5q?^2!LP4n}6SLb)rTz|{-a?bVlp8lHizQ3G4(;_v9B$Xk`D1j_U-KupPk+OoqO<;%Kg0d{JN_J9^!NM)9?(DVm*}d0 zT1#`G&!Cc<4;AyT^FpqaCc!p~i%;!1< z&vM;@=eS{Dfotu zE%=s?EBKC&FZiBMDENU-EclU6D)@;{F8G;S75u`d6#UAk7W~Gi75vVp7p&kj3jW~M z1uOZ?f2$k*SzSwpN*0Pto zt?g1&v6uTY+vQl-Uha0bD^S&5?kjCqVFP=)ueM!-jqK&V)^;5>v6uUL+YQ*vUhW%h zH(?8Vxo@`Jg01Z3zSVXcs@cok-gY~-wU_%2+nuOxFLwvqU8rF%_uaO8P}5%Sj<$PI z%Uw_lta`(0MLsNUX``ZSfnZ4WtZL>!H>)%NX(&70p{O->~ z(88ZD_fXp~w6vFdxNQUuvX^_LZ4?f%mwU8r3=XrGd#r67jm( zUhavuCvlv;+>>mRae}?vQ*2XllD*v1Y}3)oUhWyTnK;#6?pd~{aJs$Rvu$(G+FtIt zwx@BHz1;I`&!COH-1BYE;#_;VpR+xW^X=tcU|Wa_?d4u%djS{Q%l)G5CA77d`(@iJ zxXfPe#kN<`&R*`XLPfd`xo1<=x#6fZ?@mj!(Q$cw$Ri52Z#K- ziIp6B=|4H--%b3*p|}2=t2p%4t2y-36*l@8{dtXo0bCI+8u<4gTnPv0L0lOv z^_qA%sJj=qe;y83bs>*;nJs_H8^tgo-+uz|jc z!-o254jbufIBcx1<*D$03B#t#9Q}P2a|0 z8{MA6w)%Ds+vz(vRM&TM*j{(wP($CvVF!IThno5x4m;|O9BS!%Iqal6aj32D<4{L; z=1^DP&!L{~!lAx?fI|b_l|w`QAcsb}8;8dFAr3q1?i_Z}4|CX6_u#ObeuTsBx+jM{ z^rIa1)V(R`eucy3dNGG~`c)2B=+`)0sbA-Cm41W6)%r~i z*XXx6T&v&aaGhSl;d=cJha2=#4mav|Ioza|akyE($Ke+JK8IWN2OMtGA984~KjLt^ z{+PoZ`V$U!>Q6az(4TR*OMlMcZv6#^d-RtaI_j@D+^d&!=%l~qaG(B$LudUhhx_$+ z9J=W5IXs|$;Luh7$l*c#6Nhg4XATePUpREvzjAn3|Hh$*{++`kdIg7``VS6|>XjUN z=|4Fbx-qv|L%s{!TJ8zF!D0dC#9WWc^uIaoh=3+$0+w9 z&WGYtl>0E}!|^%FeT4Io_!8wl%K2z4N4bx2J{I4g+{ZZ|kMB_K6P!=P4=DFZ&L`t1 zl)IJlDfk8DKGpd&{DyL$?tBJTpxmvU&%{cU`z+_P@fXV7#`zqqLb=a%J`WYv^!M6Q zpRX@KMSHm~v|WVC_Htiry98_5%iY#?DXQ4ZeVOfYtZOfKJKGhgYA^SdwyUs#z1&yZ zuE9q3a$jq^4x8A^eZB1lY-TU_jkcSxg}vN2+it;D_Hy59yA9Rs1O+UiM3$T}d zj2B{W-J2JoiSENMU?1I=Uqn;gk6*&Rx<9{+W_kd>g8lSBUX1%@9XFP zAJ@-UexBi8KhxzLI_a-D+^4_c&{==W;eP!chc5bi4iD%bICRxNa(Gbx#G#x1nZrZ+ z7Y^O^uN)rMzj5fHf9LRsUcsTK{)5A#dL@Tm`cDpz>AyJi)_-&8qgQe0t5~K{yS$4#Mfkbr8-#u7l7Txemga$aN6TLau{w zHgX+=Hpq1l&Oxq&a4vEkg!7Q=Ae@g}2jK$bItUjc*Fm@lxemg`$aN4dL9T<)7P$_> zrO0&(^a5-`vgm%bv5UxP3gZ%uj{72_H$j|?3lsnf!xE8q%!ga`Xke~nc|L9x? z;YQ>-2sa_uLAV)%kZa*@3`VYnRTzR?3#*aqAhbuWgK#@?9fUiO>mb~TTnC{8avg-b zkn14aja&!e9^^X6d)yJZ4#K_2b&&VF6LKBo{k{)pA@6r*oLz7~w?W>^E;y&)0X`R3 zp)1Zq-q#0_>mYPPu7i;GAlE^DR-=*YAU~@yD1V>-Gv8aTgD?TP4qkK5&*T5>^~>M? zfA&3J)=g){!Pwxuvovv<=4N} z`8F&;xpN)l=f4!?&UKKV|1y-jgL8iV@1xwg4)XK=5arHwke~m@D0i-d{QN&fxpN)l z=l?m%o$DY!|1VMQTnG92FGsm^9Xy0@Q10%|592$OyNB~4@7oXj2wv4cazFIMA9%Fj zXYPgkjDF$A@T~rodl&r1eb5)b|D(&V+23CqfR!lsKft;YmGlUng35X%PsN&g6i>riI`_$RtgUmO%s>@AmSYJ0i!Ir28HwU;}e zBk$mPd%5#D@-A+)mph*$@8M>9x$`;l0dBRI`$OADXm2lfK1V*m9rkj6Y6~6gpK-WL z=W`_7t-s)KkIv^v=%~NqaIeniNa&=$=5U|R=g7C{{EyD($oJ@CFLypi^7+x#Uhbc4 z`TXc+FLypi^7+x-UhaI3lz%(aUj)bjDgXAUzZg&gQvMxKC#Zp!aA-i^kwXjm zQVt#HJ8|eiU&dhomHzuFFGu}d023hP-xc*c*vJAZ{Wn%#w}Wp0YTHBp126o0BJT;= zdjSqW%D*@2EsWy=eIK9!909KY+JGBa0agLeBVL9&`Ns!H`E}IESM=|)Ncm0F$yXsj z%5S4izKQ@+{#pN?OB?guhwl4>_5t$Shkzb}64Jm3b@JPXgN^|O_>TZ3pAmAv8R{y~ zj|C;45emQzb@JQCfs)S%C4hWJC!D{$!CN!Aj~lX{Xn#l-#!;K3QAZ2F^+T4 zIL8HOg5wf2$#Dgm;4yb6?jN%%tGeK}qY`hFZ=1WLXnd@(@2B)kUrK#nf~C0`Q0 z6d+#`z6>B=622TDUlLvmd>F@9fPOf~SAu>7$5(-VB*#~SeiX;ofRZl>Uki{g310`0 zF9}}{kS__}0FW;U-w1pH$2WnJFA3iakS__}0+25W-wKc~3Eu{gFA1*$$d`m~2gsL% z?*Pb`gzp5%mxS*E$d`og2FRC$?*Yh{gzp8&mxS*F$d`m40LYhw9|6dhgdYXSmxLb! z$d`m42gsL%p8&|0gr5Y+mxP}J$d`nl2FRC$p8?31gr5b-mxP}K$d`nl2gsL%UjWFL zgkJ*4mxNyi$d`m)0mzqxUj@jQgkJ;5mxNyj$d`oQ0LYhw-vr2)gx>?mmxSL3$d`ma0LYhwKLp5^gg*kvmxMnC$d`ma0mzqxKLyB_gg*nw zmxMnD$d`n_0LYhwzXZsaguep5pX0AV$*+XJ0e+CE@fbb&l z6bFR22TyT8crkd21HwCir#K+I1U$t7;T^$K91va#p5lP;PT(mH2rmOqaX@%y@DvAx zmxHG`AiN8BiUY#Cf~Pnjyc>9m1H!w5r#K+I2Y8AD!h3?JI3T)MsSh04e`YsJ{kt-T{3X z@Xo;ABc9g(F2DgGEQJlW;Tp&tTO0c4NJBVL0#*&_x>c^&Fxj|3p)$u3491xR_aiy6oO zQl9K$1#*CtC%f2z0wCqdE>55XNO`i$5l{i7JlV(t)Bq_@Hu3=tK+2Q7$WARl$_G&= zI~@a3K8!lqtP4o_DC%DY+x9`pc5z_%h$q`6fiWQE$#!XA0!VqXT^5)EQl4y=2WEhj zC)*W)1t8_gc7Ke0asgTf$Yz(1_$umTvui-g*HI^%-2zfRiSe3{y)W?I$XjGT7ib%F zAN2h}$#xy!10L~YyB_dCfRrcO9iZ=rfDQn%--kZpN2tr8^WmUmM+Nwg06hW7ejoXW zKSiDJ(E!=;n}Cl2&Hxqqek>^2Q3L+tK<5D2@8ciw=cpT@^NFBjM>F_O0{tm~Z25P< z72t&YQ$Wd%4)C7}dIOOCKJ5|zu4uo5%mPYwBzz|Det-|M&jKYo2El(e=syEw%U7WO zfuIr4&jlqrelYNPk9e{p+3%Hrl>ac)$$qZ_q&(R%k1<~jN_PAx;ENvdWXBS8UIR*Y zBzy@#b|ic$Kz1biec2=a6Hu?C?`uKHj%2^Dc*K7)>P_f;6)4%U1^%l+$&O^duX)6O zI_jSRd>tU=$&Lf`{RU97BiZj8AMu}qI^mlEvLoSJ0J7uf1K;|HCp!{e2mCbf1;F0} zWJkhx0AI-QouFh#!gm2=N5XdlUks4Vz6T&X692t`R8DsMa^U*`vLo?707&Iz$FBr_ z2p~HW|HFV(PImkP`3SWiy0i^s-p?(Qau8_vh&!GP8u;)L3lHGp}_@_ra`QR6Te*vUC`Qw*>e*>gE z`Q}%E=dcH){I5br{&{oArTni$M*ewA$ff*mLPq|1YsjViZ$n1@c>&~7{&yiG|GW@# zDgXPBk$+wUxs?Ay$jCo0hFr@3F=XVQmq0G%{}eLv&r2bf@_!B)`R8SjOL_7W`RC=3 zOZmTsjQm46Sjzt`WaOWBhg{14J!Isc_k>)^|087ND>?(E{69nX0RZJ{@)=FW?2>1-vbI0WSnE;O)Q* zcoBF3Zx3F;i@^(c2k-*$pD{cqfc|p^0WSqF;GMt=co}#B?+jkR%fSnH7w`h!6}*6V z125p+!3%f~@B-cwya4I1r*`aydD(E!lrGzdBXh=zb6r(w_$Kr{l3IgNsz07PTJ zgwr_aDL^yL#0=o}!L0T!HQLC*oAIpBiRJm@7rv;bUjS_BnP0xzHp zUO)xBfGT(aHShxd$Noz{yrK5Lh7ASWfEREJUceoA0q+Z5!25w0@c!Thd;oX>9|&H+ z2Z0yx!Qcga2zUV>3SPj6ffw-M;01gHcmW>?Ucg6z7x2;G1$+#60Urxqz{i0X@bTaU zd;)j@p9o&SCxI96$>0Ti3U~pZ3SPjcffw-U;01gJcmbaYUchI87x3BO1$+*80iO$A zz~_M%@cG~cyb`>CF90v#Rp14DA$S3=1~1@?zzg_d@B&@~Uci@t7x1Ov1$-HJ0bdSY zz-z$^_zLg>z7qV8;Kg4D`c)EqHFyDE175(_f)_x21bjVs0p9>#z&C;y@J-+ad^7l0 zVPW3^`YpgK!G9;{w*tQid>8O-z%K#c4ZIHcW#D^&ZwGz__+H>UfL{f^51{_P27Et2 z{l6Gv{s1WTe>M0Y1f~Ap4E~2essFD7KMYX+FN6F?K&k(ifd5g@9{_#>_%VR`|0eL` z0QLVZ;3oj;|J%S%0@VL2(f6l7ssC%i|1>D|{~h3G0P6p{z|R8I|M!5O1E~M+1HS-J z|F1<~vIX`3YVc$W>i-7-*@F6i6XawI>i>rT+2ZGcKLW@WG!}u@`KGe1)NVh3aeo8& zkJ{%AwS#oM&st;Y&F+7*`V-9M^I;RZ2>&U_p8;?Fi2rlQ{sMSQ$ff*WLiSg{TSG48 z{~EHt0bT&Pl>b}E{tkE{Q>huPq$!xLO><*{v$nEj^{DEL79Erx_ ziDW9B$>#EfVyRrI)}GydeRF&FzVG+`AMk-6^uZtUp&$0)AMueN_0b>mu^;#GpYVyF z^vR#{sh{@gpYfTW_1T~Exu5s>ul#~nec`LW=!;+TC13hwU;f&!_{y*P>aY3QulxFM z_{MMg=5P7dZ+qRhf5&%z*LQ!<_kQ2^|G*Fa&=3E}kN((?|HM!J)KCA+&;H!c|H3c+ z(l7tYum0Mv|Hg0r)^GpL@BZHJ|G^*r(I5ZGpZ?jO|HWVa)nEV3-~Qd-|HD82(?9>q zzy905|IhmWH~n94G+XWCPPf+|3`gUW$?5cLHeZ}yTwX2x|LpevJN*9&p=?nRD)-d) zl85Dk#KPt8&&r!Ur7RUbfR#6YN}={wyv2WQd9Kq?suapm>FS$=+x(>>c;o ztyj3Zy>a`jEhsgY)oQbcOtLI1vQ?Q()>&DXZOArdTe5B0j%-)9C)<}D$PQ(4nL?(N zsbp%IMy8eNWO|uFW|Wy^W|>81mDyx=nM3B3xnxH&x6C8+%6u}vEFcTYLb9+dB8$pm zvbZcEOUhERv@9db%5t*2tRO4OO0u%7BCE=3vbwAxYsy-(w(MBek#%J~Szk7g4P_(Q zSau?t$WCQb*_mu6o68ombJ>OLQg$V~mfgs1WxFfF8vg&Ky_G(!a3{lW3c%CK>Cxe2 z!z`a%y6_$DHpTIUKT%Fp6ZJ$hF{3sFbQA4lGlg%?uzq5k7$&BPc|v0i^p;82i0|%+ zZPK&aCqu1c;+(i9M-z?DJ@G)tJDIuhjm)(1T?`tSSkCb!JPA$0s6}`SzI7*Aj1-&1 zCy7aNlA5F^nMsbdt|zmgc~Mik3gg`1q5cH)!f1e}c_GLiQwv(Giw!NFIchsHEHzB1DN0i9vjBb# zc*z#y`jz93Ihtm3+mM^PR%m(U3%b{6l7rKRhVOSU! zGN0+0wz+a_8M?3@mA;|My|t`Aem0XNiDE33GsZ@YFA|I7BE|R&p1X=Hp1DPSQ2;G2 zO00!?l^2yoAd25Y7PUov(O5JWt;NLNUK}qvi|(Qay*@Bl4DlQ-#*351WO2HfF3uLS z#g-Mn-7FT1^TmZY9xU&>TwE=#7dK3HySQ7doUfkC&ezV@ne{i$H_x}u$BOOqo%3BL z**o7qFFFnwfA|y+nG!2n%+N#gMdXG3>04ja?~JbIOv(Y)zLq;v;TOhi!n>KXBT^>b zYlS9}QtxVQ!EF{<_?;0WSR7Ggigo`!WDC7DUTVfNG-6$c-xbx^zYatz+PdL2%}(ST zZ3}zeddNozVo$iRVnt5vYA4VmQ;2M)=f(|P#*W_vJqfoLyC;Ph4yqDp$M1VNw{_}K zCgjl$EW9i|%n!fz@iCXOsWX9{+Vd@I51)H{M+(v)=GaYMrt#}w;7+@eDkps*RmcZ!V_;zgB$C5kAFTzG>nJnwZTH;DsGitGxQFPn77It7fDp~I-Vr(YH zS*qYVg(d8nz}AD@sikMZYJExA4UvWUXOyvQFmN3VrL}rLUvD8l z$?aeTV~lmB9y?OZE+d*>;w0xqKBuyPSMr%Dr1RXJxoBQWBd|vqo^b+a-1o~C{2G{Z zu#tKZoB2k!t}FAkQhOoePM(Pi#eX57W6N2S?4*ED}GAd9Z%OZi&zHaF3o zXYX=Xxs`mAWm9c(mMdetYrMCO69*@Wot~3;5%0w>rsfT_u8VKn%O8N>%^O(6;8*j! zmPIRm!&Ggd<<^d0YSFd>ev|c*v!?=)PG#GGIAd0_GjBNIqa({OT~qqJ1KU1y4}pGU z%rgJ7Pv%jyk+g{{N+quzY1QlvR9itjQK{r3-aETqlp~UYxA2$-5?x-Vs3#5J-0+W< z=_v42=C>UxRy#9SV%vJW1959%5*pJ8PQ`2j?~77ud039}TFlMHGz{>|8H;|L<)NuD zhLyWmOBZpvi{R?g-q5gbyfn5;6 zn9=;II>yGXvc0?P<9IYuJg>nn_>YuRF}IO+g0IQV^UC89GWi2>+;l#b&vJd7O4xDR z68mgQ?0P>+GN0o;@?uYFZ9g@83jIoUfqTR0rB;>;q_EFYnOIAeMO^rz4Ffz6uQYfD zORzoX3Xk&>J}VXCQNwp4y>pGl=77y|mpy~>UBjiL0e!PwiScrVVC+KC@>H!YjStat z5kEFp*xt98kMkXttqLrYr1TaxLS321yp~1IW>R;p7OH4dW53;4w^^1!M#Si{0<4=_ z!&4~N`8_tjf$maqlW(gQnBl^vNVM!r4VCsTf6G>5Vspozk-#J7>( ze4Um=k}!T5t+#Bxdb1K40e@b^ob7_q`et+FS+a_rbh ze|D71CMV9iCZcT@r#6>hl(c=xyTB{Nd_^)divi*aVlJiHeL3Q@xR-SES?)8nVG{9) zQGO#&z^i%0$g=bhL&3@b&t;M44owR9HLHp+Ys6VkmE{C8GO;`r<5mjtSd2fi+H#zA z&xO~*&dx-xh4~-A2Ai1u2DESeok+4NZ1KRjq z!<^o-?K#sq1y0~pE)~H}!XC1NVyET~Tq{W#c(qyWi$h~%)ndfDxKmrqYMY4UsrDvx zWv5=}cpBpMxcAZQE6hi2w4P$;AXA}zpV^=u^@9)OT(H80%FA~&toLYykm!qbw%?GK z(BsY*VI$L+xalR2m2z`Dxf@h-E3PuyhLu))r9ewD!3yF$O5Me~<^Hm{4K3>kQK+qI zs-{fLl27~OGOgdX6;f4ofdt|zn$srSMr+WDousQyH0tW|jdQf6ROfo!4Iqgccg%B) zxfi~6of&6#XLuUbSKXMW-D#*!U_&amSYy=@3ZEy!ItO|kv9V5detAZl!hH9Px1p3x z5u9PiZe`qPZA4VCGWJ(QgDCSxCa_^0p0ThAT@^bJbF{R!weO z)mc@fTxc_TbIik}0V_f$0BIB`;a>5u_^XAg7TR88r0T0ynB@lknem2Y^(+td^u5c4=WuZ`Eqpw9&{nj$kze?HC}GVzrH0wwkH>v(0L&I%sbu5|C`$ zkmC>|K3j@whuBUjqZYu*E7eW8&XYu~jrUcx#qgaW&0?xr9Y)vXooc-5iKnZ%YQ9>6 z*0u@pU9E#_RFA9Osv5o%N=L7C_p1f}mg9)+l8Wtuy$d!;kJ014=n-#K;}9|jBC;js znpw~S4{Y$=NBXB#PiV^ejvkEA6Kex-C)G*Sf|=o#$mBCTWvCYeTanG$4m`S1qgF(4 zjS)QVppy^Z;CThaY)9DPA(odesw@3ltb*!**CRM0RT)_U;4wL2YD|8@JIyWr6WjHRAN_ zi5;&tFisiu!DDhRg#s&AY;>WvqJjPgov^)-1els+MG2RvfET%W-~@ks|_z@UIEC zP@GhdU-R9YhYg=z>a}uhKXKpIs1aYRO)!36{*hMu&F+k-1w>~XsKN&r!~YTVh$&(J+5XnGJ%ZBv=+k6 z3;WJs4xiPCL;m;7YKSlN*zhfCbMUXPoHHE<|DIYGtzAfEi}@mQX|ZD{70bok@_d3s zD8=H6s>x z-3r(2IJM!ePO)AzdYTxq3!L+e-e+&<743Yi<6>KUC;F-P?5oa3u_emFv60B*E^41j zYBZaMXzjCNqNq3QriRdn+a~k`j?nkwtTJ_WO8X8+H8M$RVPgQ z0?&kJ#`t;hytrW89iG#qQMv4S%Vg3~)=JoCqV$S$H^rL!(nNYPwBuHVr;A5|s7vYP%M96V-MkBaB14k{Y!>tt4TS!_po!RfxN59>e=j^bGh7k{xOB z9&n9C>X>Ci>DaqR>E~UipqmmsQ(*SPEnk!fI!l`2a_cj5CF$88*uoa@qpm{Ey=3Q_ zmwDuZjbN5!)#V$E4fv8}2|b?+$<@e~M`B*<d)v>-uiIy#9uA{%ZLcOSXDrT%O&*J3R6FC~AZwbIn%T~h* z=4^kP6~2nXk_`pW&oB1H+YonUwnpcpJwzi2<-om*Ob~(>d*)jnNiJ^B%XY_i)xO32 z6j`gji=7u|w!Cf&y#v~ynfTlI$}#dTyEjsO4Yg&tYp)+?*$N%HoAxdKu#)8Eqb)`^ zMLm+b(7)m#Zs&makhOr%j8?uyLG@9kLU1`&f=X8?gP3Wna?!5PaNDV}`hQ zH`$Cy^0+9VyWmj|^H4($^j z_bt&r%QyFuYP4#ARY{Cm_=pBhN!RV6=V{m^k&$Fs%%Zes5@bti6Ec7x0wxvku=P6 zNpa`lt_M9o5CLMW54_E3@HmYf5Ms3`dlumt4{xP0!xCP2$Mey|Gxbx)$!E4b--v1S zx?sN}WS;1seM0hZq-3@XjmmM>7Q^i%lRZ|S1PjNmTqL^+-$j{cs>fEd(@;F#WI1Hj z7{wmm=uJ@7-b-U|CvyQM@<=4uXS=!2bA$$C zsDVN@Z#d3uX(!=eVnd<9F72w${9)U5ED_MQojfi}(LFIQW-)8*SYs!C6HUOgx^|iG zf{|^ZsIXk*hWyBUl_l^^cU31=cwk&*qtHnArQ$t28Y&S9>|Lg|4`2T{&#(%i zm@#83AT1qrO6v^D<7Pw+vMyH8V0LLC26x$=)Eb!}D=f`R96T;+KM78G-I*h*SaUf&DcB&w=@yMDA{RYs;q8S9p(iB;fluQRNu4snY+rw^n`vkHh=R|Cw@ep(EFuZ7au)8qx#8!RT zj?*KFFPh+~N2ueM3*NR_-)7uS{gBZS=D1rg==bXfb$Q*WQHW#UoUQ96wFIJ2Ti4VF zj^(I2wAtZ5C8)8kMRYBT8ud%~+W?AhBlhG?&siVT%nxerjG(ooHkK(Ybz40QOAL^O zFR&`?dvl48<_C)WcRtoZXJ0UBW<>X9a2K(%!EYWirg>2dq_1oA z-m99!eT}=f!f{z^W)77{nIg*|_j5wrsaGVic^Exm@4R9CmwGF88Jp{E?XIQ}Pt`KG z)%xXwNR2)^<7IUd%h$_s)|jo<*>j_=Kx{r=@#`&~K6%1(_Uf}p{%nL zWLe8WE7Q0MXl#aLTI`V(IiU~H1BcHptrr`G#txH29D=;`)SlE@MoZ->tv*CTGQP^@ zw8ejWa8=fGJGO9fn7H!nxR+xeAx~!&2i0ZGf@n~H-$zW{Ch)bWAFva#!1F{&vJWdEAZM`d&=_g49^zcH<#S{Xw*ZE4SRdRbG3Z9eABa@$I$B;6tKJ5*=={)J>C!b z4fCPWuSek11H7rt@>4)LfETBVk(*jwX*v8{;(MzMT0}pCD#)|cW%xW@fmCa~MHE%* zC1b6wH2Ix%-eZWdEzD{SNL(7PyUAKwyd60lI|(qcKX^l@ZYk$ks=9jX2LbB%`8n zAip#FWU!JZi@6p4-L^53vA(P9N!l6H=4gf$;g&zD7|*pUO{MlUw27Eqjjpg6BrpoT zEO0hnHLe@CjhjaLXchKzaNlhR ze)%|rjsn<>9^knhDf3p+9cbFtgfa|&8x*_ExN=WZHFU9Nv_y5#4l!M?FTiX?a-7o5 zF^><728&)LTihl)BSW*n_ZVqvFv7A_xCVTrS23x!Sw;3%H&^XT4Wp>LtUv3ihs7Qi zA9kS$z1^7WIlH;F`Tflz$^X=6SM>j_Qy8OYI$)j_>i8Qh;vO_(RPCeId%cI;3Cj-W zlG$0GSkb=t{`R*#4Z(g!KpRQw5bP`OrjZB$GNTzYqbVj5$oU7XSt;lmAozOv?F({nYLKW z^jXWbdz0-}>c7e47>DopEyQuMVvP6j#;J=m&M~i9My8o4)knRfeR~RLa94iht|1Gi zk;O{ZTsVR`MZ=j&%xcZ1E3tH$&9TAugv>d?Dl|!heZ{?@JY`nfvbzG=$_-{K#|Znr zZDh}U#Uk2G?b*!A11|K>s1ndv7JcTXuNGH-%(Q3XN(#*O*i)GZJR6Cuh7MxMBc&!+ znWuH;B=hYWdMn*S=51tLydO6QF*2xDsBExthI}-9k4H*au_C--r*;c$U95QIYGcxW zcGMNWRJ82$Aq}B~>=Uf&)NC^8xNYaK{xQa)(yWwO-zu-;+gn{`kzA{cnB7RrgKS^p zy>WBW76LO(8$CRjdA$-2-QgR^&AqKgHk`6CspqmJVF^n}4__uRcFyJr7vck~zEvq# zIvD4UtzGVHuvyqMn|Rj@E9s&>WwPZsBk-rJUgMEo&z@Aet~#vW<}0`2{n9dq{-BaZ zhTG)!rq*4X)k-wM)=FFtdIyM#3TPi#7MmSAy>h1P={MOvb%^>nw<;G*Z&$g-M((RO z9(+YFDsfo8iCl4Bxe`ab-3B@7RcIVs9lPRVX?!f4DFj{v6i3uIynpyQ0nz^IEOS(0d(F@!Y=wzG9~y zt_K#zZdD#5uWX{dB;HN7s;jV=P?Ca8ptB7)c$^6B{}CGCv3;+*i;*6dQtH0$;L&+6 z5x6}`zX@!KtW(`YK3*1GUpq(#VCUQsqGp|C9JlUH;>`e)ZN|bg>Jh^}L2MvD`q)_5 zy#ou&Od-Un5;o2#wz$m``c-DToOq7v2WsBy7VmVye%I_xXUMeASC05?VK;rov$kqj z#alJQWiK7x5XHN%<_Z?WZH$^^eNHS5%w`vB(?Vt$K@Ylypp)rI-)UiU&TR2;MYov*D>3upMuPlglw0wHSM2n}dr`YZESLewm0b40 zD2R54YbwTj9Cq*qkUg3HQQzD5@SfD8gUCp+n|2V=h~!>Ctyh)^^Js|mF!=AHfqo$1BbA5;lUhkpkc+D)sgKZtKt@Ko@1^Y>h5fKBSIpZrwlfs) zb27EXvPuwhw06zR^QJB=Z%@XKlx;O)4mHF%+r!H-+!)Q$y$F=_^UzYFwi6x4ZCxkR zHY4u$6(wW~OWy^F2MDqj(hGs}2ix%HF55i@mVF$Mo?~qRQE$QH2jA0pd&Y5u7A>;U zwP7RU<65=AG1h8F&E56lY4A2-J3qLxEx~lMc&580bJSd9b((=tDv%VqS7Lk!a-uo8 z>L{ddc&xs)|;KHOp_P02GyT_`=?Q}!ssO}l-(QCe!NH1)Cr{H?yx&CBtpmCjmQ+)NiRR`P9V2qZ7tC4unh5_Hx(^?K8AE;{4&>V zcH3QzrqgwM2i;LuZaF~DizjsFkjTS}C*;Um$O2u+b*_nIcQ4;E}il9q`lTgO&=StBrkiF1~BV=9R;`@U;c~6Umu< z#G-$rC%jck_c5>4Uc<|7bGe`3n=)>Xn&w}&UQEc%&X^lAYb-h zJ_BM)MC7FHMPvluQ(F#nQavdj?1dimaA37E$tj17h4#95Li)ze#O^30&vDaYkgScw}vs# zNcd)By*GzD*yVZ_16_7X+>de3Z86>ZI?mh7Z91s7C|i*Z8@Vpt52acHKS$272djJs z;RNY5d;NGDUb|Gc@KnVcff)8iSM=<0ufup1Ki7J_zSxHESP8#;$M6Zs;n3iYXmJKe zaxCeNHHc`Ff~}}2X=~!vp~t?mu_&@?4LP48s)#G@VBZ*S3cHf%Qm~98td8i~z`=K* zF|?Gg<7T!AP}$;igVUuHC+%Q&up^P}fsY0>xl_Dr-F4yF9|SO?gTdiIK1lNnaRsUv zG~h86wAYODxI(TRsQD;68lSU^HVx_r!D^G;8%&d0 zu~NP-YfY~op62UP$Lr0$@6fPs$*GF$hGyq0?KXSOnZ*D5kgMS9KE@odaSQAu!3pRo zuvJvOfkXylw31i{n8XYrAGg4t5$2`t8I7v+|{1Vc%xYrzcXBKfY zYHpbJVW~;8z`jARoAYK;%!n~v7#4_Rl4*xQozBH+L@I{Zf?Hw7r^YA+j7nw9-h0zL zX>RGxn=?KOBb)guX0d3N-CN2V#C?tB;nghiul)WVQ`9b+ z#+b`xlW+ z$aeNVi-D9F2{ewYH9|is;jF!N8@2ISl^g-_Z5`YlmnDlCrb0fh<83*>9kuq^2zkuc z!&{Ka5=~?|HM={Eu^ubCXW_O9Nf>h)g)}2!RDrg6{K3PpRj`%LIx*h5#mz=N#`yl$ z1+$HnN!pO$HtF>v3T{#=WtP9)344UWn?Z{#i)T;^@LV53uc1qLr$Bw~9Pceiu(EJe zl%-l}@OQA?G4qLy=e&fdao>-)7?Vey(JJV+!#muzGCN}5l4SZm$;s1csaf0zJ+LA^ z<_Wvc^;oUL{96TIWAz=LvvB_pVkfuakhX!6ugTgwM-9+A<6%2hmvfNuXb52!Q#nS< z9(HN5AEgnSRxmCBCj7U`H|SVXw6!8=vRhh0^GsIN6cTRqRz66qSeS}*XO+g%qK!0ZAhV7^4DlT<2qNMx4;dr3)&H`YgC=Hmdn;f zYslXv=t!x>F4Ve`2w80l(ueejeJ!l9R@nocHJnZB4{8|M!2W$;jz^gD!9#fn+JM#+=EBMt#lJR(TV?6Qj~|rdZvrvwd!CVx zjY&IhDQph-6^qXh86NpnrAzz0!v-<#8M@GLqzTs?OWt?&kX01yfh3H z#F3Zt$n(0D?Ra6fSx9rdrS+%>>6o8t8LuRtm4-EOF2blpi{fY}i0-mjqc%^Go{vlA zfsV9wPa&p!aXu^Bi++ zkK2IrZdr_+Gcjt19b_1Niv6lQ!q>%7#JpM_C5&bji&)A;6VV;)p`%Nx%$2I2t zMSm~aVZG1!?x&G#+6&Y!fh#7xmb5M3Bs@=_*>d0;)Nyar4e_Kh0##?n^^*n=yrft_cqFaGQ{UUvn zyr|#QFPZeJ-nSzg)mIu`&}F$s%dPkZlC3wEEh)#6!rqW#&bF>2X{A16v3>@w$8#Ja z47Dk6%G+yV2AXpTf8|ri)Qew1?ISxiO&k+ZAOE8=?9#_&wY$=l${g75*ejh&^t%Sm zfji(9xB-xH9eMAq+r@JNNk(3JQjt9vYbkr$a|3$oz-IT{c+pt{H}UN}$l(urZL@LP z{H{!GckwMI6ZCda+wUIWxyd8_khjYj-NRGOB|;y8?n173qD|9Pc2!SEg+2n+yd~$N zw4z=>FR#vF^$B(td@iy7HRD~$4Mfa_{$S!nCeyc1LjGjd+(%mn87_9z!}DOg&u(QE z#Kz%Rcdw)%c9i((;IxfD~`crjJDBaG8uweO($YsO=!yaG+#gL1i#>J#H6#y zVp7MvPEk7-`&@y$;I+9Zy#;qUxtZL7u5kM}B5UAez`}7oDZ^SAOMR+PAUZaf&L(^A zokr5zj8n0-VWp_;o^GA4GwBX{Qg5Mb%l9A14pCD`By#WvVtq9(^jlITZ&8UFLi-8J z2VO*BR-TtHr6Zg|N06i}0n;X1Z-xB^u*LW-Xl*lY%&fk{cwsz&?mk7j#{ARHv@nbI z6EmTnXY8CP;>5wZp6MdS55XU^-xC~TlU$RI#B1gl&dv+m@4b45CdBr^Dzh}c`dNSK zjc*D`TrVZIqg6!9aI^+31wSWh(UTFiMleo^#nK8JYs93J(dozxZ8hFDW|HMd(&ub6 z6-MKzfeoC~_@#c7gqH!$-L0^!|O9qpK%m zx1$a5B!@W6V!VU?yA^6t!P_33YV(XAv83eZ<}Mq5H;im8@sAv9-bejt@#L6- z#QT)nyNu`WJ=d`$p7envB4#Ip^Zx|j8L*AZa&{8Z?jmxR<&gPU3)|>KYhFeUb!RsH zXyBAfvN(Q;W*Q5R3Nb*%Ji0)v#Ne;(tZ`&QYXiJ(WCwS|NArPtMv+k$>+&<1cVuO> z$Kn;OY%lcuiIijH9Jxkrv|iegN%)HJ=PlToG1iCP8V45uqQFIjB-&tT6c*cIXXYJh zd0Y~ssY96zj&wZN+_#^IUz8I*ulqLQG8q2^-ovTq+?V&54-XW`4E()=a09LBQF4@J zk}K45;POBT2toH@S-8jM!pI!zi}6@wJxObTc*VVoTVT$;RUH-VUC}CGKF{*#i2I`= z_NU&D%Q_nqCz3>~4!+6iS$5CyveQ@SspscbL()TN6KLzHZO0O6Tfz&yq_iVxw+8yd zQ#)=1h`YgX%ug|7sv*uW&j`=QWx`~~*)v8@hvVVNP?kOQkApKvrcByHJS>I^aWp%8 zJ!dWVqnR`dto>XfJi|WcBT*g zE}**rZcUyCSq-tvR_j5&sIe$mfz@tKuG!d^>`8A4p;yW;=Q)fdcdV_#V${!Pb_>~v zjh|kS&a;b;?O^0+oRTYmRZ}qE;Qj3f_I2{ueK?K``a&5KtVze5pPF7pRiVnk?2XCpu(?PAE zdrwa@t~06~;Th)k_ndiA3&@d;K>cT@+|EJNHe#e5Q24-8iGs$F_i%#(m*CRWS@P@} z_imd4cZ;*YSpga`))vPz&9(4Ga82yYTdXi6N@=tLY9YXfo?}aiwXNwUw!4fH9-1H{ zR*^$MZ6;Ff#liiPCV>iVX zm+mX?5U))!{zhj#-cmA*IoCcrKI@;=ox`(}v+mg~AGsB!F(+K7!|DBdrlMp&yCY_= zGf{d9ZcB0lDeLE~ZN@c<{H$1 z#d+?O%84&N`g)AaWNbJ3;hT(F#r7LwdlsF=X9X4y39P`8s`0Fd=;9;jSwE8_Iop%m zR~u@2OKO&$?J{YGufGVIofYuB#kr81<++@+sWkN7PzkaEyGbP3InYe$#9X%2DnIC@ z7X7_!MKrK>4U0)Z_L%y4wtg&sT0I8~oQu0+#_tkQZrh^$X?^}r$>uC`N#E9gU>#}8 zn}Q!a8h!Yv{-$`xe~&Sm=lAPSNcP+4zr+^6FyaBrGwK@z1mUx^LjsSHsx%=nblb`_+MPH6>qp@ooaNgv)&Pcx1+3uA5Cy9OQPUlQs@zpK69S^={_BzL=3;kMrzteGESOXSS_@Hyx z8C%oF#jsLx& z)0j1N%pFUoZ*IGsc5BDh*+$;AcN`sUC#H2`99QS4V>DGX9%oJA?r2h;j!p0DcsoO^ z!r!@220Fn`s1xo)I?+z7vzeR+P}7goxVH$!G|r??xIbMiBU{E3+?&kM zTo$Xy*%@aO>w?BK4t?AW?2@~7U2;?Hu)OY>RbyVnL6PNBBU_X2QT+O60Z4)p=~e!Y zjda?cBym!pB@|h{x2_W2uf{!Yj2n7g(ytqBuv!T7x-ThBOWopH%~_jq$6~JzIHl1B z>vTogvhTibgz>5DCZcw%)+QTN)4o0v;c<3)p_Q?$9!BJLFrV(}wZ3!-b#RtTEbdaanD<2cdXgboQ<$xPuxr$ z*A98+oYxS^;C7hJ;ccA4MagNpoQ3pxc^Xwq>sR79Qt6Ucjua!}YQYNZ;Rxn%x;Nm- zs(t0b?ZYu3tu^ej24c#q&FSrf2>fUpY^eN(UC3s-0FTO!*{btE-#akKqd1-2gIjpo z$42n8X9Swg!O>vh&t}4DWh^?-M`CE%f<=U)QX~fJA)&UU_{TS(6(3aHk-=IZJ-B9` zxWc}`?>f0A))^QC2cbcDkQvyI^U&?ue2MI!G#Ki0s2OoO=dcDH`jrPI@oQ_3?Gspm z*=^x8u(cNk#X&9A_oR-hgH87w_a_Bz9xaUH=BIoE{Ig1vwe7)1@o<~#)j?I3L#&33R^71HvD1$UWs)sOAYTnm$V|*71ZJmtsSjP?ogLZXBA)h zQ^fw&gC0!(!7psp#+|4U39k%`3LPQ@zaa5Fd5hL-QG;4uUorFCA!j={h5WZWn{gTS zb!42}$IFp==>Yc7CbGg-Vr#Yyx-$z}t85lajhesC=IlI!Pmn*S4`NZl)M7v*)s(f$^L0u@Rh! zx0odwOT7f%YZ0YZk>js_&L)vmW@bkhvApZA#OG~6Lsd#MJF823a!rY(1;n#~aoCqR z?2pnJERpdWOIk=xrB(49FqhmV3)8Gd*0J^|_%N#{O2?L6e5L72!BV7TEhThrxwmAE zIZ9jjCNk?nOv_WUm5Mxr+v0X63$SO5J@+F{P*=%U@|RM|cqxt5>Qcp0wX_jBMoY(4 zVtNi+9`s7CHMC1fa7U#~Y38em-vTBcZx%%BD)VZA^-JSv!mg{Z+R`GAQwx1W-9=bk3eK>kPCEEuoy17Upj02o^lE3o?8=nR}%^G*3&5(q&1FteN+9 zOn0T*(r$94EGw^gpIbDIJ39fjzNh*~?H?mG{d#Vs70ktL(duo$@a9l;u;Cro5Fjf;W{nSyUy;W~ont2aymYK2b{j9lYi#mn6SQ;Fq-IPBK}ZMK2!R?T|el^!M^w zt=xLhpT@2~&?E_!tVDW&J(n-%$`gG?lt$sTeeF`0o(;5I8tbVJ*N7n^3*fJ9O+2eW znYRdi^5VH$EaTs_MeCuZg=hPb9!>{H{LF6+?964EKA|PFU`5C#H~}%k8P}Sn&&m_V z5Ai$!x~w+F>9s65-T_o#|9!R+q$l)C0{H8=Eyni3EP)ew&Dm#?}rj@q~GW?RI z&_bqo)LZ$eF6eK>HIG^jd0h@_;l5N?MghYEJw0l=2NL-3QN3*u-h$hjvd^N;2p!{t zTebO7ue^9Z??`t0{YVeFHn)aFGKx*YOSMcW0f5G3f5=;Q6zSZs;OqGp0y?%!dklI`hSNwq0jcEy}H=XyR^ z;qpPB39Bup7t^Z;avI|dl2b0d#z}fD=J}K9`E)cL^R~fs;|#eFz-@^=XJ{!%vd}fx zTxYGMw=5TIcM3J4w@h>MZ2N2tx;MPvF8Cd>Z<)p00jtYJDRL0!6=!=A>EYSkbYD`Z zwAy1Oq1Q7*`IkhFYSQEn7DLH;8Z zVhF2R$LVp(2hil@_#4Qe*%Muhhmom=2iRD>8lZC{V2d=9sg+~)Vbz4ZZbOw zWCm7ON<8(nUjI3=YjY9yKQ`oD$w0Snx6iG;e!oBHCUZdnZ3e( z!S3l~wTQCqbTxRAJ}6W(0kynvSioH`p(rQ|szNHDF6;(01#Ka!I?3n?a?^oEUoaHL zhQoL_VJx`x{pg9(R4`K?ODS@av=q)F)=CbTTfidGlgAmws3A)apem6!mUdeDin$Zt3B%}70Ly*w^FDUe2-2V^2&(c zY;kASUf?{tWM^7aa=tEoXArYp?ZJKjENT-+SZdmh>!~FtJo9ydo6UC=Q+87jB>1Xl zBcJo}Non$e#NiS zA8FhDejw}*vokH+V4w{pA>82-RHhd z;O6Mr%-Y;`7C9z7U4RoXW*kh0zYmu>0vF;nWC!_$247tB03;>x9_pTZn1**A1g%+p z^DBO1iOrL&1-}sEH{hwkJP)(Fj(^!+V4j!AM3H%Pj-SG{3ACnp4`H4bUQf+UN!&e{ zHP*zFF!M+ozst?*)*O>oLq$oePnn0!^N9w|EK)N zEuc}|rG|z}e5H+gJK1qB;~e=~#*^NpciO9GroFS?yf^DDdgr~m_oA0eUG^flH(&Lx zdr`|xZ%c1=-1d};lxc3b>)}4#U+v5K7rK4yn^quFJ4{)ky7XGVl3wpSVrKZ)tIo5C zLk_eHvpiOGAnS5Da*3)d<^~75T~&FT-*JNI!!MWK9QNC#M<2(RmSN6!EVb-I9!%X} zj?T75=VHALrbZfn4r9@#)+2k4Jd4)_;>puKYWtuOXnWgHjSqS5M&m|(!EUa8))#*o z;BqTuSPvB)%Z$NrI2Z^dL!oxCeawF8TZ!xNN4EF^2lU}dCfY7*kfCrM$J<60$y?zT zR__kPRr%mBm1y^M%Ml~|Ez4TEeW%VyB*}IPwKBf8@XhD+zzPkl4-)MV-{@JUxnL5K z;%}-!W2P;%bM1WFju}vKCrV7OA{iGWw3XOrGB$EiY-!+Xvg}3ATKkl(_g+$mW=U}k zt2f#$u~(CEZLyBuU@>kG@2_@nQ^1|)0$2d&0F|pkH0EWN8_SmxIU?{9t%2l@akY4g zx!n}53q}7eWGlr=_O4K1U;OJu(x0(4Zx+{3+hP(k|K9W4WyOu6EQ4DilOrNHJt*!K zoyO(c)@-|6x>NL~Y{+`}^9x8W;UhV3!LKwdQt-EVxh3&ul3E3Cox`h2QFA%!v!8zW zWm(j`kE*D7MsFSD+DC2rM|B#@z+^`Dj3%#UbFVAga^K8uXV*AAJ>tFog#7}OWbqbG z?XWz$I$xP@8SiEpL=ly>dBTpYj`i+@*XOdi+Ojo=1?ORl-i3c8DY%0gm5ur4d?Nm~ zjo*PFH)BVR5GPsn?)-r1?avSAarV|_FM7sZ+v1+4x_qwSV^R&aWHr@XJ=chG-CQg3 zdXZb|-#`8EUMd;Jo;|VWGV+8CaWdi2aIZz&&VR{o6%Xg||5ELOXT3LM&Yr~^qWz?< z_l@Z9dn5Wh`R4yOB>w-TwFcf~hs6!_Qdf|NhJ)Z^Xz) zWB1rI9;DZ_zOi@g9|y+k-rzWd-y`L^g(f_Xf{OqieQX>bC&oqXfhw8t9BCBzkG99D zu`QMMUR(1Kl_4`uk8|Vfc-@^J7sdzP;`q>88gDAgEL>OtDvOC0WIiyy{l9dPCikj3i3}Nw#GnQ$z0% zAPFQ8AfcB~Lk}gC&;m&yf$&%SlHAMLq5_Xhqv}}y5d?u?fTQ*jfBg>VIld*{7 zWs=dEQzyuhJzH6xY*I3w3r?1?@^eOKlhw(VssJ-pHbs^%n_ZHlFi7@n+hh=SQ$=+mnn$JIVG7k*(yUa-87<%B;(|0 zN04R3GD?z$Dx=BhvXW$qAsdrdDr3r6$uulu%ZjFOWLz0f#+M0XLRpziBooVuCnv2Z z8#+ZQlgZ>sx+Ep$$NR4X@~2+WuVMeU)5%RX*i&ZBU?<1-S+l`WqZKm?*jP+*X`eq0e7WKV-I$vl=l2Zv+h*#tJkCgF%|a6564|{rYG@r!$9AwF~oLV-8SXlB8HQ;BO-z2=b6cQ{-{^ACY z%Ms)X#tHI&88s#ARI(OhpyFTsg5F%I|5qf9!UNf51*UQ-X4D)JR>tQS&B>)?&n@SS zD4b(1M?ypM#Z#uu$jVDo5R+pCgkq2)IhIsR#g9q0mIXyXGM7b|J_$~aInxy=1raCB z&QPEg%rTjY!AYEHbRWM_ycvwR!IX^sh zRKx7fkMREpIWXpp)iZ2^q@s~O%l@y&xHtAJ$(BZo{} z!QT7P>kN3v#KWza?emVpdW#MR} z<|g0RV@6KOXYt0*F6F^ID38rUl8HrJUdaRwkH_Qlr1{DD&4~gYFCR5d$V<*0@$jRB z4Q(heNyL-Q5c4ESXtGbi8#+UlOrd7UdF4C>FE_d1Tg8L()jSPPK++~LI$lAt1^;yz zuO0VGz0K23(58(`wpmHYHYhD4E%_czUdeVmZA@Br+Ss(5wA{3DY2(xK(k3P0=CqM% zqtYg%O>Cg~M=5^>l7>Ve2O*J20GWYzTm;n?3Gl5yaY+w#h2owPzfB~=o4!{Eh z00M{r2_OT-00p1|G=L7201SW$uz*qk2G{@x-~v2=4+sDuPzHzqF(3h?fDDiW<$wZE z0xCcaXn>!!K>m&&r)SK_D9D(ZF)L$s#+;18jG_!M1CxQxz$KSJ5i+0*Vg@OLoKc)X z$)IM?GUyp48H@~O1}md91I}P)a5A_VybOMZAVZk(b16T@6a*DPLnIf(AQ%WHf`uqW zz`t7`rz2({3J^09vk}5Mn25+jOhQaXOhM!$rXr^OZW+IRuKz1(BpN`cqfzJ#G#Z_W9*iD> z9*Q1@9*!P?&O(nwk3x?|k3nan$D(u4x#)4|@#qQYiRe7^B=ltT6m&j%Dta1vI(i1W z06h~u3q2b>2VICRLW5`w8jHrE@n`}XLKD#>G#Ootrl6^48k&wSK{L=yGz(pdhS6*^ z2hBzE(0sH2Eku{0MQAZvf|jCX=>IGB)1;|?r>_6~)9cc-|0&In9I7tiBvGsrLInvS*>4Vad=|FmVIx0OQ9i5(;J~(|y`q1=Y>BG}U zq-Uikzrjc!l|DLsOnP?u*z}xa{?}njdVc!U^l9nS(`Td?q|Z#Bl|DOtPI_T_Q9788 zNynz+lJxj=LOPUAOedw2(~Ez@|7%(Q9cdKmUr9|vAy9)*NECodM`fVUs7%yg)DYBA z)G*X=)Cg1-Y9wkDYBXvLDjPKxm4nJfjYEw`O+ZaV<)J2_CZndHa40;AfPzp&6bV&~ zqM)cK8j6l8K`~HF6bn^~f>CS~2gOD4P<)gCB}A2>L?|&zf|8GBVOL#w8&`GBSUGkH{GIQ#wD%KRRP% zGMD=cHtm3=Uj^iRmh`V+jr_bmT2ut7;J1}CrK$!k>d z8k4-Tlh@efm6N=F9cB|JML!~Eu#Z8li625CO`&E&#Y3&x?$>20YNGz?3~?pxJ4|bK zHE##~JL^ordTUeOG0h7ciMzJ^iN)#JjO9`em2Q!(vlp`Q@Pp(JqlHm~Tc&i4&f-_A$D7hg+Egvg^$3aF*j7R z2?_im^V`8;43{7-wAxOZPYL$xd@fwXk45^f*soZd6W*%i;(x72WBQL-z*+GkdKr^e zTwc47wh3MiZ{_KI{&)+8j33f%X5k1u2%f+ZYd`{B9&Eo;wP)Es1y_iVR~+SBFufAK;LUPG2qfbQj1MPT6N(3*0~G zjos8YgPy5V*u4lW@zp>draU&@YN_{N#?d+c{g&n2UGnL;%{Y;(WyvDiE?68=soPZz zG^CX3jUR*0%@x|t-~(Gf{CBwWvXumPRchpTbdQu1{rLpyKdyTtXYzkE-Ae2^Z70s{ z%2dh?_T>_bVWMy#Cf8m=90{&hR~ul)JjSC)AABw}Pp)AjBX%;tnSgNiY z;|4ybYsp${3tNh2r|C<{H4BbkOnXi{tXt3N!dcB8%$QA1M`q|U2?^n%RKBN zFw@vnT&aUCXo6?6XI8z1t)px8FKHw2;|=e#2*Goj?aXSXQzNdD$&H#>#?{)VxCKFE zF^G94y%#9t_A%~LER$TdT&He>Ba9JbyK{)KA7cRXtzcKnq8dBsH+*bSuDzjk`F|cx|f7A(ZjeDd?mXLv>@Efcf_BosMl%S4+8Cd*9d=J`$h>V z;3LgLLSWTR}BO#Ci|cUqZ)4;c9MabcU}-@Vxp} zkgYu>ny2_u@x6CUv0hu~r}HOAV%E1AY0~+WM}`O5@sVw!b=(e?7R5N+fanX_s^Sbt zQN`n0YHpGihJVmZ3A)(_px%^mlsfX}sxkcU{A27>@Q+#Dihpq3p-)fj!z`@X=>@17 zmXlzDF~O!GORbRA&N>M<%G#B#uFaD8lK*WthCge85&n||ss&^0gu#GKqG!Y>ly@sy zFv`^5TiTTUpq(F{V!n>MEk8;)9cbo2`!^^gwHL*+$y@9@xvQ;{;E~all-J+~-gnJ; z+^-yr>QdsBn&s9^!Yl7U=v`|)V~04`zt&C-p`kwF7WnOECb@UHSzKwFLwNh zn?`^s^fmmZ?#J}Dkz+L*)UV`-;09bj%P#LM%1s;%lMW50Xt~R*YMKV#3kL(!83V-W z#*UctnD+cXt9v7V@|zsVYDqx9$5SRI2a0*^44LMyn#Z8%$;fwigpGQ6vDj=w#n z0(&0p8_ibeZ3FyAXiL4*qHaoWOAykKI*@L8bGde5ZTPIFQmSC|RL|g_vuFRbt#4S{LTs5{CE*oaQgbtqT8uuNPmnpHnO$JNZNX11Ryp$Bqc(H;%yU z5_4!LDP8Js5)Qdm#>V;l)HQ$jwjt;|LQepAeX-(NpD@ou9IFt3AK#8lNEyC@s zTx@jJVl9tYh4SJ4SvU)$Pf)JfS2>hCU597Z*MAog1SZs7_v$qHf=m2+{xSZE_<4cP zq(=qKBM*YFNOArP&&PpJl3%SihCge89WfzID@hkG2e;7NF?MKW>4xCl>cP-9$tl_^ z+&m)D^4Rh|r-=Q8ySvoSYEw=Y&k_%(NcfrdGsRV;GT(jC<=|XO59_xCp+pTWBx)VU z9XW#CdS7xKK`ZE#rqb6mx<$N0BJy{t z=)7F-nv}?t1ZX{(OU#wT4Vcl&2~dpC3)=xQK_K{wNmYGQEOK7As@x|OhfJj8dY#7b zXDxtYg03ONW$=7(wRkMN$$kz333?DtVh`WZ)fzrTY@!>Bw%B$*p;e`-W9mK9yIjjMGO&vY zvrfCNkoJheEPm-M!Zj9;H_87>-y3sRULfA${mOgZ%yD$&QK|WLILWt?DZcTNUKo*l zyQ4dNlGVN%<=5%I$K{c~Bah?j)DsPl^bzBq)xD9wNfV!yTl*sLp=`M~E%7DguDP|P zHDu$T7lZ;urUTJK1c0?$tq>~-2dOK}NcJ^c8{3nTt4=Fy#j$A}FcN(}eg_Mb?4#|a zE%t8oe$G9@oE}|3`NF)~+?uqVpG#3<-k~kRQyuea^86#!yTb+835IXMclhSm9;!)n zQbQ$or;jr}i-6@O+$yWwuA`({P>v4;U-CEUw7MH`Dcfp%fGNWt$6*~8g{t{q`?LIe zDu+eZ8NX@l|G$9>%*BqdVTwMz{2S{s@KCTo;*7PVzE5h-c^tm4U5@E(yRJA@X{a4-xnj29DO`2P5^x0W z6QYI(?B#5i=DD8i$&O~iYw&hElsvFk%NA)L7*Zsknr~E|pu7bitXOU@R1d%&2A8Yv zduP*sD4Ani#yuH21OgIfC2DSZWIveUyBJVb&*9nhCj(!~e>@4bG5lEzOr&qd&v3xF z4i1`D!`l&G3m#(aHf=E-H%CC8SH|pkk=UQu{DN8 z=BV;P^>k1tF9GqPRRkRO3+_u>b9)t(MUSZ$RiB41D0Zo*)Ag}Kj>&W@bXS`Pt`}3S zr;^Ke@04h9m;L>#hDV-YZV|p6bCD} z;6C(THW!eOI97z~aDAZf8&`__S?4GD4`FT?sFLf!K+H;vLZyTaP!r}|wpREECn#-$ z&n!NV2g&VqZMEAO+R|$#8e9!80VDEe)^FjPa#ppLe9``h|Fz(ZuDa%={%P?R=n-MG zbPjGjehKXd?*{8s;@e~;3r8Lb84Oq!L|egL1m7UA;g4w>_z$3Z!)?1Zw19EblS5fg z?!dm|e`F<-wZ>JL`^;UmJW(0}Yuu}tA$YCL)_%*~h6{kFH6PHI8`MsaGNsOneFN(M zOwlu&aZgOz>B>!b+8MUL}HvG`o zIV#7+Wg~pA*q>CMDs5reE59Xet_llZDh@G@1$*$zBnxvk5ktWOgLz3LFoadF#REzEzyr z*3Yoj>SN`%XuASDnG3XY*pai0T5b>gUe71;rT7lYQL1YGx4Q1tqrvxrSK@~y7jaYk z{h(v;X5|ydH&JK(N8xNt%yI;$maC)d=&qXEgqvVo+FG?$DAEOLDe9hhq-KibDPMxC zt)FA9g(et3F#MMkZ6y9(3%H_A^5<|t)Fe!$HsyS3>?oTPecKKbDr$m^O8FKxhk$X} z;tLW!-N@=k{(QeB!H_xiMCOd>Fjy7q23-y>#q8&D>812;7MyFi*voV)Z%SXAZ`1p* z%V@WyYC<`sz5Sf;y2+OD!9kH##>KJco{7#r5?Ab!*+Y3R zQKwAN*H<97<<@jfUYm_m5g+LQ(UCk+9EN-ox zPn{AuE~>JicqeE(DKYAu$hVO%!FJAC=i0KXnh}vc%C`kf+Hh?wR9bz>^lhN84`3=y z=k@z5kBIxa576=%2L%JQUz;PiBHTedn%dj~SD&*VXFIhgDo*LgNoyIkl+G0rd1vtl z@CO4e{wX|0P8miGSAudQN9oT3Ot7MEMb_U=?GxZX3tQ{+ij7Y6%TUOrm4h`PR8KDRFkBC{iI=$-2hB zqPUE+HLQ*OU8Nd<|F#9bfUk&Y3JJVEyvy9hMv%mDsZ14RHU2G@k`m=%UG?fr_U+O~ zrtiGBA(RM6Y!#iUAVM1KGI1GktAB{18>1U5TXhtk&n{HdFsDlMBu%)*vh$h~x|bSA zjl^Fh5Woau4>!|#)>;R)|!92R}x2PV{dp*+}?LEx;k>**2@! zYjO!!)ZZsh+Y@^~HYWGuR8+^#*EE%Vt`g|ooaNe=aHwXme-Bh_#e-$!7xwl}CF23^ z8`VB9hF(g3DR$S)ppMo}tGgeFm`HdW{9X6}=yH@g?>aU+Pm@RUn~|kFo+Qh6nb%o9 zfIm*uUChif4_#Se%zxWj@13SY!icPQy(!`7eU&eTuQhhkd4oz4JLFvB4n zrJYVd>MGtBXvUl?z9C-Y4L0lv^iLIQMEqM8kh3OA)CwM472Y47O4t)H8?S=tJ~Mba zu_?SIT!g2~*um+N(Z0^bg(U+;vqY=;GzhZ!EVadBE57wf}4WPRQcl1NOMB_#a{n7!U5M;ybV<|>E*G3 zjsO4rTOR(`L}v-vRB!!K|9ga1J)h#d0TSJp2eKcc}tSvl-fRuGm2^c*5IDT@4x=FYyT~5e+-+86MRZU zfn7PVmSp z=U#*u-OnlYZ?QRvL~#K;%rd_iiJ3vf_zQV$z~1zyo+Sd1-QMtp+;9I5|4nsg`Wr#9y)wBDZ2>Q64IGaV^qw-W+_7kmIOnAb1(0e(2|5>ZTQ z8axB~F^59(+K%F;jH#?;v;&oAyxH72aJ1G#drkAOhY`;a(lv8&Ln@Z=w+QBm=EDmD zrwMP_Pf7x69tis7wEFT56(QaQp2E_^eKaw!oS9#oz=#7Z;Idb29ydHFu>nvbF57I=L6Dua%ESek7Xj*`iy*enD6#=ZK4o zGdWF*uL~A2ZF8z~s-Ri$yhIaS=_OP2iklT?+xzNy z^EL<|Jff;|W?GerNWi@21xROD5y@2iEIOLgGwN+s+*2m%PAT*aXPTv} zlyhrxz;ER~TD5K>o63u74zucLv#2dWqODBqRW1fA`8bP}`5m_p|2)%4Nom*__7AGv z$o7*3j+U%vmJ@DQUk*$cJR=P!US*8~i)7EtAKN=PPg4e9GBJ7dwdPEI?+PV^QGaB$ z6ESr~n4!`xzSeYksfaK@gO<*7xw+p*cACdSqYQ24K8#!^?y)>n^<(#NFP1DcbcPpm z`Go6ihxmR89a>5PqUmXp&dDrQSFb@=M!M6z= zDP15dJ0mg^cL9vYmzj4!NI&EmYyT=zB}r!~(T&Ps$`1$zTSe_+%W9f7ij96? zey&+U&_rr$HyNi@7E4RP(-yA&w)ZLPD6|ID*L+)2T6P@U87lRmoF%%{>e={*&{9&9 zh)1%Gc0fYl{Q+$oS$<=Ij`R{*njmV`5jz`aav@` zCBZ_^{E&`;;iFieQl{a)!9BOOBIw2YqVvi-V;*7>mWllR#8#0H^-<3abA53;xJfnD z)stkb2{Lzh_c_U-3xo&U0E4dPu%vS>)O+R!W?^6jaVc#r>oC{Zxc>JyzWgKE)hz2DPhvFjz3BAR%ecZ0W0aDTu{cppwr3{6ai z27|lo6h++Cy@cY~AlV;13B|y7ysgW3L9L@#BGyvFD_m+DV{ToJ;dGVSK(JJ`| z;%Sss>9D2`C<;yFv{@67kU9-49hT!)$=TE zC8MG!@ni6m+K3w~$dg%va$A)0^I3&|MC(SLpDj?pLD9LvkYSMTGs;@1iCyNfRW`AX z5Q3y^>sZCH&^tILsIG~!dxPH)p7Q3{`cgJant(5g#}m%7pM)1;+F;n8V9i(xIrzQ) z9{AWAQrpFG+8s&>v$@db>W%%XgaY2s-U1Ew5Zr|q3hL<}fO_TuTTakvU88;*JniXN zx?gmFISV|bSt7mRUGHt3o4dh*gZozEK zN48JYI~Yf!ZK__l0?<>jPm&|Hus+6TsOK_zVivK!U?S;R>h-}7!#fo_#W~Vhq1ODv zgr@`?=3wZF_Y;DNu{Us2QU&hSxP%N>@6r}_3g!wXFKCLlF6}4nDy@imz%1&WXa~?j z->G-g9(Z?IDwS8sUi+S43RDn$k9d#1nAxgyr09uav$b;GAJ@8(^JfdFB%jjGc$_sN zpCmRa(MGxqHx;*(Z1dC;p0Oi=2c%-C1$mM(DD7#v6gX+0RGPtpqmOxSo9FpI@-Gi> zp)WJF;=j#m9_?ujfnNlh5CqXFxDx?YMM;Rr`?{J)>qp4ZJgZy{lUieqy3H}bO zL~&K=4?LD1gtrg}Nr&?JfuD6~jQ_X=u7{sTGPKPFD}`RD2;3q6#9Peqaw}*~!#M06 z+I!mTBK^D?({Ax`%_?qnU}y=Ep5tmIU=e!47YsD%EAxP|YX&)Ulx!f=$6hHR@mqnN z80r3V;D^@Hnt1dgJd|gK-xsU>{BogX2F`8$k{}J%z+XX+UA2Mc)*g`_6&C^&$x&rJ zcYrokjnaK@>+ko3-^N7vJJpB0EvtvK3nF8pJDh{qQ?xebV?`y{m8If7g4v=;zdB>` zkL&+e=R`3+R-X*+@h-G4m#^)@Pdb!l;N3Pry1clgTaF zuxPjc9^npmhxr_{H+wt#sqL9fYU#_kK+nb-cz5-^4H^Dg`DyhP>3ib&hN0ko%{69y zSnK)3d{qB|^=RlTum@&xDv87Vp9U2akZYOK8(^Px?eTG|BOve-3crr@G0i=U}{ z?!D;k6ntU0m^`>^AG}JNMH&y1olp3y@E^K{`JabzjqAVOK;^|??ubkD#@GTlQ}GJ! z0(RGl0~=;AHIgxF`wE!{T=o9fUySRiN0ghByAmEtH2 zO(Ra$n&h)3dfZBAn*TNBuymhR<-%b_o`9g-^xOF<9~n z#v4$&QN%A6@PqBZ$+%A7YsPd!H?Rim500!8(}bi9@Ll~Rup6NO97-9lkPQ#~CNf(t;8okkNAJCgQ+e!@b+Qo?e=dIGn)#NV6nH6fiajF3m5 z`*{R5p((xG%!Kxp+I?h7aNw;O#ib@*emRco5tR-T|+J z_rWV*AI#I_M*kel*U7^UP?*-3!IJZ+}&`~P3O_{S4W3>h;LGZCY~s4yW+ zCB}gXV9XdJW;MoyS&Io{Ze#9X?qT+0KEvF=T*92hT*W+39u825eTo@^?T8(Q9g6({ z(-+$g3t%&_X6#ff5jztLV#Qb^b~$zhb`|zr>{)CJ+ym^F*xT5L*p|4qxXa)~aWRIA zIfhwOKSQiCNpY`A4kl`9ZMd$K7x?ysmh(Ch?&Eq?>6st?_Tdm-oxJG z-ecZV-cP-!y=T4Wy%)TfyjQ)~yf?jfym!41y^p<5z2A6Wcwc&7dz<*0`ci!@eeHZ5 zeVu)8`MUbL`MUdh`TF>J`uh0>_y+pYe1H$-%k&NQ4f756jr5K3jqzpsgaiYjUlb8d zi)KYLqZ6YOqWRHTQ7Foc@}uIYBC3jdqW)-gbYrwSSQlIvtPQRWE)H%DZVA2vaquOVTuW>JN!|UE5q%f)KMiRpiBF zbMgDd`-@K&qsc?andDLAT=FpTa59}do}5n>k}Jp}vWsjY8_5E)gsdSe$?M3=$UgFB z@^SJC@>cQ!@*?sX@_F)S_2 zC-y`38}=IecKdq!VfzvL9{Vc$R{LW6YJ0tXpZ%D9nfB2gXt0nCf6U zCOdjKSdO8NagI?Ao`dW7%RBE47(n3Y;}AN;jxvYDA$4qY=p0)dTOErWs~rm*aYu#2 zxgJ6<`?I{G?uoSmI5oTnXE z9UYy`oX;IE9QPdi9UnTOA4R?cC-3)OpDHf%9GGHRodIPUlu%nCsTr-D&os92(%TA`>gRxGPnS>dh-ROl<#SHvqSDt1}e zX~mw3OBJsxP_E`Kw5z*og6juHE9L~s6v|jDkwT>uQ#uk5bbvmDKAK(#m%;V$d+;In zGx!|*5Js@Sfpgh&*i+f-*x#_r*#>qMdn;SQUdx`x7P8l~-)Dcte$Kwee$C#;zQR7n z#&Zs^ceAH+rf}MF`fvtv+Hul3X&eT}$&qlPjqAVOKoa5Z& ze9mdj1-QewZJDQ-z0{qVOu`ewE5cpE9m4m7x1jD&3uq36hX@b^k)Wwi8bpRD&>(0e zWQW3#7Al80PzG26_+r06GF)fIfpR zL93wE&@$*UbR4<@^&x%%4J5vTx)Prz4|N+v>`3fPL=iKId}4sOjW~-aAxTAxVQsKMy zL6xMJ3@bsF^e<^q(x;@jB(G$2$;1+I39Up{Qc@x+nNu>mL|CFKv6s}AEG$v_wwLTL zQ8KkmJJZdqWcrv9W-T+$T*+L=+{S#L342PJ>l7OmTNT?CI}{%&_9%`ijw((m?kFB9 z?kc`gJX3tDNKrmjG*f<;JTs2_m~fu&zZegV_4~|KCF(c_AE4OFslt~5-W|RW9eB&mVuSe`m?$> z@+Z$~X3b?qSuxf+);0y~o7pjwUsrnG`+N2>7deQtR|%$ zN(YzDE>)MVEe)5hDBWIqy7cSP%gim&yOH~mCy}R-uOr_?UPgY1G>fK2TSQw$+eF(& z+eO<)J4WA%c8hk8_K5b1_Kpq#Cn>tYW5ke{E}ku3Dy|R*#bL2eED#IDDzQfF60Z`U z5T6#W6MrjyE`B0DC*CZ+CO#|vPJCbdP`pX}srZrjho4SyZ}j4yu|Tc_C21#_Dw!#1 zDM^*|l5~&^mJ~^bNybQeOE40=1d@!Bgd{RaLb6E0kSvgdC3Fc(Vv?{Wy`>*Z_Dilv zI!Hf|T$6N`-j-aJT#$5^u938pu9pm!N~NGwB;71!N?lTd6q1gV0@7*HtI|!<8tFCZ zP}%3w<UDEfY+ok8ETcyXP0qI_8y%d(skQK;~vTm{$(&4gf*&LZlmMLp3L(3{< zewk0ElPP2-nL&24asAJqar{rb2W2Z{J7w?4_R6ly9?GuBuE`$BddmmN`^aeV0y4~uzj$5FfBMHm>nD%93Gq�Bv|Y)}v^4#GiNa3@a{oEx+UJwZp%8^kin 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∓w(G}xi${{r3^f7>$WJavnvxm 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 z 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

N4f1uYH1{g*e5)2y+ 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

yn7iv&e8}>nZ>F*f_sn!yU4N;p!t9 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%0A}dP3Ivm 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%0AHnAt%_1btJbL2s$xK2ui5}~6Z9>rt*ULn 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ϔ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

pRl6NlE2Qrhy6jWX*Og2cFI~f=XrVz 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%0D0PZ* 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
6zAJW+DiP+B!mrs3}ngA)2RA zgrJL2MQ!1EcC;^Q-7sb9prp>XtHT_cD~S)S!*#7bRMeg#5fU{eeEU|^USir+aiF61 zF2RtfeMTZAYJZYQO@bNB@B(CJL`{h-2q$U@#_86CirT<%W>(aeBvBCiI>QQ)FL$NZO1LYv5TRFU*F)5j7g$G>N{HG?yQ4FRs7)eOLugLaJ|UQ1 z3Lr#nksUEwzE|^!06&#(yQvjye6P0Lh1O|Kj6h%(?u2zJ0;5Dl2nfu(ux#1d6#FgbdqFF&3S8DrRWFs#Nj1!gpc4l3as0o2kwgh47;u9{E zCa@98F|?jsmZ6v{wU3Bq1cj(|?*h{zYE6WSnu28+4N-d%ff!NqiH4}HbFob*lE!cq zwJiy16LO+fh)i1F@OEEhN#_3E4tj=_iC+#^a=C5T8J>c0#|AW;k|uDcF{$dN6`1?KIjZ0Y8R7=tc2Ah zS8DS0)WKKVTIU6X9-X}hmYC>~5>+9fM~CD<$OVrQk(EK9@$M*usDKg~A<*sC24T9L zPq=Q^1ey%Y1Nax*VB^tgZZzLT$P~o9)1>!^Rs@A6eXh|=z0n$qtO5d>^rA-N6E2!2 zuo2BYG~%Lhx>RP}p7wOfJZJeRiH!I~nC1cec?8P>qGqOE3Px51ht!)wE}-SBv5$z> z1f3gCowKLvl215Y(g;_>Xz0=|7;SaQBO1EYJI5wllHsaL6A9}67hQ_jA3`5W%Iz)4 z&pfy=@)IK6H(+=0ut7SvB0=(X(9a~Q;=dLjcg@}?sPtnc@~fj2pdY`w7yI!N*V>4y zLTEpJ_<9R!#2~CL%_rga)$IFw~EaClTt$O8E9| zKQ3Nl9i+v9_TwuF>eg`C-9*CA&b)~2YGzjyGw8<~p?antD^UUAROT(3sry;IOVH2C z^x_{$r0{Aq*NYX*0yJuCC#%FcDFBuei8Ih3%|r0FlW^8`!pdR7PS`A_n7+MKb^YrB&nLzQ*=dCV)o5;&1BaEh~6_}U-lj)ibA04?E}Kx|GEAa zdqfq4yDg?*WG#S=`#;ZdY#OlbJ)&iE=rboMv~2tR;Zw9siHZ==vVZIcLZVcnE(H4W z1R>iC~ z++Ey&84%F2%QTt^Byu2JG)-V5ni(AHqH$VQW8EIpr81lUBKg-OO5#_wY$3tqIsjG6 z6wC>Tdi?{XH}z7Y48ldIU}W8dGG^ zGUC4$ANT8lScal2O4LD!t}F$@^!zEe+j8XA1EFo|;X5s;5jS*&gs&^lBVMa3B>lc` zd@OdiHCGfLsw+znbUhNi%be%0MPqYmI|I&->WUJ+ z558NR-t&?rG{x-lqzAfP-URB6x3i%o1um7wHOh>`u$$!?Ol=4d zeSO)3u|1@(D^U;veSOeDAf&G=Q5FI{>JMm@>FY|=g+QNLAR;EeH}eVi-FXvez7I2f zeda?p9$li1zTQhFy%Eg2zWxHyyrAgoXG@r(GOIsq4V8sJUq2LtiN+^fG)-V5nrmsq zMdSKg8zUI)>k5_yM7;)~^d>@|a1l0vjR>Q2|E6BNMmdOF zWGWosJmFfITd9o_X(8bGT=nb|&T|uJJezBji)lS4M%*>ZD@2QeLQB$zASuz3CPKAD z!N?{U4K0aaw9yiuXlTh_G@g~=swKnkwH46bt}H&Z>uy2N^+nZ^=_Ep0qJ(eXYDwWf>!2nMR7=h!s9VEjH=Bgchh%58 z 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%0A2wR$R!b|;4BoP;}Mrr^KXJYb!KK2pxQT!u1|qc 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�K%wWx_u-)Tp45E=8mj4GG$kH|piXcH!T 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б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ńVe9TZuwqc>TOVseX(mpe)l$59kImgP{`)h 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

Charset Detection, for Everyone 👋

+ +

+ The Real First Universal Charset Detector
+
+ + + + Download Count Total + + + + +

+

+ Featured Packages
+ + Static Badge + + + Static Badge + +

+

+ In other language (unofficial port - by the community)
+ + Static Badge + +

+ +> A library that helps you read text from an unknown charset encoding.
Motivated by `chardet`, +> I'm trying to resolve the issue by taking a new approach. +> All IANA character set names for which the Python core library provides codecs are supported. + +

+ >>>>> 👉 Try Me Online Now, Then Adopt Me 👈 <<<<< +

+ +This project offers you an alternative to **Universal Charset Encoding Detector**, also known as **Chardet**. + +| Feature | [Chardet](https://github.com/chardet/chardet) | Charset Normalizer | [cChardet](https://github.com/PyYoshi/cChardet) | +|--------------------------------------------------|:---------------------------------------------:|:--------------------------------------------------------------------------------------------------:|:-----------------------------------------------:| +| `Fast` | ❌ | ✅ | ✅ | +| `Universal**` | ❌ | ✅ | ❌ | +| `Reliable` **without** distinguishable standards | ❌ | ✅ | ✅ | +| `Reliable` **with** distinguishable standards | ✅ | ✅ | ✅ | +| `License` | LGPL-2.1
_restrictive_ | MIT | MPL-1.1
_restrictive_ | +| `Native Python` | ✅ | ✅ | ❌ | +| `Detect spoken language` | ❌ | ✅ | N/A | +| `UnicodeDecodeError Safety` | ❌ | ✅ | ❌ | +| `Whl Size (min)` | 193.6 kB | 42 kB | ~200 kB | +| `Supported Encoding` | 33 | 🎉 [99](https://charset-normalizer.readthedocs.io/en/latest/user/support.html#supported-encodings) | 40 | + +

+Reading Normalized TextCat Reading Text +

+ +*\*\* : They are clearly using specific code for a specific encoding even if covering most of used one*
+Did you got there because of the logs? See [https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html](https://charset-normalizer.readthedocs.io/en/latest/user/miscellaneous.html) + +## ⚡ Performance + +This package offer better performance than its counterpart Chardet. Here are some numbers. + +| Package | Accuracy | Mean per file (ms) | File per sec (est) | +|-----------------------------------------------|:--------:|:------------------:|:------------------:| +| [chardet](https://github.com/chardet/chardet) | 86 % | 200 ms | 5 file/sec | +| charset-normalizer | **98 %** | **10 ms** | 100 file/sec | + +| Package | 99th percentile | 95th percentile | 50th percentile | +|-----------------------------------------------|:---------------:|:---------------:|:---------------:| +| [chardet](https://github.com/chardet/chardet) | 1200 ms | 287 ms | 23 ms | +| charset-normalizer | 100 ms | 50 ms | 5 ms | + +Chardet's performance on larger file (1MB+) are very poor. Expect huge difference on large payload. + +> Stats are generated using 400+ files using default parameters. More details on used files, see GHA workflows. +> And yes, these results might change at any time. The dataset can be updated to include more files. +> The actual delays heavily depends on your CPU capabilities. The factors should remain the same. +> Keep in mind that the stats are generous and that Chardet accuracy vs our is measured using Chardet initial capability +> (eg. Supported Encoding) Challenge-them if you want. + +## ✨ Installation + +Using pip: + +```sh +pip install charset-normalizer -U +``` + +## 🚀 Basic Usage + +### CLI +This package comes with a CLI. + +``` +usage: normalizer [-h] [-v] [-a] [-n] [-m] [-r] [-f] [-t THRESHOLD] + file [file ...] + +The Real First Universal Charset Detector. Discover originating encoding used +on text file. Normalize text to unicode. + +positional arguments: + files File(s) to be analysed + +optional arguments: + -h, --help show this help message and exit + -v, --verbose Display complementary information about file if any. + Stdout will contain logs about the detection process. + -a, --with-alternative + Output complementary possibilities if any. Top-level + JSON WILL be a list. + -n, --normalize Permit to normalize input file. If not set, program + does not write anything. + -m, --minimal Only output the charset detected to STDOUT. Disabling + JSON output. + -r, --replace Replace file when trying to normalize it instead of + creating a new one. + -f, --force Replace file without asking if you are sure, use this + flag with caution. + -t THRESHOLD, --threshold THRESHOLD + Define a custom maximum amount of chaos allowed in + decoded content. 0. <= chaos <= 1. + --version Show version information and exit. +``` + +```bash +normalizer ./data/sample.1.fr.srt +``` + +or + +```bash +python -m charset_normalizer ./data/sample.1.fr.srt +``` + +🎉 Since version 1.4.0 the CLI produce easily usable stdout result in JSON format. + +```json +{ + "path": "/home/default/projects/charset_normalizer/data/sample.1.fr.srt", + "encoding": "cp1252", + "encoding_aliases": [ + "1252", + "windows_1252" + ], + "alternative_encodings": [ + "cp1254", + "cp1256", + "cp1258", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + "mbcs" + ], + "language": "French", + "alphabets": [ + "Basic Latin", + "Latin-1 Supplement" + ], + "has_sig_or_bom": false, + "chaos": 0.149, + "coherence": 97.152, + "unicode_path": null, + "is_preferred": true +} +``` + +### Python +*Just print out normalized text* +```python +from charset_normalizer import from_path + +results = from_path('./my_subtitle.srt') + +print(str(results.best())) +``` + +*Upgrade your code without effort* +```python +from charset_normalizer import detect +``` + +The above code will behave the same as **chardet**. We ensure that we offer the best (reasonable) BC result possible. + +See the docs for advanced usage : [readthedocs.io](https://charset-normalizer.readthedocs.io/en/latest/) + +## 😇 Why + +When I started using Chardet, I noticed that it was not suited to my expectations, and I wanted to propose a +reliable alternative using a completely different method. Also! I never back down on a good challenge! + +I **don't care** about the **originating charset** encoding, because **two different tables** can +produce **two identical rendered string.** +What I want is to get readable text, the best I can. + +In a way, **I'm brute forcing text decoding.** How cool is that ? 😎 + +Don't confuse package **ftfy** with charset-normalizer or chardet. ftfy goal is to repair unicode string whereas charset-normalizer to convert raw file in unknown encoding to unicode. + +## 🍰 How + + - Discard all charset encoding table that could not fit the binary content. + - Measure noise, or the mess once opened (by chunks) with a corresponding charset encoding. + - Extract matches with the lowest mess detected. + - Additionally, we measure coherence / probe for a language. + +**Wait a minute**, what is noise/mess and coherence according to **YOU ?** + +*Noise :* I opened hundred of text files, **written by humans**, with the wrong encoding table. **I observed**, then +**I established** some ground rules about **what is obvious** when **it seems like** a mess. + I know that my interpretation of what is noise is probably incomplete, feel free to contribute in order to + improve or rewrite it. + +*Coherence :* For each language there is on earth, we have computed ranked letter appearance occurrences (the best we can). So I thought +that intel is worth something here. So I use those records against decoded text to check if I can detect intelligent design. + +## ⚡ Known limitations + + - Language detection is unreliable when text contains two or more languages sharing identical letters. (eg. HTML (english tags) + Turkish content (Sharing Latin characters)) + - Every charset detector heavily depends on sufficient content. In common cases, do not bother run detection on very tiny content. + +## ⚠️ About Python EOLs + +**If you are running:** + +- Python >=2.7,<3.5: Unsupported +- Python 3.5: charset-normalizer < 2.1 +- Python 3.6: charset-normalizer < 3.1 +- Python 3.7: charset-normalizer < 4.0 + +Upgrade your Python interpreter as soon as possible. + +## 👤 Contributing + +Contributions, issues and feature requests are very much welcome.
+Feel free to check [issues page](https://github.com/ousret/charset_normalizer/issues) if you want to contribute. + +## 📝 License + +Copyright © [Ahmed TAHRI @Ousret](https://github.com/Ousret).
+This project is [MIT](https://github.com/Ousret/charset_normalizer/blob/master/LICENSE) licensed. + +Characters frequencies used in this project © 2012 [Denny Vrandečić](http://simia.net/letters/) + +## 💼 For Enterprise + +Professional support for charset-normalizer is available as part of the [Tidelift +Subscription][1]. Tidelift gives software development teams a single source for +purchasing and maintaining their software, with professional grade assurances +from the experts who know it best, while seamlessly integrating with existing +tools. + +[1]: https://tidelift.com/subscription/pkg/pypi-charset-normalizer?utm_source=pypi-charset-normalizer&utm_medium=readme + +# Changelog +All notable changes to charset-normalizer will be documented in this file. This project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). + +## [3.3.2](https://github.com/Ousret/charset_normalizer/compare/3.3.1...3.3.2) (2023-10-31) + +### Fixed +- Unintentional memory usage regression when using large payload that match several encoding (#376) +- Regression on some detection case showcased in the documentation (#371) + +### Added +- Noise (md) probe that identify malformed arabic representation due to the presence of letters in isolated form (credit to my wife) + +## [3.3.1](https://github.com/Ousret/charset_normalizer/compare/3.3.0...3.3.1) (2023-10-22) + +### Changed +- Optional mypyc compilation upgraded to version 1.6.1 for Python >= 3.8 +- Improved the general detection reliability based on reports from the community + +## [3.3.0](https://github.com/Ousret/charset_normalizer/compare/3.2.0...3.3.0) (2023-09-30) + +### Added +- Allow to execute the CLI (e.g. normalizer) through `python -m charset_normalizer.cli` or `python -m charset_normalizer` +- Support for 9 forgotten encoding that are supported by Python but unlisted in `encoding.aliases` as they have no alias (#323) + +### Removed +- (internal) Redundant utils.is_ascii function and unused function is_private_use_only +- (internal) charset_normalizer.assets is moved inside charset_normalizer.constant + +### Changed +- (internal) Unicode code blocks in constants are updated using the latest v15.0.0 definition to improve detection +- Optional mypyc compilation upgraded to version 1.5.1 for Python >= 3.8 + +### Fixed +- Unable to properly sort CharsetMatch when both chaos/noise and coherence were close due to an unreachable condition in \_\_lt\_\_ (#350) + +## [3.2.0](https://github.com/Ousret/charset_normalizer/compare/3.1.0...3.2.0) (2023-06-07) + +### Changed +- Typehint for function `from_path` no longer enforce `PathLike` as its first argument +- Minor improvement over the global detection reliability + +### Added +- Introduce function `is_binary` that relies on main capabilities, and optimized to detect binaries +- Propagate `enable_fallback` argument throughout `from_bytes`, `from_path`, and `from_fp` that allow a deeper control over the detection (default True) +- Explicit support for Python 3.12 + +### Fixed +- Edge case detection failure where a file would contain 'very-long' camel cased word (Issue #289) + +## [3.1.0](https://github.com/Ousret/charset_normalizer/compare/3.0.1...3.1.0) (2023-03-06) + +### Added +- Argument `should_rename_legacy` for legacy function `detect` and disregard any new arguments without errors (PR #262) + +### Removed +- Support for Python 3.6 (PR #260) + +### Changed +- Optional speedup provided by mypy/c 1.0.1 + +## [3.0.1](https://github.com/Ousret/charset_normalizer/compare/3.0.0...3.0.1) (2022-11-18) + +### Fixed +- Multi-bytes cutter/chunk generator did not always cut correctly (PR #233) + +### Changed +- Speedup provided by mypy/c 0.990 on Python >= 3.7 + +## [3.0.0](https://github.com/Ousret/charset_normalizer/compare/2.1.1...3.0.0) (2022-10-20) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it +- Sphinx warnings when generating the documentation + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [3.0.0rc1](https://github.com/Ousret/charset_normalizer/compare/3.0.0b2...3.0.0rc1) (2022-10-18) + +### Added +- Extend the capability of explain=True when cp_isolation contains at most two entries (min one), will log in details of the Mess-detector results +- Support for alternative language frequency set in charset_normalizer.assets.FREQUENCIES +- Add parameter `language_threshold` in `from_bytes`, `from_path` and `from_fp` to adjust the minimum expected coherence ratio + +### Changed +- Build with static metadata using 'build' frontend +- Make the language detection stricter + +### Fixed +- CLI with opt --normalize fail when using full path for files +- TooManyAccentuatedPlugin induce false positive on the mess detection when too few alpha character have been fed to it + +### Removed +- Coherence detector no longer return 'Simple English' instead return 'English' +- Coherence detector no longer return 'Classical Chinese' instead return 'Chinese' + +## [3.0.0b2](https://github.com/Ousret/charset_normalizer/compare/3.0.0b1...3.0.0b2) (2022-08-21) + +### Added +- `normalizer --version` now specify if current version provide extra speedup (meaning mypyc compilation whl) + +### Removed +- Breaking: Method `first()` and `best()` from CharsetMatch +- UTF-7 will no longer appear as "detected" without a recognized SIG/mark (is unreliable/conflict with ASCII) + +### Fixed +- Sphinx warnings when generating the documentation + +## [3.0.0b1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...3.0.0b1) (2022-08-15) + +### Changed +- Optional: Module `md.py` can be compiled using Mypyc to provide an extra speedup up to 4x faster than v2.1 + +### Removed +- Breaking: Class aliases CharsetDetector, CharsetDoctor, CharsetNormalizerMatch and CharsetNormalizerMatches +- Breaking: Top-level function `normalize` +- Breaking: Properties `chaos_secondary_pass`, `coherence_non_latin` and `w_counter` from CharsetMatch +- Support for the backport `unicodedata2` + +## [2.1.1](https://github.com/Ousret/charset_normalizer/compare/2.1.0...2.1.1) (2022-08-19) + +### Deprecated +- Function `normalize` scheduled for removal in 3.0 + +### Changed +- Removed useless call to decode in fn is_unprintable (#206) + +### Fixed +- Third-party library (i18n xgettext) crashing not recognizing utf_8 (PEP 263) with underscore from [@aleksandernovikov](https://github.com/aleksandernovikov) (#204) + +## [2.1.0](https://github.com/Ousret/charset_normalizer/compare/2.0.12...2.1.0) (2022-06-19) + +### Added +- Output the Unicode table version when running the CLI with `--version` (PR #194) + +### Changed +- Re-use decoded buffer for single byte character sets from [@nijel](https://github.com/nijel) (PR #175) +- Fixing some performance bottlenecks from [@deedy5](https://github.com/deedy5) (PR #183) + +### Fixed +- Workaround potential bug in cpython with Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space (PR #175) +- CLI default threshold aligned with the API threshold from [@oleksandr-kuzmenko](https://github.com/oleksandr-kuzmenko) (PR #181) + +### Removed +- Support for Python 3.5 (PR #192) + +### Deprecated +- Use of backport unicodedata from `unicodedata2` as Python is quickly catching up, scheduled for removal in 3.0 (PR #194) + +## [2.0.12](https://github.com/Ousret/charset_normalizer/compare/2.0.11...2.0.12) (2022-02-12) + +### Fixed +- ASCII miss-detection on rare cases (PR #170) + +## [2.0.11](https://github.com/Ousret/charset_normalizer/compare/2.0.10...2.0.11) (2022-01-30) + +### Added +- Explicit support for Python 3.11 (PR #164) + +### Changed +- The logging behavior have been completely reviewed, now using only TRACE and DEBUG levels (PR #163 #165) + +## [2.0.10](https://github.com/Ousret/charset_normalizer/compare/2.0.9...2.0.10) (2022-01-04) + +### Fixed +- Fallback match entries might lead to UnicodeDecodeError for large bytes sequence (PR #154) + +### Changed +- Skipping the language-detection (CD) on ASCII (PR #155) + +## [2.0.9](https://github.com/Ousret/charset_normalizer/compare/2.0.8...2.0.9) (2021-12-03) + +### Changed +- Moderating the logging impact (since 2.0.8) for specific environments (PR #147) + +### Fixed +- Wrong logging level applied when setting kwarg `explain` to True (PR #146) + +## [2.0.8](https://github.com/Ousret/charset_normalizer/compare/2.0.7...2.0.8) (2021-11-24) +### Changed +- Improvement over Vietnamese detection (PR #126) +- MD improvement on trailing data and long foreign (non-pure latin) data (PR #124) +- Efficiency improvements in cd/alphabet_languages from [@adbar](https://github.com/adbar) (PR #122) +- call sum() without an intermediary list following PEP 289 recommendations from [@adbar](https://github.com/adbar) (PR #129) +- Code style as refactored by Sourcery-AI (PR #131) +- Minor adjustment on the MD around european words (PR #133) +- Remove and replace SRTs from assets / tests (PR #139) +- Initialize the library logger with a `NullHandler` by default from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Setting kwarg `explain` to True will add provisionally (bounded to function lifespan) a specific stream handler (PR #135) + +### Fixed +- Fix large (misleading) sequence giving UnicodeDecodeError (PR #137) +- Avoid using too insignificant chunk (PR #137) + +### Added +- Add and expose function `set_logging_handler` to configure a specific StreamHandler from [@nmaynes](https://github.com/nmaynes) (PR #135) +- Add `CHANGELOG.md` entries, format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) (PR #141) + +## [2.0.7](https://github.com/Ousret/charset_normalizer/compare/2.0.6...2.0.7) (2021-10-11) +### Added +- Add support for Kazakh (Cyrillic) language detection (PR #109) + +### Changed +- Further, improve inferring the language from a given single-byte code page (PR #112) +- Vainly trying to leverage PEP263 when PEP3120 is not supported (PR #116) +- Refactoring for potential performance improvements in loops from [@adbar](https://github.com/adbar) (PR #113) +- Various detection improvement (MD+CD) (PR #117) + +### Removed +- Remove redundant logging entry about detected language(s) (PR #115) + +### Fixed +- Fix a minor inconsistency between Python 3.5 and other versions regarding language detection (PR #117 #102) + +## [2.0.6](https://github.com/Ousret/charset_normalizer/compare/2.0.5...2.0.6) (2021-09-18) +### Fixed +- Unforeseen regression with the loss of the backward-compatibility with some older minor of Python 3.5.x (PR #100) +- Fix CLI crash when using --minimal output in certain cases (PR #103) + +### Changed +- Minor improvement to the detection efficiency (less than 1%) (PR #106 #101) + +## [2.0.5](https://github.com/Ousret/charset_normalizer/compare/2.0.4...2.0.5) (2021-09-14) +### Changed +- The project now comply with: flake8, mypy, isort and black to ensure a better overall quality (PR #81) +- The BC-support with v1.x was improved, the old staticmethods are restored (PR #82) +- The Unicode detection is slightly improved (PR #93) +- Add syntax sugar \_\_bool\_\_ for results CharsetMatches list-container (PR #91) + +### Removed +- The project no longer raise warning on tiny content given for detection, will be simply logged as warning instead (PR #92) + +### Fixed +- In some rare case, the chunks extractor could cut in the middle of a multi-byte character and could mislead the mess detection (PR #95) +- Some rare 'space' characters could trip up the UnprintablePlugin/Mess detection (PR #96) +- The MANIFEST.in was not exhaustive (PR #78) + +## [2.0.4](https://github.com/Ousret/charset_normalizer/compare/2.0.3...2.0.4) (2021-07-30) +### Fixed +- The CLI no longer raise an unexpected exception when no encoding has been found (PR #70) +- Fix accessing the 'alphabets' property when the payload contains surrogate characters (PR #68) +- The logger could mislead (explain=True) on detected languages and the impact of one MBCS match (PR #72) +- Submatch factoring could be wrong in rare edge cases (PR #72) +- Multiple files given to the CLI were ignored when publishing results to STDOUT. (After the first path) (PR #72) +- Fix line endings from CRLF to LF for certain project files (PR #67) + +### Changed +- Adjust the MD to lower the sensitivity, thus improving the global detection reliability (PR #69 #76) +- Allow fallback on specified encoding if any (PR #71) + +## [2.0.3](https://github.com/Ousret/charset_normalizer/compare/2.0.2...2.0.3) (2021-07-16) +### Changed +- Part of the detection mechanism has been improved to be less sensitive, resulting in more accurate detection results. Especially ASCII. (PR #63) +- According to the community wishes, the detection will fall back on ASCII or UTF-8 in a last-resort case. (PR #64) + +## [2.0.2](https://github.com/Ousret/charset_normalizer/compare/2.0.1...2.0.2) (2021-07-15) +### Fixed +- Empty/Too small JSON payload miss-detection fixed. Report from [@tseaver](https://github.com/tseaver) (PR #59) + +### Changed +- Don't inject unicodedata2 into sys.modules from [@akx](https://github.com/akx) (PR #57) + +## [2.0.1](https://github.com/Ousret/charset_normalizer/compare/2.0.0...2.0.1) (2021-07-13) +### Fixed +- Make it work where there isn't a filesystem available, dropping assets frequencies.json. Report from [@sethmlarson](https://github.com/sethmlarson). (PR #55) +- Using explain=False permanently disable the verbose output in the current runtime (PR #47) +- One log entry (language target preemptive) was not show in logs when using explain=True (PR #47) +- Fix undesired exception (ValueError) on getitem of instance CharsetMatches (PR #52) + +### Changed +- Public function normalize default args values were not aligned with from_bytes (PR #53) + +### Added +- You may now use charset aliases in cp_isolation and cp_exclusion arguments (PR #47) + +## [2.0.0](https://github.com/Ousret/charset_normalizer/compare/1.4.1...2.0.0) (2021-07-02) +### Changed +- 4x to 5 times faster than the previous 1.4.0 release. At least 2x faster than Chardet. +- Accent has been made on UTF-8 detection, should perform rather instantaneous. +- The backward compatibility with Chardet has been greatly improved. The legacy detect function returns an identical charset name whenever possible. +- The detection mechanism has been slightly improved, now Turkish content is detected correctly (most of the time) +- The program has been rewritten to ease the readability and maintainability. (+Using static typing)+ +- utf_7 detection has been reinstated. + +### Removed +- This package no longer require anything when used with Python 3.5 (Dropped cached_property) +- Removed support for these languages: Catalan, Esperanto, Kazakh, Baque, Volapük, Azeri, Galician, Nynorsk, Macedonian, and Serbocroatian. +- The exception hook on UnicodeDecodeError has been removed. + +### Deprecated +- Methods coherence_non_latin, w_counter, chaos_secondary_pass of the class CharsetMatch are now deprecated and scheduled for removal in v3.0 + +### Fixed +- The CLI output used the relative path of the file(s). Should be absolute. + +## [1.4.1](https://github.com/Ousret/charset_normalizer/compare/1.4.0...1.4.1) (2021-05-28) +### Fixed +- Logger configuration/usage no longer conflict with others (PR #44) + +## [1.4.0](https://github.com/Ousret/charset_normalizer/compare/1.3.9...1.4.0) (2021-05-21) +### Removed +- Using standard logging instead of using the package loguru. +- Dropping nose test framework in favor of the maintained pytest. +- Choose to not use dragonmapper package to help with gibberish Chinese/CJK text. +- Require cached_property only for Python 3.5 due to constraint. Dropping for every other interpreter version. +- Stop support for UTF-7 that does not contain a SIG. +- Dropping PrettyTable, replaced with pure JSON output in CLI. + +### Fixed +- BOM marker in a CharsetNormalizerMatch instance could be False in rare cases even if obviously present. Due to the sub-match factoring process. +- Not searching properly for the BOM when trying utf32/16 parent codec. + +### Changed +- Improving the package final size by compressing frequencies.json. +- Huge improvement over the larges payload. + +### Added +- CLI now produces JSON consumable output. +- Return ASCII if given sequences fit. Given reasonable confidence. + +## [1.3.9](https://github.com/Ousret/charset_normalizer/compare/1.3.8...1.3.9) (2021-05-13) + +### Fixed +- In some very rare cases, you may end up getting encode/decode errors due to a bad bytes payload (PR #40) + +## [1.3.8](https://github.com/Ousret/charset_normalizer/compare/1.3.7...1.3.8) (2021-05-12) + +### Fixed +- Empty given payload for detection may cause an exception if trying to access the `alphabets` property. (PR #39) + +## [1.3.7](https://github.com/Ousret/charset_normalizer/compare/1.3.6...1.3.7) (2021-05-12) + +### Fixed +- The legacy detect function should return UTF-8-SIG if sig is present in the payload. (PR #38) + +## [1.3.6](https://github.com/Ousret/charset_normalizer/compare/1.3.5...1.3.6) (2021-02-09) + +### Changed +- Amend the previous release to allow prettytable 2.0 (PR #35) + +## [1.3.5](https://github.com/Ousret/charset_normalizer/compare/1.3.4...1.3.5) (2021-02-08) + +### Fixed +- Fix error while using the package with a python pre-release interpreter (PR #33) + +### Changed +- Dependencies refactoring, constraints revised. + +### Added +- Add python 3.9 and 3.10 to the supported interpreters + +MIT License + +Copyright (c) 2019 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/RECORD b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/RECORD new file mode 100644 index 0000000..2d29cc7 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/RECORD @@ -0,0 +1,36 @@ +../../../bin/normalizer,sha256=IVMExHM8kCx7p1_QlEzEijpIvXFpAKHP9_HPcGpSR0k,262 +charset_normalizer-3.3.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +charset_normalizer-3.3.2.dist-info/LICENSE,sha256=6zGgxaT7Cbik4yBV0lweX5w1iidS_vPNcgIT0cz-4kE,1070 +charset_normalizer-3.3.2.dist-info/METADATA,sha256=cfLhl5A6SI-F0oclm8w8ux9wshL1nipdeCdVnYb4AaA,33550 +charset_normalizer-3.3.2.dist-info/RECORD,, +charset_normalizer-3.3.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +charset_normalizer-3.3.2.dist-info/WHEEL,sha256=4ZiCdXIWMxJyEClivrQv1QAHZpQh8kVYU92_ZAVwaok,152 +charset_normalizer-3.3.2.dist-info/entry_points.txt,sha256=ADSTKrkXZ3hhdOVFi6DcUEHQRS0xfxDIE_pEz4wLIXA,65 +charset_normalizer-3.3.2.dist-info/top_level.txt,sha256=7ASyzePr8_xuZWJsnqJjIBtyV8vhEo0wBCv1MPRRi3Q,19 +charset_normalizer/__init__.py,sha256=UzI3xC8PhmcLRMzSgPb6minTmRq0kWznnCBJ8ZCc2XI,1577 +charset_normalizer/__main__.py,sha256=JxY8bleaENOFlLRb9HfoeZCzAMnn2A1oGR5Xm2eyqg0,73 +charset_normalizer/__pycache__/__init__.cpython-312.pyc,, +charset_normalizer/__pycache__/__main__.cpython-312.pyc,, +charset_normalizer/__pycache__/api.cpython-312.pyc,, +charset_normalizer/__pycache__/cd.cpython-312.pyc,, +charset_normalizer/__pycache__/constant.cpython-312.pyc,, +charset_normalizer/__pycache__/legacy.cpython-312.pyc,, +charset_normalizer/__pycache__/md.cpython-312.pyc,, +charset_normalizer/__pycache__/models.cpython-312.pyc,, +charset_normalizer/__pycache__/utils.cpython-312.pyc,, +charset_normalizer/__pycache__/version.cpython-312.pyc,, +charset_normalizer/api.py,sha256=WOlWjy6wT8SeMYFpaGbXZFN1TMXa-s8vZYfkL4G29iQ,21097 +charset_normalizer/cd.py,sha256=xwZliZcTQFA3jU0c00PRiu9MNxXTFxQkFLWmMW24ZzI,12560 +charset_normalizer/cli/__init__.py,sha256=D5ERp8P62llm2FuoMzydZ7d9rs8cvvLXqE-1_6oViPc,100 +charset_normalizer/cli/__main__.py,sha256=2F-xURZJzo063Ye-2RLJ2wcmURpbKeAzKwpiws65dAs,9744 +charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc,, +charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc,, +charset_normalizer/constant.py,sha256=p0IsOVcEbPWYPOdWhnhRbjK1YVBy6fs05C5vKC-zoxU,40481 +charset_normalizer/legacy.py,sha256=T-QuVMsMeDiQEk8WSszMrzVJg_14AMeSkmHdRYhdl1k,2071 +charset_normalizer/md.cpython-312-x86_64-linux-gnu.so,sha256=W654QTU3QZI6eWJ0fanScAr0_O6sL0I61fyRSdC-39Y,16064 +charset_normalizer/md.py,sha256=NkSuVLK13_a8c7BxZ4cGIQ5vOtGIWOdh22WZEvjp-7U,19624 +charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so,sha256=IlObIV4dmRhFV8V7H-zK4rTxPzTSi9JmrWZD26JQfxI,272640 +charset_normalizer/models.py,sha256=I5i0s4aKCCgLPY2tUY3pwkgFA-BUbbNxQ7hVkVTt62s,11624 +charset_normalizer/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +charset_normalizer/utils.py,sha256=teiosMqzKjXyAHXnGdjSBOgnBZwx-SkBbCLrx0UXy8M,11894 +charset_normalizer/version.py,sha256=iHKUfHD3kDRSyrh_BN2ojh43TA5-UZQjvbVIEFfpHDs,79 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL new file mode 100644 index 0000000..d1b3f1d --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.41.2) +Root-Is-Purelib: false +Tag: cp312-cp312-manylinux_2_17_x86_64 +Tag: cp312-cp312-manylinux2014_x86_64 + diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt new file mode 100644 index 0000000..65619e7 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/entry_points.txt @@ -0,0 +1,2 @@ +[console_scripts] +normalizer = charset_normalizer.cli:cli_detect diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt new file mode 100644 index 0000000..66958f0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/top_level.txt @@ -0,0 +1 @@ +charset_normalizer diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py b/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py new file mode 100644 index 0000000..55991fc --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/__init__.py @@ -0,0 +1,46 @@ +# -*- coding: utf-8 -*- +""" +Charset-Normalizer +~~~~~~~~~~~~~~ +The Real First Universal Charset Detector. +A library that helps you read text from an unknown charset encoding. +Motivated by chardet, This package is trying to resolve the issue by taking a new approach. +All IANA character set names for which the Python core library provides codecs are supported. + +Basic usage: + >>> from charset_normalizer import from_bytes + >>> results = from_bytes('Bсеки човек има право на образование. Oбразованието!'.encode('utf_8')) + >>> best_guess = results.best() + >>> str(best_guess) + 'Bсеки човек има право на образование. Oбразованието!' + +Others methods and usages are available - see the full documentation +at . +:copyright: (c) 2021 by Ahmed TAHRI +:license: MIT, see LICENSE for more details. +""" +import logging + +from .api import from_bytes, from_fp, from_path, is_binary +from .legacy import detect +from .models import CharsetMatch, CharsetMatches +from .utils import set_logging_handler +from .version import VERSION, __version__ + +__all__ = ( + "from_fp", + "from_path", + "from_bytes", + "is_binary", + "detect", + "CharsetMatch", + "CharsetMatches", + "__version__", + "VERSION", + "set_logging_handler", +) + +# Attach a NullHandler to the top level logger by default +# https://docs.python.org/3.3/howto/logging.html#configuring-logging-for-a-library + +logging.getLogger("charset_normalizer").addHandler(logging.NullHandler()) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__main__.py b/venv/lib/python3.12/site-packages/charset_normalizer/__main__.py new file mode 100644 index 0000000..beae2ef --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/__main__.py @@ -0,0 +1,4 @@ +from .cli import cli_detect + +if __name__ == "__main__": + cli_detect() diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9f089969d2732a155b8efeb439cdf625567285e7 GIT binary patch literal 1726 zcmcIk&2Jk;6rZ&nJ6%px%OVgHKw$dJ&;N6*Kt?W8&gBAihNoGLfS>Ii{JKlXnU%=jYA5UoZ>)j5*^M&7y`t zKEq1>tT~&}MOOB8Q}-)oCF4tM&Yw5uGkTU?@fXYm|EhTv__Dc}LsWb6;l%m$@9598 z5%;7zl}@Nkt2W`L|7T-zqN|}nu3m|s<`L5GyMzlWmpdW%3G=?BT>t7npT6r-yh91Y z8y*)DKMuS;@e#~ATf$%ta-oV>$6AzyzC+}AqS^jCQ8p}QFPPJa2py^T}tzJxp0yKu! zP{P{f6CrtR`YaRw-*9z(8_LZE_9;}!fl36tX(K3vlC*8Q)utVS2js>UEc(Z7$4ZUTD(SUnBSGI7?uH)vd=55t* zYpxF+ySuiz)7D$evuPk`3vab|Z)N}nkSJrGCK94%%??0d&C}OZqlL;^Tou}T{;s>$kxbL zX$*DbUI9^#2xH)=+@ta##7TLo6UW&cg_>46Q2a6T9l8J&^v~yp8~W7nxeHr`a^nFN zHsL)Yj04(j8hsk{4OnMJlr4gl#_gsdJV}?wOGvz>KMc$A0#902BO0W$cOiwzaAo6kW%Ccz=I?^pe*qAFOv(TN literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..980485381eccfec96408b56904df74e90ce4a892 GIT binary patch literal 296 zcmXv}u}T9$5S_Wb;)ulF*jagkS&W^CHa3Fz0TwQsyWwuh?%uI`MlQYJANUR8r`Xwf zAP81=fpn>|2gxgD-poAS%zO@q0|+>}z9?=({_Be!qAgjS1o8$sAU zL)^GhW;1g9hI}SnAw7Sl>4eY8&bd}oUbjtI+4J$)gnQM{X&vOUAkVW>I!}$Tl`~SS yMex|I9@lM`T$(C>(sbqe$NNM5D1;?L#2+~PWqYrSFLv-9@4wtF8N?%(gz*MMN>1?r literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/api.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ee579c41558fb443684f700dbb4916b858cd08c6 GIT binary patch literal 17301 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 F{{h2w;;sMy literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/cd.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e86f367082b050cedd752617c8f136030a913dc6 GIT binary patch literal 13435 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

Cxwa4;oA<1F1D43JHgn zMdfQuHTjV*F^$4U81ioeFj>94RI_N;OT&;I1*(b%g+S%|0OjKQj!@-420iEaCJ$0^ z8&P-{5Zx8%dmCFJ8`+F8}}l literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/md.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9197dd1d0fe409394f51859d3ad00053497849b4 GIT binary patch literal 24500 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 ye{ngr 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/__pycache__/version.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..acc5e86f34318fbbbfa756f5cbf9362abb2430a2 GIT binary patch literal 323 zcmX@j%ge<81WNW+>Ha|aF^B^L%uvQ>Js@K`LkdF_LkeRQV=7}7D@+N3PGMTj2;oIB zS2Am|R0(joRutqHrz(`C78Pga=W$iB8tWPB8Qo&k^V4Lx#U3A@lAjzOe~UXl9;yP! zVJ$Am$t=0W9_AVp?CI~flHoJR%wMtk8Tq-X`ng3JiOJciMfxtO#mR|9>50Yq<*7+V z`emtkW%@apN%{qqB^mj7#(IWE`o)hD zpqAlBSj1Je literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/api.py b/venv/lib/python3.12/site-packages/charset_normalizer/api.py new file mode 100644 index 0000000..0ba08e3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/api.py @@ -0,0 +1,626 @@ +import logging +from os import PathLike +from typing import BinaryIO, List, Optional, Set, Union + +from .cd import ( + coherence_ratio, + encoding_languages, + mb_encoding_languages, + merge_coherence_ratios, +) +from .constant import IANA_SUPPORTED, TOO_BIG_SEQUENCE, TOO_SMALL_SEQUENCE, TRACE +from .md import mess_ratio +from .models import CharsetMatch, CharsetMatches +from .utils import ( + any_specified_encoding, + cut_sequence_chunks, + iana_name, + identify_sig_or_bom, + is_cp_similar, + is_multi_byte_encoding, + should_strip_sig_or_bom, +) + +# Will most likely be controversial +# logging.addLevelName(TRACE, "TRACE") +logger = logging.getLogger("charset_normalizer") +explain_handler = logging.StreamHandler() +explain_handler.setFormatter( + logging.Formatter("%(asctime)s | %(levelname)s | %(message)s") +) + + +def from_bytes( + sequences: Union[bytes, bytearray], + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.2, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Given a raw bytes sequence, return the best possibles charset usable to render str objects. + If there is no results, it is a strong indicator that the source is binary/not text. + By default, the process will extract 5 blocks of 512o each to assess the mess and coherence of a given sequence. + And will give up a particular code page after 20% of measured mess. Those criteria are customizable at will. + + The preemptive behavior DOES NOT replace the traditional detection workflow, it prioritize a particular code page + but never take it for granted. Can improve the performance. + + You may want to focus your attention to some code page or/and not others, use cp_isolation and cp_exclusion for that + purpose. + + This function will strip the SIG in the payload/sequence every time except on UTF-16, UTF-32. + By default the library does not setup any handler other than the NullHandler, if you choose to set the 'explain' + toggle to True it will alter the logger configuration to add a StreamHandler that is suitable for debugging. + Custom logging format and handler can be set manually. + """ + + if not isinstance(sequences, (bytearray, bytes)): + raise TypeError( + "Expected object of type bytes or bytearray, got: {0}".format( + type(sequences) + ) + ) + + if explain: + previous_logger_level: int = logger.level + logger.addHandler(explain_handler) + logger.setLevel(TRACE) + + length: int = len(sequences) + + if length == 0: + logger.debug("Encoding detection on empty bytes, assuming utf_8 intention.") + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level or logging.WARNING) + return CharsetMatches([CharsetMatch(sequences, "utf_8", 0.0, False, [], "")]) + + if cp_isolation is not None: + logger.log( + TRACE, + "cp_isolation is set. use this flag for debugging purpose. " + "limited list of encoding allowed : %s.", + ", ".join(cp_isolation), + ) + cp_isolation = [iana_name(cp, False) for cp in cp_isolation] + else: + cp_isolation = [] + + if cp_exclusion is not None: + logger.log( + TRACE, + "cp_exclusion is set. use this flag for debugging purpose. " + "limited list of encoding excluded : %s.", + ", ".join(cp_exclusion), + ) + cp_exclusion = [iana_name(cp, False) for cp in cp_exclusion] + else: + cp_exclusion = [] + + if length <= (chunk_size * steps): + logger.log( + TRACE, + "override steps (%i) and chunk_size (%i) as content does not fit (%i byte(s) given) parameters.", + steps, + chunk_size, + length, + ) + steps = 1 + chunk_size = length + + if steps > 1 and length / steps < chunk_size: + chunk_size = int(length / steps) + + is_too_small_sequence: bool = len(sequences) < TOO_SMALL_SEQUENCE + is_too_large_sequence: bool = len(sequences) >= TOO_BIG_SEQUENCE + + if is_too_small_sequence: + logger.log( + TRACE, + "Trying to detect encoding from a tiny portion of ({}) byte(s).".format( + length + ), + ) + elif is_too_large_sequence: + logger.log( + TRACE, + "Using lazy str decoding because the payload is quite large, ({}) byte(s).".format( + length + ), + ) + + prioritized_encodings: List[str] = [] + + specified_encoding: Optional[str] = ( + any_specified_encoding(sequences) if preemptive_behaviour else None + ) + + if specified_encoding is not None: + prioritized_encodings.append(specified_encoding) + logger.log( + TRACE, + "Detected declarative mark in sequence. Priority +1 given for %s.", + specified_encoding, + ) + + tested: Set[str] = set() + tested_but_hard_failure: List[str] = [] + tested_but_soft_failure: List[str] = [] + + fallback_ascii: Optional[CharsetMatch] = None + fallback_u8: Optional[CharsetMatch] = None + fallback_specified: Optional[CharsetMatch] = None + + results: CharsetMatches = CharsetMatches() + + sig_encoding, sig_payload = identify_sig_or_bom(sequences) + + if sig_encoding is not None: + prioritized_encodings.append(sig_encoding) + logger.log( + TRACE, + "Detected a SIG or BOM mark on first %i byte(s). Priority +1 given for %s.", + len(sig_payload), + sig_encoding, + ) + + prioritized_encodings.append("ascii") + + if "utf_8" not in prioritized_encodings: + prioritized_encodings.append("utf_8") + + for encoding_iana in prioritized_encodings + IANA_SUPPORTED: + if cp_isolation and encoding_iana not in cp_isolation: + continue + + if cp_exclusion and encoding_iana in cp_exclusion: + continue + + if encoding_iana in tested: + continue + + tested.add(encoding_iana) + + decoded_payload: Optional[str] = None + bom_or_sig_available: bool = sig_encoding == encoding_iana + strip_sig_or_bom: bool = bom_or_sig_available and should_strip_sig_or_bom( + encoding_iana + ) + + if encoding_iana in {"utf_16", "utf_32"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because it require a BOM. Will try some sub-encoder LE/BE.", + encoding_iana, + ) + continue + if encoding_iana in {"utf_7"} and not bom_or_sig_available: + logger.log( + TRACE, + "Encoding %s won't be tested as-is because detection is unreliable without BOM/SIG.", + encoding_iana, + ) + continue + + try: + is_multi_byte_decoder: bool = is_multi_byte_encoding(encoding_iana) + except (ModuleNotFoundError, ImportError): + logger.log( + TRACE, + "Encoding %s does not provide an IncrementalDecoder", + encoding_iana, + ) + continue + + try: + if is_too_large_sequence and is_multi_byte_decoder is False: + str( + sequences[: int(50e4)] + if strip_sig_or_bom is False + else sequences[len(sig_payload) : int(50e4)], + encoding=encoding_iana, + ) + else: + decoded_payload = str( + sequences + if strip_sig_or_bom is False + else sequences[len(sig_payload) :], + encoding=encoding_iana, + ) + except (UnicodeDecodeError, LookupError) as e: + if not isinstance(e, LookupError): + logger.log( + TRACE, + "Code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + similar_soft_failure_test: bool = False + + for encoding_soft_failed in tested_but_soft_failure: + if is_cp_similar(encoding_iana, encoding_soft_failed): + similar_soft_failure_test = True + break + + if similar_soft_failure_test: + logger.log( + TRACE, + "%s is deemed too similar to code page %s and was consider unsuited already. Continuing!", + encoding_iana, + encoding_soft_failed, + ) + continue + + r_ = range( + 0 if not bom_or_sig_available else len(sig_payload), + length, + int(length / steps), + ) + + multi_byte_bonus: bool = ( + is_multi_byte_decoder + and decoded_payload is not None + and len(decoded_payload) < length + ) + + if multi_byte_bonus: + logger.log( + TRACE, + "Code page %s is a multi byte encoding table and it appear that at least one character " + "was encoded using n-bytes.", + encoding_iana, + ) + + max_chunk_gave_up: int = int(len(r_) / 4) + + max_chunk_gave_up = max(max_chunk_gave_up, 2) + early_stop_count: int = 0 + lazy_str_hard_failure = False + + md_chunks: List[str] = [] + md_ratios = [] + + try: + for chunk in cut_sequence_chunks( + sequences, + encoding_iana, + r_, + chunk_size, + bom_or_sig_available, + strip_sig_or_bom, + sig_payload, + is_multi_byte_decoder, + decoded_payload, + ): + md_chunks.append(chunk) + + md_ratios.append( + mess_ratio( + chunk, + threshold, + explain is True and 1 <= len(cp_isolation) <= 2, + ) + ) + + if md_ratios[-1] >= threshold: + early_stop_count += 1 + + if (early_stop_count >= max_chunk_gave_up) or ( + bom_or_sig_available and strip_sig_or_bom is False + ): + break + except ( + UnicodeDecodeError + ) as e: # Lazy str loading may have missed something there + logger.log( + TRACE, + "LazyStr Loading: After MD chunk decode, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + early_stop_count = max_chunk_gave_up + lazy_str_hard_failure = True + + # We might want to check the sequence again with the whole content + # Only if initial MD tests passes + if ( + not lazy_str_hard_failure + and is_too_large_sequence + and not is_multi_byte_decoder + ): + try: + sequences[int(50e3) :].decode(encoding_iana, errors="strict") + except UnicodeDecodeError as e: + logger.log( + TRACE, + "LazyStr Loading: After final lookup, code page %s does not fit given bytes sequence at ALL. %s", + encoding_iana, + str(e), + ) + tested_but_hard_failure.append(encoding_iana) + continue + + mean_mess_ratio: float = sum(md_ratios) / len(md_ratios) if md_ratios else 0.0 + if mean_mess_ratio >= threshold or early_stop_count >= max_chunk_gave_up: + tested_but_soft_failure.append(encoding_iana) + logger.log( + TRACE, + "%s was excluded because of initial chaos probing. Gave up %i time(s). " + "Computed mean chaos is %f %%.", + encoding_iana, + early_stop_count, + round(mean_mess_ratio * 100, ndigits=3), + ) + # Preparing those fallbacks in case we got nothing. + if ( + enable_fallback + and encoding_iana in ["ascii", "utf_8", specified_encoding] + and not lazy_str_hard_failure + ): + fallback_entry = CharsetMatch( + sequences, encoding_iana, threshold, False, [], decoded_payload + ) + if encoding_iana == specified_encoding: + fallback_specified = fallback_entry + elif encoding_iana == "ascii": + fallback_ascii = fallback_entry + else: + fallback_u8 = fallback_entry + continue + + logger.log( + TRACE, + "%s passed initial chaos probing. Mean measured chaos is %f %%", + encoding_iana, + round(mean_mess_ratio * 100, ndigits=3), + ) + + if not is_multi_byte_decoder: + target_languages: List[str] = encoding_languages(encoding_iana) + else: + target_languages = mb_encoding_languages(encoding_iana) + + if target_languages: + logger.log( + TRACE, + "{} should target any language(s) of {}".format( + encoding_iana, str(target_languages) + ), + ) + + cd_ratios = [] + + # We shall skip the CD when its about ASCII + # Most of the time its not relevant to run "language-detection" on it. + if encoding_iana != "ascii": + for chunk in md_chunks: + chunk_languages = coherence_ratio( + chunk, + language_threshold, + ",".join(target_languages) if target_languages else None, + ) + + cd_ratios.append(chunk_languages) + + cd_ratios_merged = merge_coherence_ratios(cd_ratios) + + if cd_ratios_merged: + logger.log( + TRACE, + "We detected language {} using {}".format( + cd_ratios_merged, encoding_iana + ), + ) + + results.append( + CharsetMatch( + sequences, + encoding_iana, + mean_mess_ratio, + bom_or_sig_available, + cd_ratios_merged, + decoded_payload, + ) + ) + + if ( + encoding_iana in [specified_encoding, "ascii", "utf_8"] + and mean_mess_ratio < 0.1 + ): + logger.debug( + "Encoding detection: %s is most likely the one.", encoding_iana + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([results[encoding_iana]]) + + if encoding_iana == sig_encoding: + logger.debug( + "Encoding detection: %s is most likely the one as we detected a BOM or SIG within " + "the beginning of the sequence.", + encoding_iana, + ) + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + return CharsetMatches([results[encoding_iana]]) + + if len(results) == 0: + if fallback_u8 or fallback_ascii or fallback_specified: + logger.log( + TRACE, + "Nothing got out of the detection process. Using ASCII/UTF-8/Specified fallback.", + ) + + if fallback_specified: + logger.debug( + "Encoding detection: %s will be used as a fallback match", + fallback_specified.encoding, + ) + results.append(fallback_specified) + elif ( + (fallback_u8 and fallback_ascii is None) + or ( + fallback_u8 + and fallback_ascii + and fallback_u8.fingerprint != fallback_ascii.fingerprint + ) + or (fallback_u8 is not None) + ): + logger.debug("Encoding detection: utf_8 will be used as a fallback match") + results.append(fallback_u8) + elif fallback_ascii: + logger.debug("Encoding detection: ascii will be used as a fallback match") + results.append(fallback_ascii) + + if results: + logger.debug( + "Encoding detection: Found %s as plausible (best-candidate) for content. With %i alternatives.", + results.best().encoding, # type: ignore + len(results) - 1, + ) + else: + logger.debug("Encoding detection: Unable to determine any suitable charset.") + + if explain: + logger.removeHandler(explain_handler) + logger.setLevel(previous_logger_level) + + return results + + +def from_fp( + fp: BinaryIO, + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but using a file pointer that is already ready. + Will not close the file pointer. + """ + return from_bytes( + fp.read(), + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def from_path( + path: Union[str, bytes, PathLike], # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = True, +) -> CharsetMatches: + """ + Same thing than the function from_bytes but with one extra step. Opening and reading given file path in binary mode. + Can raise IOError. + """ + with open(path, "rb") as fp: + return from_fp( + fp, + steps, + chunk_size, + threshold, + cp_isolation, + cp_exclusion, + preemptive_behaviour, + explain, + language_threshold, + enable_fallback, + ) + + +def is_binary( + fp_or_path_or_payload: Union[PathLike, str, BinaryIO, bytes], # type: ignore[type-arg] + steps: int = 5, + chunk_size: int = 512, + threshold: float = 0.20, + cp_isolation: Optional[List[str]] = None, + cp_exclusion: Optional[List[str]] = None, + preemptive_behaviour: bool = True, + explain: bool = False, + language_threshold: float = 0.1, + enable_fallback: bool = False, +) -> bool: + """ + Detect if the given input (file, bytes, or path) points to a binary file. aka. not a string. + Based on the same main heuristic algorithms and default kwargs at the sole exception that fallbacks match + are disabled to be stricter around ASCII-compatible but unlikely to be a string. + """ + if isinstance(fp_or_path_or_payload, (str, PathLike)): + guesses = from_path( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + elif isinstance( + fp_or_path_or_payload, + ( + bytes, + bytearray, + ), + ): + guesses = from_bytes( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + else: + guesses = from_fp( + fp_or_path_or_payload, + steps=steps, + chunk_size=chunk_size, + threshold=threshold, + cp_isolation=cp_isolation, + cp_exclusion=cp_exclusion, + preemptive_behaviour=preemptive_behaviour, + explain=explain, + language_threshold=language_threshold, + enable_fallback=enable_fallback, + ) + + return not guesses diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cd.py b/venv/lib/python3.12/site-packages/charset_normalizer/cd.py new file mode 100644 index 0000000..4ea6760 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/cd.py @@ -0,0 +1,395 @@ +import importlib +from codecs import IncrementalDecoder +from collections import Counter +from functools import lru_cache +from typing import Counter as TypeCounter, Dict, List, Optional, Tuple + +from .constant import ( + FREQUENCIES, + KO_NAMES, + LANGUAGE_SUPPORTED_COUNT, + TOO_SMALL_SEQUENCE, + ZH_NAMES, +) +from .md import is_suspiciously_successive_range +from .models import CoherenceMatches +from .utils import ( + is_accentuated, + is_latin, + is_multi_byte_encoding, + is_unicode_range_secondary, + unicode_range, +) + + +def encoding_unicode_range(iana_name: str) -> List[str]: + """ + Return associated unicode ranges in a single byte code page. + """ + if is_multi_byte_encoding(iana_name): + raise IOError("Function not supported on multi-byte code page") + + decoder = importlib.import_module( + "encodings.{}".format(iana_name) + ).IncrementalDecoder + + p: IncrementalDecoder = decoder(errors="ignore") + seen_ranges: Dict[str, int] = {} + character_count: int = 0 + + for i in range(0x40, 0xFF): + chunk: str = p.decode(bytes([i])) + + if chunk: + character_range: Optional[str] = unicode_range(chunk) + + if character_range is None: + continue + + if is_unicode_range_secondary(character_range) is False: + if character_range not in seen_ranges: + seen_ranges[character_range] = 0 + seen_ranges[character_range] += 1 + character_count += 1 + + return sorted( + [ + character_range + for character_range in seen_ranges + if seen_ranges[character_range] / character_count >= 0.15 + ] + ) + + +def unicode_range_languages(primary_range: str) -> List[str]: + """ + Return inferred languages used with a unicode range. + """ + languages: List[str] = [] + + for language, characters in FREQUENCIES.items(): + for character in characters: + if unicode_range(character) == primary_range: + languages.append(language) + break + + return languages + + +@lru_cache() +def encoding_languages(iana_name: str) -> List[str]: + """ + Single-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + unicode_ranges: List[str] = encoding_unicode_range(iana_name) + primary_range: Optional[str] = None + + for specified_range in unicode_ranges: + if "Latin" not in specified_range: + primary_range = specified_range + break + + if primary_range is None: + return ["Latin Based"] + + return unicode_range_languages(primary_range) + + +@lru_cache() +def mb_encoding_languages(iana_name: str) -> List[str]: + """ + Multi-byte encoding language association. Some code page are heavily linked to particular language(s). + This function does the correspondence. + """ + if ( + iana_name.startswith("shift_") + or iana_name.startswith("iso2022_jp") + or iana_name.startswith("euc_j") + or iana_name == "cp932" + ): + return ["Japanese"] + if iana_name.startswith("gb") or iana_name in ZH_NAMES: + return ["Chinese"] + if iana_name.startswith("iso2022_kr") or iana_name in KO_NAMES: + return ["Korean"] + + return [] + + +@lru_cache(maxsize=LANGUAGE_SUPPORTED_COUNT) +def get_target_features(language: str) -> Tuple[bool, bool]: + """ + Determine main aspects from a supported language if it contains accents and if is pure Latin. + """ + target_have_accents: bool = False + target_pure_latin: bool = True + + for character in FREQUENCIES[language]: + if not target_have_accents and is_accentuated(character): + target_have_accents = True + if target_pure_latin and is_latin(character) is False: + target_pure_latin = False + + return target_have_accents, target_pure_latin + + +def alphabet_languages( + characters: List[str], ignore_non_latin: bool = False +) -> List[str]: + """ + Return associated languages associated to given characters. + """ + languages: List[Tuple[str, float]] = [] + + source_have_accents = any(is_accentuated(character) for character in characters) + + for language, language_characters in FREQUENCIES.items(): + target_have_accents, target_pure_latin = get_target_features(language) + + if ignore_non_latin and target_pure_latin is False: + continue + + if target_have_accents is False and source_have_accents: + continue + + character_count: int = len(language_characters) + + character_match_count: int = len( + [c for c in language_characters if c in characters] + ) + + ratio: float = character_match_count / character_count + + if ratio >= 0.2: + languages.append((language, ratio)) + + languages = sorted(languages, key=lambda x: x[1], reverse=True) + + return [compatible_language[0] for compatible_language in languages] + + +def characters_popularity_compare( + language: str, ordered_characters: List[str] +) -> float: + """ + Determine if a ordered characters list (by occurrence from most appearance to rarest) match a particular language. + The result is a ratio between 0. (absolutely no correspondence) and 1. (near perfect fit). + Beware that is function is not strict on the match in order to ease the detection. (Meaning close match is 1.) + """ + if language not in FREQUENCIES: + raise ValueError("{} not available".format(language)) + + character_approved_count: int = 0 + FREQUENCIES_language_set = set(FREQUENCIES[language]) + + ordered_characters_count: int = len(ordered_characters) + target_language_characters_count: int = len(FREQUENCIES[language]) + + large_alphabet: bool = target_language_characters_count > 26 + + for character, character_rank in zip( + ordered_characters, range(0, ordered_characters_count) + ): + if character not in FREQUENCIES_language_set: + continue + + character_rank_in_language: int = FREQUENCIES[language].index(character) + expected_projection_ratio: float = ( + target_language_characters_count / ordered_characters_count + ) + character_rank_projection: int = int(character_rank * expected_projection_ratio) + + if ( + large_alphabet is False + and abs(character_rank_projection - character_rank_in_language) > 4 + ): + continue + + if ( + large_alphabet is True + and abs(character_rank_projection - character_rank_in_language) + < target_language_characters_count / 3 + ): + character_approved_count += 1 + continue + + characters_before_source: List[str] = FREQUENCIES[language][ + 0:character_rank_in_language + ] + characters_after_source: List[str] = FREQUENCIES[language][ + character_rank_in_language: + ] + characters_before: List[str] = ordered_characters[0:character_rank] + characters_after: List[str] = ordered_characters[character_rank:] + + before_match_count: int = len( + set(characters_before) & set(characters_before_source) + ) + + after_match_count: int = len( + set(characters_after) & set(characters_after_source) + ) + + if len(characters_before_source) == 0 and before_match_count <= 4: + character_approved_count += 1 + continue + + if len(characters_after_source) == 0 and after_match_count <= 4: + character_approved_count += 1 + continue + + if ( + before_match_count / len(characters_before_source) >= 0.4 + or after_match_count / len(characters_after_source) >= 0.4 + ): + character_approved_count += 1 + continue + + return character_approved_count / len(ordered_characters) + + +def alpha_unicode_split(decoded_sequence: str) -> List[str]: + """ + Given a decoded text sequence, return a list of str. Unicode range / alphabet separation. + Ex. a text containing English/Latin with a bit a Hebrew will return two items in the resulting list; + One containing the latin letters and the other hebrew. + """ + layers: Dict[str, str] = {} + + for character in decoded_sequence: + if character.isalpha() is False: + continue + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + continue + + layer_target_range: Optional[str] = None + + for discovered_range in layers: + if ( + is_suspiciously_successive_range(discovered_range, character_range) + is False + ): + layer_target_range = discovered_range + break + + if layer_target_range is None: + layer_target_range = character_range + + if layer_target_range not in layers: + layers[layer_target_range] = character.lower() + continue + + layers[layer_target_range] += character.lower() + + return list(layers.values()) + + +def merge_coherence_ratios(results: List[CoherenceMatches]) -> CoherenceMatches: + """ + This function merge results previously given by the function coherence_ratio. + The return type is the same as coherence_ratio. + """ + per_language_ratios: Dict[str, List[float]] = {} + for result in results: + for sub_result in result: + language, ratio = sub_result + if language not in per_language_ratios: + per_language_ratios[language] = [ratio] + continue + per_language_ratios[language].append(ratio) + + merge = [ + ( + language, + round( + sum(per_language_ratios[language]) / len(per_language_ratios[language]), + 4, + ), + ) + for language in per_language_ratios + ] + + return sorted(merge, key=lambda x: x[1], reverse=True) + + +def filter_alt_coherence_matches(results: CoherenceMatches) -> CoherenceMatches: + """ + We shall NOT return "English—" in CoherenceMatches because it is an alternative + of "English". This function only keeps the best match and remove the em-dash in it. + """ + index_results: Dict[str, List[float]] = dict() + + for result in results: + language, ratio = result + no_em_name: str = language.replace("—", "") + + if no_em_name not in index_results: + index_results[no_em_name] = [] + + index_results[no_em_name].append(ratio) + + if any(len(index_results[e]) > 1 for e in index_results): + filtered_results: CoherenceMatches = [] + + for language in index_results: + filtered_results.append((language, max(index_results[language]))) + + return filtered_results + + return results + + +@lru_cache(maxsize=2048) +def coherence_ratio( + decoded_sequence: str, threshold: float = 0.1, lg_inclusion: Optional[str] = None +) -> CoherenceMatches: + """ + Detect ANY language that can be identified in given sequence. The sequence will be analysed by layers. + A layer = Character extraction by alphabets/ranges. + """ + + results: List[Tuple[str, float]] = [] + ignore_non_latin: bool = False + + sufficient_match_count: int = 0 + + lg_inclusion_list = lg_inclusion.split(",") if lg_inclusion is not None else [] + if "Latin Based" in lg_inclusion_list: + ignore_non_latin = True + lg_inclusion_list.remove("Latin Based") + + for layer in alpha_unicode_split(decoded_sequence): + sequence_frequencies: TypeCounter[str] = Counter(layer) + most_common = sequence_frequencies.most_common() + + character_count: int = sum(o for c, o in most_common) + + if character_count <= TOO_SMALL_SEQUENCE: + continue + + popular_character_ordered: List[str] = [c for c, o in most_common] + + for language in lg_inclusion_list or alphabet_languages( + popular_character_ordered, ignore_non_latin + ): + ratio: float = characters_popularity_compare( + language, popular_character_ordered + ) + + if ratio < threshold: + continue + elif ratio >= 0.8: + sufficient_match_count += 1 + + results.append((language, round(ratio, 4))) + + if sufficient_match_count >= 3: + break + + return sorted( + filter_alt_coherence_matches(results), key=lambda x: x[1], reverse=True + ) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py new file mode 100644 index 0000000..d95fedf --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__init__.py @@ -0,0 +1,6 @@ +from .__main__ import cli_detect, query_yes_no + +__all__ = ( + "cli_detect", + "query_yes_no", +) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py new file mode 100644 index 0000000..f4bcbaa --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__main__.py @@ -0,0 +1,296 @@ +import argparse +import sys +from json import dumps +from os.path import abspath, basename, dirname, join, realpath +from platform import python_version +from typing import List, Optional +from unicodedata import unidata_version + +import charset_normalizer.md as md_module +from charset_normalizer import from_fp +from charset_normalizer.models import CliDetectionResult +from charset_normalizer.version import __version__ + + +def query_yes_no(question: str, default: str = "yes") -> bool: + """Ask a yes/no question via input() and return their answer. + + "question" is a string that is presented to the user. + "default" is the presumed answer if the user just hits . + It must be "yes" (the default), "no" or None (meaning + an answer is required of the user). + + The "answer" return value is True for "yes" or False for "no". + + Credit goes to (c) https://stackoverflow.com/questions/3041986/apt-command-line-interface-like-yes-no-input + """ + valid = {"yes": True, "y": True, "ye": True, "no": False, "n": False} + if default is None: + prompt = " [y/n] " + elif default == "yes": + prompt = " [Y/n] " + elif default == "no": + prompt = " [y/N] " + else: + raise ValueError("invalid default answer: '%s'" % default) + + while True: + sys.stdout.write(question + prompt) + choice = input().lower() + if default is not None and choice == "": + return valid[default] + elif choice in valid: + return valid[choice] + else: + sys.stdout.write("Please respond with 'yes' or 'no' " "(or 'y' or 'n').\n") + + +def cli_detect(argv: Optional[List[str]] = None) -> int: + """ + CLI assistant using ARGV and ArgumentParser + :param argv: + :return: 0 if everything is fine, anything else equal trouble + """ + parser = argparse.ArgumentParser( + description="The Real First Universal Charset Detector. " + "Discover originating encoding used on text file. " + "Normalize text to unicode." + ) + + parser.add_argument( + "files", type=argparse.FileType("rb"), nargs="+", help="File(s) to be analysed" + ) + parser.add_argument( + "-v", + "--verbose", + action="store_true", + default=False, + dest="verbose", + help="Display complementary information about file if any. " + "Stdout will contain logs about the detection process.", + ) + parser.add_argument( + "-a", + "--with-alternative", + action="store_true", + default=False, + dest="alternatives", + help="Output complementary possibilities if any. Top-level JSON WILL be a list.", + ) + parser.add_argument( + "-n", + "--normalize", + action="store_true", + default=False, + dest="normalize", + help="Permit to normalize input file. If not set, program does not write anything.", + ) + parser.add_argument( + "-m", + "--minimal", + action="store_true", + default=False, + dest="minimal", + help="Only output the charset detected to STDOUT. Disabling JSON output.", + ) + parser.add_argument( + "-r", + "--replace", + action="store_true", + default=False, + dest="replace", + help="Replace file when trying to normalize it instead of creating a new one.", + ) + parser.add_argument( + "-f", + "--force", + action="store_true", + default=False, + dest="force", + help="Replace file without asking if you are sure, use this flag with caution.", + ) + parser.add_argument( + "-t", + "--threshold", + action="store", + default=0.2, + type=float, + dest="threshold", + help="Define a custom maximum amount of chaos allowed in decoded content. 0. <= chaos <= 1.", + ) + parser.add_argument( + "--version", + action="version", + version="Charset-Normalizer {} - Python {} - Unicode {} - SpeedUp {}".format( + __version__, + python_version(), + unidata_version, + "OFF" if md_module.__file__.lower().endswith(".py") else "ON", + ), + help="Show version information and exit.", + ) + + args = parser.parse_args(argv) + + if args.replace is True and args.normalize is False: + print("Use --replace in addition of --normalize only.", file=sys.stderr) + return 1 + + if args.force is True and args.replace is False: + print("Use --force in addition of --replace only.", file=sys.stderr) + return 1 + + if args.threshold < 0.0 or args.threshold > 1.0: + print("--threshold VALUE should be between 0. AND 1.", file=sys.stderr) + return 1 + + x_ = [] + + for my_file in args.files: + matches = from_fp(my_file, threshold=args.threshold, explain=args.verbose) + + best_guess = matches.best() + + if best_guess is None: + print( + 'Unable to identify originating encoding for "{}". {}'.format( + my_file.name, + "Maybe try increasing maximum amount of chaos." + if args.threshold < 1.0 + else "", + ), + file=sys.stderr, + ) + x_.append( + CliDetectionResult( + abspath(my_file.name), + None, + [], + [], + "Unknown", + [], + False, + 1.0, + 0.0, + None, + True, + ) + ) + else: + x_.append( + CliDetectionResult( + abspath(my_file.name), + best_guess.encoding, + best_guess.encoding_aliases, + [ + cp + for cp in best_guess.could_be_from_charset + if cp != best_guess.encoding + ], + best_guess.language, + best_guess.alphabets, + best_guess.bom, + best_guess.percent_chaos, + best_guess.percent_coherence, + None, + True, + ) + ) + + if len(matches) > 1 and args.alternatives: + for el in matches: + if el != best_guess: + x_.append( + CliDetectionResult( + abspath(my_file.name), + el.encoding, + el.encoding_aliases, + [ + cp + for cp in el.could_be_from_charset + if cp != el.encoding + ], + el.language, + el.alphabets, + el.bom, + el.percent_chaos, + el.percent_coherence, + None, + False, + ) + ) + + if args.normalize is True: + if best_guess.encoding.startswith("utf") is True: + print( + '"{}" file does not need to be normalized, as it already came from unicode.'.format( + my_file.name + ), + file=sys.stderr, + ) + if my_file.closed is False: + my_file.close() + continue + + dir_path = dirname(realpath(my_file.name)) + file_name = basename(realpath(my_file.name)) + + o_: List[str] = file_name.split(".") + + if args.replace is False: + o_.insert(-1, best_guess.encoding) + if my_file.closed is False: + my_file.close() + elif ( + args.force is False + and query_yes_no( + 'Are you sure to normalize "{}" by replacing it ?'.format( + my_file.name + ), + "no", + ) + is False + ): + if my_file.closed is False: + my_file.close() + continue + + try: + x_[0].unicode_path = join(dir_path, ".".join(o_)) + + with open(x_[0].unicode_path, "w", encoding="utf-8") as fp: + fp.write(str(best_guess)) + except IOError as e: + print(str(e), file=sys.stderr) + if my_file.closed is False: + my_file.close() + return 2 + + if my_file.closed is False: + my_file.close() + + if args.minimal is False: + print( + dumps( + [el.__dict__ for el in x_] if len(x_) > 1 else x_[0].__dict__, + ensure_ascii=True, + indent=4, + ) + ) + else: + for my_file in args.files: + print( + ", ".join( + [ + el.encoding or "undefined" + for el in x_ + if el.path == abspath(my_file.name) + ] + ) + ) + + return 0 + + +if __name__ == "__main__": + cli_detect() diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1eb4c62f457510cde6daeb7da5150ccd4113b7fa GIT binary patch literal 284 zcmXv}u};G<5Vf61jan*JX0{B(YS|Eig_#e?a&qERVqqu2c8kKsSMUvd3xAM>fr+hB zH>O@Bc*EVjyQjN%pX>FK5iaj<8cq3oCjStB#qolQccz)CrZJImB}dbY`4q?6t$YhGywd6EF8 mGZCN|#wojXz1~^8^Yh=c^Kee#kZ{hwSaC>`m3UkDjCv>MP)>pX literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc b/venv/lib/python3.12/site-packages/charset_normalizer/cli/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7710fc976aae2ebb380565c7e6e5311c6f86bdf GIT binary patch literal 10385 zcmcgyeQX;?cHialWBDmcA|+B^UeU58Iws}M*p?kTmSs8e$#!DP`JnA1R-BbYdb!Kn zU0N28@;QeVwXa4aAy-IlQ&?_;MyZX9`=5iNy#zQQEn1+aD zpnbE;C1shubAUrv68Fu_n>TOXd-G=a8~wA}?I7R@9q1YLZX}5Rzy;&6m54|G4#W(B z2t@KkOn;Lx63Qmtl%`@7iR&odoVLU)X=}`yw#95|I!34MF}v1g<{fEg%&E~9-j#O8 z+-XnDqm`|EP1+mtYBb5$rt4z$8g1i!X@AVG(KO$XZj3c*w4D#6gRvmcwaCFWAt(H~ zxaJWna{qxP)`IGghx2f5t|)xA@BJvf{WlmtzoN7Z!Nh8cDF)66D#IZbPfo`76gfb=y z@e7I^za+Jg(B;%W^Vq22HpT7C2O^#3@-xNSI3V!7nTPQSkR@H>o*~MEJ)9Kh!&x zNmHJ@Od<0mCA8&9WYJ7QAuE&{plmCZX()RX=&wJ>o+oo4_g1OqhoqfQ%44R?24Cf! zGD4_QMdXP*m4mV&g(MWa(QG&*Q|MuC%6a79MqAhr|^F^Y)0Gg%pT)q0j(taZdqm^YgS zR(${_Ia2Pyq_VQYj3pJB*>@PkN&9sfSk8dLq;cyo$An-WA*KrpD+v#8WTX`sFFg?#+;ex7S1t}4}uGq-q1>orP4(A@pDYBB`LuClE^S+$xb~?=LWe`C34$e z<~c|lU<)}TLX3h9y@1S^fQa`!klysi5JCtT>}lf&J5D%&32x~*G=AtM=JXGdWPB*s`t z=9IV~N@2WA6v{e|GB`}A|mwGD4K&a_UqzP;{>wdkz7=WLsMe*WZN?km;@ zW*evX-*dGW-St!1t8rY>F#Wwr(;!q~Q)|ifo(Ct_N{URC(;@DuKZv|-x>f2uN#@BEcE*|qQLAL&)V=0GWU5|Vkw;we;19u||Xxu^6 z^bFk1s72#$MQzW(y$%*0o@F}ep+u>WKP3o!E*@T`$o2zX} zip!9s-~iViW1CX&n$#Yp&Y)5_m8^MEIH9b03>hiBi>-N3#E1mRgrWk8x{X*sTW)VP zXl*XdYq~-)U*2}%2w+OJJjsE!WeI5$w6#@fb3$8-(r&b%?Mld?Q+S!Ld2a8xRay^l z!rBQkH?CoTVtKr3x~v`V`ENNMob=W{XxDkrNv;8HsD8Y`+)P^Y*2_Ow z<)?ksqBn0&ZCl-2r>kp(c4MnS#JvC!x8LyUvs)%lrFK3!ma@yJQ}!5Cb*+q;M|($! zQ34%+KPTFacA>p!+byTw*We+EDN5M)`x-HCP4yVMRo+m$uTnB7sNHYSm3JTUmMvi# zB@(7{_24^O-d0`ad9a3L%G;(**ZgMS22N}0#flt*g4$k#uDqcZB6sZrwf$@BAPZPi zFFjdX-ImIC49>j8urS)Gt&+coSQ#{0D{tv<^Oip1+-;aEou~6wJTIBNX8*l;gs$ol zx~fO$XY@!_nN>VOSM>;8)gyFOkI+>;LO;bL&L^Y$+E2^`SiV|*hTJ_xO8)@_38Q&rwm{TtsI#k{W=X)H#Iuu)Taqa*00+XKd)x|5i6^oj<-=PIh*=|+%&^Gj)+k=MPjM3nP*AH4(J^7rA!Kmhn z-so6W&#u;UM@dhqqMt!M>sdjAhrBS?D!K3?DVxA|$6?OT>vJ~dVZ2G=+F3KqDFJ+V zFCK?agIZ5)g&l1i%5M-P{9OCZMd}S=oLo;RDMQN+LOM3-uFQE=6uFHt{(ti28xW(D z?n`d)&{3TlC&vk0LpU7QtV65QK-~hwQG9Z|&pa3X^F{^_okGu*X2VxFN zqkuyR%F7rHkTm|D3@fo|27g=b(JORFtcTfxaVidg8^A}g6hMPU0Grtil1eokMuGrY zVtGc9#OyH7X%cc5Fr;)6AXcV7DFJ|WT1aAa70QQn9D>o|Qc;RBeMvci(IJ3VlA}q1 zRq#-pkPs0j08|6aN?;W3q5`AyToll*5`>{w0@?)NEU;M+^QDbK~_!D zuu49cYv_kkmmJ3U6d-CWAiEPFJxr-)Wg-Lci~u%}Rr46fXL6>OfX!OIi-O@ z04ni3bc8NRf#JnbfEYDi9pWp2$$%V+00ha=uvxXT8osO}MrN3&BH`~FpemcIi$pL; z6=8XR&9DtGaH?xnLCy`F$SMGytx+{2LZl2Q`J|Er;Lgx+NX$fda6Hc(J$2$Z^V-1R zpk^_Khp39efI`k00X(kc2i0CCbAvB)QW}6juyMIk$6HI@8yJBGg#j#TGoIWijy;4? zLtLxjWaaR}Bc-ty(n%o+sFi9f5xL$I0zbikW$}!#!AkHJ0D9PPIwpH+sPDw-AuYhz zVE`3J_1WmXuxts-mN@WW0xk$jMDEB*y+(K1_!tMlCr#k)kIxA}U_n+mR)bU%aG#(B zF3SkqI0P(*2N=oOA`yrM5O2|5xtAUn4lcvt!OG{cd@%onn1z+dF>+Rdbq2u?v%|}d zXGe7uGQnnXTw&=7c7ienAmy0IBh{jX=;)ta$Im|Q|696ZRX(r8H zOs2E2=+j~rk_2GFU_cQfkjL00f|-FO@sdJXghE_LnJrOf-wP!^Aht#U!NhyF7LU?q zOyMu4dQ9p|2VbXXs|6Fey`{AuDKB7&`TismVP4kmUvwHW1s+!~oXT({<3Wo+OI^w8kR9 z0;>WV{Krq=Y+}X<B9_oEz2Xk zu7){foP#g}3m-h*hb?Q8@HcDK#$ANqObW+yJ5CD_!w?N3lSJT-TNOtqaB&I{tWpi)_7BzF|c(pN%xkqY3HQVuOI zaRi$J}X5#iE}!8c^(Fa8&v+?In7;5g86kUzetw9$qq0C>lXQd<)W zb3kguJ_IC#P|5L}1@wyS2ItVmCh-Ms`T}FCaChh81S~hs%86uBwI&5@uAFHzquR4T z<8^?-Jt_^k9yUHm?ViW?L`a(m#i3Q(Csi768bjLl0M{2RVDn&M$n6q_4kdgACb{54 zwWm=$Eut*XsdPM!!zLb=*5MXV6UjI^s}5~IEL)bI$35Y=1lWHDu9XxC!+zR@0Vhck zeD@}_5Rk%{a^sIJn87>@X;(+tRErzW66FAc1 z!(3duvMl9FmF8JtGz+%_svYh^$5;qMS*3=>wCc`qkh26Ou4M(awpguzJ0mM8`UI^B9yUuzMcP}!__aji4~(5dg37=?gIxkg4@J9RkT8g=x=Q8zOg3-8=Bw3Po4~UlS&ab;Y`h(^aJFi#5$fufOPSSTT{F7s(a3 z#z_Nb-Q%1s24{28{d$Sb25jEP+584upy)pHbhgU4MfWSu#`fyd*=mhJeMR?cPiF(& z8j9ZfWp`cC4eFtlnyQlp-2z4Lu_fwk3aO!QZ*$j}-io zMSu5_e|N#Z`>y}K|G?G59}PXSTWTHP49~WedQG$g3=|+-bxY2cg0p3IXwezE-1pGt z{GXX>Vu}|rji#1-%n0qrfHB_(#XVDG* zIzP`9+O}(qJwL1er0L_PPwBxD@WriONVAc)*GZw*`>SoVgNea*8+ZVX-@T=a#DzCh8}p#8RLpTVN9QTv7Zz@tW2 zZQXxS9_Y_Jt$*8+ue0FmEc$@xF8I13u-8YHLcI&2-bWU*zu}jm-r3$_bL(8wQu~fV z`;LX?9bZ|9U~@6l`z3B)aS;A>t7LQ)d|e=H=J@n+P3Go;Z?i^hDfqT%>INRI^TPb7 zI=AQRF2Y+swd;@bv+P36y1Blkj-3k~J3nh`pXx0(24`c7jh)3n(+&G|`*KTkndzLj zec*cEwaDx&GNJdJH=XcWVzw8U?Vxq{)}?6wLbM;WZV&x3+COh9c82FqesJdfGYg%& zLFWyf#b`h1+#Uj*+t-)+zvsH?!qTiat(vqg1!jvz>?klhicCk5*#P>swtYj@1)EkZ zM003mGvW2Ub?NG*Ip0FfhGKo|QvJq4{l=yGt%drncQ!26@4nktsDE+U7c2(QQs8_c zaK6~G9y{z2WePTZZ6(^;Z^W+0zOh@td@dreP748lp)pzvth?d9?tZ7{=f0NDn?vvJ zo-Q`+_e{~tEgkQ^K0o>a|31ICVeewgzA5`dCj4H_&6+#ZBC})4gd=j_ z^uD>Bg?ey8!_2_+!0hncrlru%LTKlG-}A-BwzXsZMa@HBVCLxb(YXx}2FrntV&Ldf z;FUt)mDNgveS@tKmqAV8)-T=GU@K&-r>MSSw%4{Uha>Z2cd4J!AJQMy{hezue0ZvN z>U-0N@B21>9&81*YOixkZCeU$Tkfp?$o6UQrGM}go`MWByeJ@zLjR%D9swXIyB2->Bkfo#Fn0!tcJ*>ZI2ozSh(yX4=T zzbP$xH{F!x>Za;un%{1olNP+2?n)oEf0+I0r4KI^Tic6`fv;_52t~?jcdTqAT<(=d zBG59E`*H5d5pBi#X6)1UFJW11C@qK%Z9&}Fb$!>nqa|-_+`G`c7osEBe8YL&xe(Yk z_x(a(TQSt3t&vBRwYKgX3a?{|2!vJ|V3c2f^%@1s=ht6FAs~O1BJoV`1z-Bj=Z$S& z5oR!-FZj;-S@zF2zAL|%yP5mcx2=lv-l=)e-13_hJMjO{R{^5-xnF-(2SVim*y;YI zK5(Yn_pdF1GdmjoZR7s47SmEk^O-%Cr2{n3Kljz2Yjdexd(N%*e747O)@1)|zYXe_ zE%tNGmSxXD)42xAg9Zx}@OG~M7ebiS{%s>n9uG4TzQNE>Mdp+&3i{4(6Xhu0^7Zo$ zK33?b41A8zjv6WrCr1UJ(X_*vYK5=%aE_E5m;qlosm{`A1OGdhes=ShPDHEzIU<@y zsws`6S8$KIC)>3nnHqeuAqs~;Kt;4enc7sPz4WC;KR;rO63%p@$ZN+TmBJ@Me3Za8 z!N-tz{Cz^&02TU)gWji~G51S9f;#-YM9#y<3PqCSXGG0sgyR9x@C#!9r^NmT#QI+l z?GK2~|0Kc>h>Z`3-4BRuUs~J9*U8!KD+GSe*X!@QzDHX5%U)8UNcYt1vuJMn^<=@{ jwL;*EJBJ==?-jvDm|a(L3smsuX3rlELa>>eH0}NmX-Awp literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/constant.py b/venv/lib/python3.12/site-packages/charset_normalizer/constant.py new file mode 100644 index 0000000..8634904 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/constant.py @@ -0,0 +1,1995 @@ +# -*- coding: utf-8 -*- +from codecs import BOM_UTF8, BOM_UTF16_BE, BOM_UTF16_LE, BOM_UTF32_BE, BOM_UTF32_LE +from encodings.aliases import aliases +from re import IGNORECASE, compile as re_compile +from typing import Dict, List, Set, Union + +# Contain for each eligible encoding a list of/item bytes SIG/BOM +ENCODING_MARKS: Dict[str, Union[bytes, List[bytes]]] = { + "utf_8": BOM_UTF8, + "utf_7": [ + b"\x2b\x2f\x76\x38", + b"\x2b\x2f\x76\x39", + b"\x2b\x2f\x76\x2b", + b"\x2b\x2f\x76\x2f", + b"\x2b\x2f\x76\x38\x2d", + ], + "gb18030": b"\x84\x31\x95\x33", + "utf_32": [BOM_UTF32_BE, BOM_UTF32_LE], + "utf_16": [BOM_UTF16_BE, BOM_UTF16_LE], +} + +TOO_SMALL_SEQUENCE: int = 32 +TOO_BIG_SEQUENCE: int = int(10e6) + +UTF8_MAXIMAL_ALLOCATION: int = 1_112_064 + +# Up-to-date Unicode ucd/15.0.0 +UNICODE_RANGES_COMBINED: Dict[str, range] = { + "Control character": range(32), + "Basic Latin": range(32, 128), + "Latin-1 Supplement": range(128, 256), + "Latin Extended-A": range(256, 384), + "Latin Extended-B": range(384, 592), + "IPA Extensions": range(592, 688), + "Spacing Modifier Letters": range(688, 768), + "Combining Diacritical Marks": range(768, 880), + "Greek and Coptic": range(880, 1024), + "Cyrillic": range(1024, 1280), + "Cyrillic Supplement": range(1280, 1328), + "Armenian": range(1328, 1424), + "Hebrew": range(1424, 1536), + "Arabic": range(1536, 1792), + "Syriac": range(1792, 1872), + "Arabic Supplement": range(1872, 1920), + "Thaana": range(1920, 1984), + "NKo": range(1984, 2048), + "Samaritan": range(2048, 2112), + "Mandaic": range(2112, 2144), + "Syriac Supplement": range(2144, 2160), + "Arabic Extended-B": range(2160, 2208), + "Arabic Extended-A": range(2208, 2304), + "Devanagari": range(2304, 2432), + "Bengali": range(2432, 2560), + "Gurmukhi": range(2560, 2688), + "Gujarati": range(2688, 2816), + "Oriya": range(2816, 2944), + "Tamil": range(2944, 3072), + "Telugu": range(3072, 3200), + "Kannada": range(3200, 3328), + "Malayalam": range(3328, 3456), + "Sinhala": range(3456, 3584), + "Thai": range(3584, 3712), + "Lao": range(3712, 3840), + "Tibetan": range(3840, 4096), + "Myanmar": range(4096, 4256), + "Georgian": range(4256, 4352), + "Hangul Jamo": range(4352, 4608), + "Ethiopic": range(4608, 4992), + "Ethiopic Supplement": range(4992, 5024), + "Cherokee": range(5024, 5120), + "Unified Canadian Aboriginal Syllabics": range(5120, 5760), + "Ogham": range(5760, 5792), + "Runic": range(5792, 5888), + "Tagalog": range(5888, 5920), + "Hanunoo": range(5920, 5952), + "Buhid": range(5952, 5984), + "Tagbanwa": range(5984, 6016), + "Khmer": range(6016, 6144), + "Mongolian": range(6144, 6320), + "Unified Canadian Aboriginal Syllabics Extended": range(6320, 6400), + "Limbu": range(6400, 6480), + "Tai Le": range(6480, 6528), + "New Tai Lue": range(6528, 6624), + "Khmer Symbols": range(6624, 6656), + "Buginese": range(6656, 6688), + "Tai Tham": range(6688, 6832), + "Combining Diacritical Marks Extended": range(6832, 6912), + "Balinese": range(6912, 7040), + "Sundanese": range(7040, 7104), + "Batak": range(7104, 7168), + "Lepcha": range(7168, 7248), + "Ol Chiki": range(7248, 7296), + "Cyrillic Extended-C": range(7296, 7312), + "Georgian Extended": range(7312, 7360), + "Sundanese Supplement": range(7360, 7376), + "Vedic Extensions": range(7376, 7424), + "Phonetic Extensions": range(7424, 7552), + "Phonetic Extensions Supplement": range(7552, 7616), + "Combining Diacritical Marks Supplement": range(7616, 7680), + "Latin Extended Additional": range(7680, 7936), + "Greek Extended": range(7936, 8192), + "General Punctuation": range(8192, 8304), + "Superscripts and Subscripts": range(8304, 8352), + "Currency Symbols": range(8352, 8400), + "Combining Diacritical Marks for Symbols": range(8400, 8448), + "Letterlike Symbols": range(8448, 8528), + "Number Forms": range(8528, 8592), + "Arrows": range(8592, 8704), + "Mathematical Operators": range(8704, 8960), + "Miscellaneous Technical": range(8960, 9216), + "Control Pictures": range(9216, 9280), + "Optical Character Recognition": range(9280, 9312), + "Enclosed Alphanumerics": range(9312, 9472), + "Box Drawing": range(9472, 9600), + "Block Elements": range(9600, 9632), + "Geometric Shapes": range(9632, 9728), + "Miscellaneous Symbols": range(9728, 9984), + "Dingbats": range(9984, 10176), + "Miscellaneous Mathematical Symbols-A": range(10176, 10224), + "Supplemental Arrows-A": range(10224, 10240), + "Braille Patterns": range(10240, 10496), + "Supplemental Arrows-B": range(10496, 10624), + "Miscellaneous Mathematical Symbols-B": range(10624, 10752), + "Supplemental Mathematical Operators": range(10752, 11008), + "Miscellaneous Symbols and Arrows": range(11008, 11264), + "Glagolitic": range(11264, 11360), + "Latin Extended-C": range(11360, 11392), + "Coptic": range(11392, 11520), + "Georgian Supplement": range(11520, 11568), + "Tifinagh": range(11568, 11648), + "Ethiopic Extended": range(11648, 11744), + "Cyrillic Extended-A": range(11744, 11776), + "Supplemental Punctuation": range(11776, 11904), + "CJK Radicals Supplement": range(11904, 12032), + "Kangxi Radicals": range(12032, 12256), + "Ideographic Description Characters": range(12272, 12288), + "CJK Symbols and Punctuation": range(12288, 12352), + "Hiragana": range(12352, 12448), + "Katakana": range(12448, 12544), + "Bopomofo": range(12544, 12592), + "Hangul Compatibility Jamo": range(12592, 12688), + "Kanbun": range(12688, 12704), + "Bopomofo Extended": range(12704, 12736), + "CJK Strokes": range(12736, 12784), + "Katakana Phonetic Extensions": range(12784, 12800), + "Enclosed CJK Letters and Months": range(12800, 13056), + "CJK Compatibility": range(13056, 13312), + "CJK Unified Ideographs Extension A": range(13312, 19904), + "Yijing Hexagram Symbols": range(19904, 19968), + "CJK Unified Ideographs": range(19968, 40960), + "Yi Syllables": range(40960, 42128), + "Yi Radicals": range(42128, 42192), + "Lisu": range(42192, 42240), + "Vai": range(42240, 42560), + "Cyrillic Extended-B": range(42560, 42656), + "Bamum": range(42656, 42752), + "Modifier Tone Letters": range(42752, 42784), + "Latin Extended-D": range(42784, 43008), + "Syloti Nagri": range(43008, 43056), + "Common Indic Number Forms": range(43056, 43072), + "Phags-pa": range(43072, 43136), + "Saurashtra": range(43136, 43232), + "Devanagari Extended": range(43232, 43264), + "Kayah Li": range(43264, 43312), + "Rejang": range(43312, 43360), + "Hangul Jamo Extended-A": range(43360, 43392), + "Javanese": range(43392, 43488), + "Myanmar Extended-B": range(43488, 43520), + "Cham": range(43520, 43616), + "Myanmar Extended-A": range(43616, 43648), + "Tai Viet": range(43648, 43744), + "Meetei Mayek Extensions": range(43744, 43776), + "Ethiopic Extended-A": range(43776, 43824), + "Latin Extended-E": range(43824, 43888), + "Cherokee Supplement": range(43888, 43968), + "Meetei Mayek": range(43968, 44032), + "Hangul Syllables": range(44032, 55216), + "Hangul Jamo Extended-B": range(55216, 55296), + "High Surrogates": range(55296, 56192), + "High Private Use Surrogates": range(56192, 56320), + "Low Surrogates": range(56320, 57344), + "Private Use Area": range(57344, 63744), + "CJK Compatibility Ideographs": range(63744, 64256), + "Alphabetic Presentation Forms": range(64256, 64336), + "Arabic Presentation Forms-A": range(64336, 65024), + "Variation Selectors": range(65024, 65040), + "Vertical Forms": range(65040, 65056), + "Combining Half Marks": range(65056, 65072), + "CJK Compatibility Forms": range(65072, 65104), + "Small Form Variants": range(65104, 65136), + "Arabic Presentation Forms-B": range(65136, 65280), + "Halfwidth and Fullwidth Forms": range(65280, 65520), + "Specials": range(65520, 65536), + "Linear B Syllabary": range(65536, 65664), + "Linear B Ideograms": range(65664, 65792), + "Aegean Numbers": range(65792, 65856), + "Ancient Greek Numbers": range(65856, 65936), + "Ancient Symbols": range(65936, 66000), + "Phaistos Disc": range(66000, 66048), + "Lycian": range(66176, 66208), + "Carian": range(66208, 66272), + "Coptic Epact Numbers": range(66272, 66304), + "Old Italic": range(66304, 66352), + "Gothic": range(66352, 66384), + "Old Permic": range(66384, 66432), + "Ugaritic": range(66432, 66464), + "Old Persian": range(66464, 66528), + "Deseret": range(66560, 66640), + "Shavian": range(66640, 66688), + "Osmanya": range(66688, 66736), + "Osage": range(66736, 66816), + "Elbasan": range(66816, 66864), + "Caucasian Albanian": range(66864, 66928), + "Vithkuqi": range(66928, 67008), + "Linear A": range(67072, 67456), + "Latin Extended-F": range(67456, 67520), + "Cypriot Syllabary": range(67584, 67648), + "Imperial Aramaic": range(67648, 67680), + "Palmyrene": range(67680, 67712), + "Nabataean": range(67712, 67760), + "Hatran": range(67808, 67840), + "Phoenician": range(67840, 67872), + "Lydian": range(67872, 67904), + "Meroitic Hieroglyphs": range(67968, 68000), + "Meroitic Cursive": range(68000, 68096), + "Kharoshthi": range(68096, 68192), + "Old South Arabian": range(68192, 68224), + "Old North Arabian": range(68224, 68256), + "Manichaean": range(68288, 68352), + "Avestan": range(68352, 68416), + "Inscriptional Parthian": range(68416, 68448), + "Inscriptional Pahlavi": range(68448, 68480), + "Psalter Pahlavi": range(68480, 68528), + "Old Turkic": range(68608, 68688), + "Old Hungarian": range(68736, 68864), + "Hanifi Rohingya": range(68864, 68928), + "Rumi Numeral Symbols": range(69216, 69248), + "Yezidi": range(69248, 69312), + "Arabic Extended-C": range(69312, 69376), + "Old Sogdian": range(69376, 69424), + "Sogdian": range(69424, 69488), + "Old Uyghur": range(69488, 69552), + "Chorasmian": range(69552, 69600), + "Elymaic": range(69600, 69632), + "Brahmi": range(69632, 69760), + "Kaithi": range(69760, 69840), + "Sora Sompeng": range(69840, 69888), + "Chakma": range(69888, 69968), + "Mahajani": range(69968, 70016), + "Sharada": range(70016, 70112), + "Sinhala Archaic Numbers": range(70112, 70144), + "Khojki": range(70144, 70224), + "Multani": range(70272, 70320), + "Khudawadi": range(70320, 70400), + "Grantha": range(70400, 70528), + "Newa": range(70656, 70784), + "Tirhuta": range(70784, 70880), + "Siddham": range(71040, 71168), + "Modi": range(71168, 71264), + "Mongolian Supplement": range(71264, 71296), + "Takri": range(71296, 71376), + "Ahom": range(71424, 71504), + "Dogra": range(71680, 71760), + "Warang Citi": range(71840, 71936), + "Dives Akuru": range(71936, 72032), + "Nandinagari": range(72096, 72192), + "Zanabazar Square": range(72192, 72272), + "Soyombo": range(72272, 72368), + "Unified Canadian Aboriginal Syllabics Extended-A": range(72368, 72384), + "Pau Cin Hau": range(72384, 72448), + "Devanagari Extended-A": range(72448, 72544), + "Bhaiksuki": range(72704, 72816), + "Marchen": range(72816, 72896), + "Masaram Gondi": range(72960, 73056), + "Gunjala Gondi": range(73056, 73136), + "Makasar": range(73440, 73472), + "Kawi": range(73472, 73568), + "Lisu Supplement": range(73648, 73664), + "Tamil Supplement": range(73664, 73728), + "Cuneiform": range(73728, 74752), + "Cuneiform Numbers and Punctuation": range(74752, 74880), + "Early Dynastic Cuneiform": range(74880, 75088), + "Cypro-Minoan": range(77712, 77824), + "Egyptian Hieroglyphs": range(77824, 78896), + "Egyptian Hieroglyph Format Controls": range(78896, 78944), + "Anatolian Hieroglyphs": range(82944, 83584), + "Bamum Supplement": range(92160, 92736), + "Mro": range(92736, 92784), + "Tangsa": range(92784, 92880), + "Bassa Vah": range(92880, 92928), + "Pahawh Hmong": range(92928, 93072), + "Medefaidrin": range(93760, 93856), + "Miao": range(93952, 94112), + "Ideographic Symbols and Punctuation": range(94176, 94208), + "Tangut": range(94208, 100352), + "Tangut Components": range(100352, 101120), + "Khitan Small Script": range(101120, 101632), + "Tangut Supplement": range(101632, 101760), + "Kana Extended-B": range(110576, 110592), + "Kana Supplement": range(110592, 110848), + "Kana Extended-A": range(110848, 110896), + "Small Kana Extension": range(110896, 110960), + "Nushu": range(110960, 111360), + "Duployan": range(113664, 113824), + "Shorthand Format Controls": range(113824, 113840), + "Znamenny Musical Notation": range(118528, 118736), + "Byzantine Musical Symbols": range(118784, 119040), + "Musical Symbols": range(119040, 119296), + "Ancient Greek Musical Notation": range(119296, 119376), + "Kaktovik Numerals": range(119488, 119520), + "Mayan Numerals": range(119520, 119552), + "Tai Xuan Jing Symbols": range(119552, 119648), + "Counting Rod Numerals": range(119648, 119680), + "Mathematical Alphanumeric Symbols": range(119808, 120832), + "Sutton SignWriting": range(120832, 121520), + "Latin Extended-G": range(122624, 122880), + "Glagolitic Supplement": range(122880, 122928), + "Cyrillic Extended-D": range(122928, 123024), + "Nyiakeng Puachue Hmong": range(123136, 123216), + "Toto": range(123536, 123584), + "Wancho": range(123584, 123648), + "Nag Mundari": range(124112, 124160), + "Ethiopic Extended-B": range(124896, 124928), + "Mende Kikakui": range(124928, 125152), + "Adlam": range(125184, 125280), + "Indic Siyaq Numbers": range(126064, 126144), + "Ottoman Siyaq Numbers": range(126208, 126288), + "Arabic Mathematical Alphabetic Symbols": range(126464, 126720), + "Mahjong Tiles": range(126976, 127024), + "Domino Tiles": range(127024, 127136), + "Playing Cards": range(127136, 127232), + "Enclosed Alphanumeric Supplement": range(127232, 127488), + "Enclosed Ideographic Supplement": range(127488, 127744), + "Miscellaneous Symbols and Pictographs": range(127744, 128512), + "Emoticons range(Emoji)": range(128512, 128592), + "Ornamental Dingbats": range(128592, 128640), + "Transport and Map Symbols": range(128640, 128768), + "Alchemical Symbols": range(128768, 128896), + "Geometric Shapes Extended": range(128896, 129024), + "Supplemental Arrows-C": range(129024, 129280), + "Supplemental Symbols and Pictographs": range(129280, 129536), + "Chess Symbols": range(129536, 129648), + "Symbols and Pictographs Extended-A": range(129648, 129792), + "Symbols for Legacy Computing": range(129792, 130048), + "CJK Unified Ideographs Extension B": range(131072, 173792), + "CJK Unified Ideographs Extension C": range(173824, 177984), + "CJK Unified Ideographs Extension D": range(177984, 178208), + "CJK Unified Ideographs Extension E": range(178208, 183984), + "CJK Unified Ideographs Extension F": range(183984, 191472), + "CJK Compatibility Ideographs Supplement": range(194560, 195104), + "CJK Unified Ideographs Extension G": range(196608, 201552), + "CJK Unified Ideographs Extension H": range(201552, 205744), + "Tags": range(917504, 917632), + "Variation Selectors Supplement": range(917760, 918000), + "Supplementary Private Use Area-A": range(983040, 1048576), + "Supplementary Private Use Area-B": range(1048576, 1114112), +} + + +UNICODE_SECONDARY_RANGE_KEYWORD: List[str] = [ + "Supplement", + "Extended", + "Extensions", + "Modifier", + "Marks", + "Punctuation", + "Symbols", + "Forms", + "Operators", + "Miscellaneous", + "Drawing", + "Block", + "Shapes", + "Supplemental", + "Tags", +] + +RE_POSSIBLE_ENCODING_INDICATION = re_compile( + r"(?:(?:encoding)|(?:charset)|(?:coding))(?:[\:= ]{1,10})(?:[\"\']?)([a-zA-Z0-9\-_]+)(?:[\"\']?)", + IGNORECASE, +) + +IANA_NO_ALIASES = [ + "cp720", + "cp737", + "cp856", + "cp874", + "cp875", + "cp1006", + "koi8_r", + "koi8_t", + "koi8_u", +] + +IANA_SUPPORTED: List[str] = sorted( + filter( + lambda x: x.endswith("_codec") is False + and x not in {"rot_13", "tactis", "mbcs"}, + list(set(aliases.values())) + IANA_NO_ALIASES, + ) +) + +IANA_SUPPORTED_COUNT: int = len(IANA_SUPPORTED) + +# pre-computed code page that are similar using the function cp_similarity. +IANA_SUPPORTED_SIMILAR: Dict[str, List[str]] = { + "cp037": ["cp1026", "cp1140", "cp273", "cp500"], + "cp1026": ["cp037", "cp1140", "cp273", "cp500"], + "cp1125": ["cp866"], + "cp1140": ["cp037", "cp1026", "cp273", "cp500"], + "cp1250": ["iso8859_2"], + "cp1251": ["kz1048", "ptcp154"], + "cp1252": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1253": ["iso8859_7"], + "cp1254": ["iso8859_15", "iso8859_9", "latin_1"], + "cp1257": ["iso8859_13"], + "cp273": ["cp037", "cp1026", "cp1140", "cp500"], + "cp437": ["cp850", "cp858", "cp860", "cp861", "cp862", "cp863", "cp865"], + "cp500": ["cp037", "cp1026", "cp1140", "cp273"], + "cp850": ["cp437", "cp857", "cp858", "cp865"], + "cp857": ["cp850", "cp858", "cp865"], + "cp858": ["cp437", "cp850", "cp857", "cp865"], + "cp860": ["cp437", "cp861", "cp862", "cp863", "cp865"], + "cp861": ["cp437", "cp860", "cp862", "cp863", "cp865"], + "cp862": ["cp437", "cp860", "cp861", "cp863", "cp865"], + "cp863": ["cp437", "cp860", "cp861", "cp862", "cp865"], + "cp865": ["cp437", "cp850", "cp857", "cp858", "cp860", "cp861", "cp862", "cp863"], + "cp866": ["cp1125"], + "iso8859_10": ["iso8859_14", "iso8859_15", "iso8859_4", "iso8859_9", "latin_1"], + "iso8859_11": ["tis_620"], + "iso8859_13": ["cp1257"], + "iso8859_14": [ + "iso8859_10", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_15": [ + "cp1252", + "cp1254", + "iso8859_10", + "iso8859_14", + "iso8859_16", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_16": [ + "iso8859_14", + "iso8859_15", + "iso8859_2", + "iso8859_3", + "iso8859_9", + "latin_1", + ], + "iso8859_2": ["cp1250", "iso8859_16", "iso8859_4"], + "iso8859_3": ["iso8859_14", "iso8859_15", "iso8859_16", "iso8859_9", "latin_1"], + "iso8859_4": ["iso8859_10", "iso8859_2", "iso8859_9", "latin_1"], + "iso8859_7": ["cp1253"], + "iso8859_9": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "latin_1", + ], + "kz1048": ["cp1251", "ptcp154"], + "latin_1": [ + "cp1252", + "cp1254", + "cp1258", + "iso8859_10", + "iso8859_14", + "iso8859_15", + "iso8859_16", + "iso8859_3", + "iso8859_4", + "iso8859_9", + ], + "mac_iceland": ["mac_roman", "mac_turkish"], + "mac_roman": ["mac_iceland", "mac_turkish"], + "mac_turkish": ["mac_iceland", "mac_roman"], + "ptcp154": ["cp1251", "kz1048"], + "tis_620": ["iso8859_11"], +} + + +CHARDET_CORRESPONDENCE: Dict[str, str] = { + "iso2022_kr": "ISO-2022-KR", + "iso2022_jp": "ISO-2022-JP", + "euc_kr": "EUC-KR", + "tis_620": "TIS-620", + "utf_32": "UTF-32", + "euc_jp": "EUC-JP", + "koi8_r": "KOI8-R", + "iso8859_1": "ISO-8859-1", + "iso8859_2": "ISO-8859-2", + "iso8859_5": "ISO-8859-5", + "iso8859_6": "ISO-8859-6", + "iso8859_7": "ISO-8859-7", + "iso8859_8": "ISO-8859-8", + "utf_16": "UTF-16", + "cp855": "IBM855", + "mac_cyrillic": "MacCyrillic", + "gb2312": "GB2312", + "gb18030": "GB18030", + "cp932": "CP932", + "cp866": "IBM866", + "utf_8": "utf-8", + "utf_8_sig": "UTF-8-SIG", + "shift_jis": "SHIFT_JIS", + "big5": "Big5", + "cp1250": "windows-1250", + "cp1251": "windows-1251", + "cp1252": "Windows-1252", + "cp1253": "windows-1253", + "cp1255": "windows-1255", + "cp1256": "windows-1256", + "cp1254": "Windows-1254", + "cp949": "CP949", +} + + +COMMON_SAFE_ASCII_CHARACTERS: Set[str] = { + "<", + ">", + "=", + ":", + "/", + "&", + ";", + "{", + "}", + "[", + "]", + ",", + "|", + '"', + "-", +} + + +KO_NAMES: Set[str] = {"johab", "cp949", "euc_kr"} +ZH_NAMES: Set[str] = {"big5", "cp950", "big5hkscs", "hz"} + +# Logging LEVEL below DEBUG +TRACE: int = 5 + + +# Language label that contain the em dash "—" +# character are to be considered alternative seq to origin +FREQUENCIES: Dict[str, List[str]] = { + "English": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "u", + "m", + "f", + "p", + "g", + "w", + "y", + "b", + "v", + "k", + "x", + "j", + "z", + "q", + ], + "English—": [ + "e", + "a", + "t", + "i", + "o", + "n", + "s", + "r", + "h", + "l", + "d", + "c", + "m", + "u", + "f", + "p", + "g", + "w", + "b", + "y", + "v", + "k", + "j", + "x", + "z", + "q", + ], + "German": [ + "e", + "n", + "i", + "r", + "s", + "t", + "a", + "d", + "h", + "u", + "l", + "g", + "o", + "c", + "m", + "b", + "f", + "k", + "w", + "z", + "p", + "v", + "ü", + "ä", + "ö", + "j", + ], + "French": [ + "e", + "a", + "s", + "n", + "i", + "t", + "r", + "l", + "u", + "o", + "d", + "c", + "p", + "m", + "é", + "v", + "g", + "f", + "b", + "h", + "q", + "à", + "x", + "è", + "y", + "j", + ], + "Dutch": [ + "e", + "n", + "a", + "i", + "r", + "t", + "o", + "d", + "s", + "l", + "g", + "h", + "v", + "m", + "u", + "k", + "c", + "p", + "b", + "w", + "j", + "z", + "f", + "y", + "x", + "ë", + ], + "Italian": [ + "e", + "i", + "a", + "o", + "n", + "l", + "t", + "r", + "s", + "c", + "d", + "u", + "p", + "m", + "g", + "v", + "f", + "b", + "z", + "h", + "q", + "è", + "à", + "k", + "y", + "ò", + ], + "Polish": [ + "a", + "i", + "o", + "e", + "n", + "r", + "z", + "w", + "s", + "c", + "t", + "k", + "y", + "d", + "p", + "m", + "u", + "l", + "j", + "ł", + "g", + "b", + "h", + "ą", + "ę", + "ó", + ], + "Spanish": [ + "e", + "a", + "o", + "n", + "s", + "r", + "i", + "l", + "d", + "t", + "c", + "u", + "m", + "p", + "b", + "g", + "v", + "f", + "y", + "ó", + "h", + "q", + "í", + "j", + "z", + "á", + ], + "Russian": [ + "о", + "а", + "е", + "и", + "н", + "с", + "т", + "р", + "в", + "л", + "к", + "м", + "д", + "п", + "у", + "г", + "я", + "ы", + "з", + "б", + "й", + "ь", + "ч", + "х", + "ж", + "ц", + ], + # Jap-Kanji + "Japanese": [ + "人", + "一", + "大", + "亅", + "丁", + "丨", + "竹", + "笑", + "口", + "日", + "今", + "二", + "彳", + "行", + "十", + "土", + "丶", + "寸", + "寺", + "時", + "乙", + "丿", + "乂", + "气", + "気", + "冂", + "巾", + "亠", + "市", + "目", + "儿", + "見", + "八", + "小", + "凵", + "県", + "月", + "彐", + "門", + "間", + "木", + "東", + "山", + "出", + "本", + "中", + "刀", + "分", + "耳", + "又", + "取", + "最", + "言", + "田", + "心", + "思", + "刂", + "前", + "京", + "尹", + "事", + "生", + "厶", + "云", + "会", + "未", + "来", + "白", + "冫", + "楽", + "灬", + "馬", + "尸", + "尺", + "駅", + "明", + "耂", + "者", + "了", + "阝", + "都", + "高", + "卜", + "占", + "厂", + "广", + "店", + "子", + "申", + "奄", + "亻", + "俺", + "上", + "方", + "冖", + "学", + "衣", + "艮", + "食", + "自", + ], + # Jap-Katakana + "Japanese—": [ + "ー", + "ン", + "ス", + "・", + "ル", + "ト", + "リ", + "イ", + "ア", + "ラ", + "ッ", + "ク", + "ド", + "シ", + "レ", + "ジ", + "タ", + "フ", + "ロ", + "カ", + "テ", + "マ", + "ィ", + "グ", + "バ", + "ム", + "プ", + "オ", + "コ", + "デ", + "ニ", + "ウ", + "メ", + "サ", + "ビ", + "ナ", + "ブ", + "ャ", + "エ", + "ュ", + "チ", + "キ", + "ズ", + "ダ", + "パ", + "ミ", + "ェ", + "ョ", + "ハ", + "セ", + "ベ", + "ガ", + "モ", + "ツ", + "ネ", + "ボ", + "ソ", + "ノ", + "ァ", + "ヴ", + "ワ", + "ポ", + "ペ", + "ピ", + "ケ", + "ゴ", + "ギ", + "ザ", + "ホ", + "ゲ", + "ォ", + "ヤ", + "ヒ", + "ユ", + "ヨ", + "ヘ", + "ゼ", + "ヌ", + "ゥ", + "ゾ", + "ヶ", + "ヂ", + "ヲ", + "ヅ", + "ヵ", + "ヱ", + "ヰ", + "ヮ", + "ヽ", + "゠", + "ヾ", + "ヷ", + "ヿ", + "ヸ", + "ヹ", + "ヺ", + ], + # Jap-Hiragana + "Japanese——": [ + "の", + "に", + "る", + "た", + "と", + "は", + "し", + "い", + "を", + "で", + "て", + "が", + "な", + "れ", + "か", + "ら", + "さ", + "っ", + "り", + "す", + "あ", + "も", + "こ", + "ま", + "う", + "く", + "よ", + "き", + "ん", + "め", + "お", + "け", + "そ", + "つ", + "だ", + "や", + "え", + "ど", + "わ", + "ち", + "み", + "せ", + "じ", + "ば", + "へ", + "び", + "ず", + "ろ", + "ほ", + "げ", + "む", + "べ", + "ひ", + "ょ", + "ゆ", + "ぶ", + "ご", + "ゃ", + "ね", + "ふ", + "ぐ", + "ぎ", + "ぼ", + "ゅ", + "づ", + "ざ", + "ぞ", + "ぬ", + "ぜ", + "ぱ", + "ぽ", + "ぷ", + "ぴ", + "ぃ", + "ぁ", + "ぇ", + "ぺ", + "ゞ", + "ぢ", + "ぉ", + "ぅ", + "ゐ", + "ゝ", + "ゑ", + "゛", + "゜", + "ゎ", + "ゔ", + "゚", + "ゟ", + "゙", + "ゕ", + "ゖ", + ], + "Portuguese": [ + "a", + "e", + "o", + "s", + "i", + "r", + "d", + "n", + "t", + "m", + "u", + "c", + "l", + "p", + "g", + "v", + "b", + "f", + "h", + "ã", + "q", + "é", + "ç", + "á", + "z", + "í", + ], + "Swedish": [ + "e", + "a", + "n", + "r", + "t", + "s", + "i", + "l", + "d", + "o", + "m", + "k", + "g", + "v", + "h", + "f", + "u", + "p", + "ä", + "c", + "b", + "ö", + "å", + "y", + "j", + "x", + ], + "Chinese": [ + "的", + "一", + "是", + "不", + "了", + "在", + "人", + "有", + "我", + "他", + "这", + "个", + "们", + "中", + "来", + "上", + "大", + "为", + "和", + "国", + "地", + "到", + "以", + "说", + "时", + "要", + "就", + "出", + "会", + "可", + "也", + "你", + "对", + "生", + "能", + "而", + "子", + "那", + "得", + "于", + "着", + "下", + "自", + "之", + "年", + "过", + "发", + "后", + "作", + "里", + "用", + "道", + "行", + "所", + "然", + "家", + "种", + "事", + "成", + "方", + "多", + "经", + "么", + "去", + "法", + "学", + "如", + "都", + "同", + "现", + "当", + "没", + "动", + "面", + "起", + "看", + "定", + "天", + "分", + "还", + "进", + "好", + "小", + "部", + "其", + "些", + "主", + "样", + "理", + "心", + "她", + "本", + "前", + "开", + "但", + "因", + "只", + "从", + "想", + "实", + ], + "Ukrainian": [ + "о", + "а", + "н", + "і", + "и", + "р", + "в", + "т", + "е", + "с", + "к", + "л", + "у", + "д", + "м", + "п", + "з", + "я", + "ь", + "б", + "г", + "й", + "ч", + "х", + "ц", + "ї", + ], + "Norwegian": [ + "e", + "r", + "n", + "t", + "a", + "s", + "i", + "o", + "l", + "d", + "g", + "k", + "m", + "v", + "f", + "p", + "u", + "b", + "h", + "å", + "y", + "j", + "ø", + "c", + "æ", + "w", + ], + "Finnish": [ + "a", + "i", + "n", + "t", + "e", + "s", + "l", + "o", + "u", + "k", + "ä", + "m", + "r", + "v", + "j", + "h", + "p", + "y", + "d", + "ö", + "g", + "c", + "b", + "f", + "w", + "z", + ], + "Vietnamese": [ + "n", + "h", + "t", + "i", + "c", + "g", + "a", + "o", + "u", + "m", + "l", + "r", + "à", + "đ", + "s", + "e", + "v", + "p", + "b", + "y", + "ư", + "d", + "á", + "k", + "ộ", + "ế", + ], + "Czech": [ + "o", + "e", + "a", + "n", + "t", + "s", + "i", + "l", + "v", + "r", + "k", + "d", + "u", + "m", + "p", + "í", + "c", + "h", + "z", + "á", + "y", + "j", + "b", + "ě", + "é", + "ř", + ], + "Hungarian": [ + "e", + "a", + "t", + "l", + "s", + "n", + "k", + "r", + "i", + "o", + "z", + "á", + "é", + "g", + "m", + "b", + "y", + "v", + "d", + "h", + "u", + "p", + "j", + "ö", + "f", + "c", + ], + "Korean": [ + "이", + "다", + "에", + "의", + "는", + "로", + "하", + "을", + "가", + "고", + "지", + "서", + "한", + "은", + "기", + "으", + "년", + "대", + "사", + "시", + "를", + "리", + "도", + "인", + "스", + "일", + ], + "Indonesian": [ + "a", + "n", + "e", + "i", + "r", + "t", + "u", + "s", + "d", + "k", + "m", + "l", + "g", + "p", + "b", + "o", + "h", + "y", + "j", + "c", + "w", + "f", + "v", + "z", + "x", + "q", + ], + "Turkish": [ + "a", + "e", + "i", + "n", + "r", + "l", + "ı", + "k", + "d", + "t", + "s", + "m", + "y", + "u", + "o", + "b", + "ü", + "ş", + "v", + "g", + "z", + "h", + "c", + "p", + "ç", + "ğ", + ], + "Romanian": [ + "e", + "i", + "a", + "r", + "n", + "t", + "u", + "l", + "o", + "c", + "s", + "d", + "p", + "m", + "ă", + "f", + "v", + "î", + "g", + "b", + "ș", + "ț", + "z", + "h", + "â", + "j", + ], + "Farsi": [ + "ا", + "ی", + "ر", + "د", + "ن", + "ه", + "و", + "م", + "ت", + "ب", + "س", + "ل", + "ک", + "ش", + "ز", + "ف", + "گ", + "ع", + "خ", + "ق", + "ج", + "آ", + "پ", + "ح", + "ط", + "ص", + ], + "Arabic": [ + "ا", + "ل", + "ي", + "م", + "و", + "ن", + "ر", + "ت", + "ب", + "ة", + "ع", + "د", + "س", + "ف", + "ه", + "ك", + "ق", + "أ", + "ح", + "ج", + "ش", + "ط", + "ص", + "ى", + "خ", + "إ", + ], + "Danish": [ + "e", + "r", + "n", + "t", + "a", + "i", + "s", + "d", + "l", + "o", + "g", + "m", + "k", + "f", + "v", + "u", + "b", + "h", + "p", + "å", + "y", + "ø", + "æ", + "c", + "j", + "w", + ], + "Serbian": [ + "а", + "и", + "о", + "е", + "н", + "р", + "с", + "у", + "т", + "к", + "ј", + "в", + "д", + "м", + "п", + "л", + "г", + "з", + "б", + "a", + "i", + "e", + "o", + "n", + "ц", + "ш", + ], + "Lithuanian": [ + "i", + "a", + "s", + "o", + "r", + "e", + "t", + "n", + "u", + "k", + "m", + "l", + "p", + "v", + "d", + "j", + "g", + "ė", + "b", + "y", + "ų", + "š", + "ž", + "c", + "ą", + "į", + ], + "Slovene": [ + "e", + "a", + "i", + "o", + "n", + "r", + "s", + "l", + "t", + "j", + "v", + "k", + "d", + "p", + "m", + "u", + "z", + "b", + "g", + "h", + "č", + "c", + "š", + "ž", + "f", + "y", + ], + "Slovak": [ + "o", + "a", + "e", + "n", + "i", + "r", + "v", + "t", + "s", + "l", + "k", + "d", + "m", + "p", + "u", + "c", + "h", + "j", + "b", + "z", + "á", + "y", + "ý", + "í", + "č", + "é", + ], + "Hebrew": [ + "י", + "ו", + "ה", + "ל", + "ר", + "ב", + "ת", + "מ", + "א", + "ש", + "נ", + "ע", + "ם", + "ד", + "ק", + "ח", + "פ", + "ס", + "כ", + "ג", + "ט", + "צ", + "ן", + "ז", + "ך", + ], + "Bulgarian": [ + "а", + "и", + "о", + "е", + "н", + "т", + "р", + "с", + "в", + "л", + "к", + "д", + "п", + "м", + "з", + "г", + "я", + "ъ", + "у", + "б", + "ч", + "ц", + "й", + "ж", + "щ", + "х", + ], + "Croatian": [ + "a", + "i", + "o", + "e", + "n", + "r", + "j", + "s", + "t", + "u", + "k", + "l", + "v", + "d", + "m", + "p", + "g", + "z", + "b", + "c", + "č", + "h", + "š", + "ž", + "ć", + "f", + ], + "Hindi": [ + "क", + "र", + "स", + "न", + "त", + "म", + "ह", + "प", + "य", + "ल", + "व", + "ज", + "द", + "ग", + "ब", + "श", + "ट", + "अ", + "ए", + "थ", + "भ", + "ड", + "च", + "ध", + "ष", + "इ", + ], + "Estonian": [ + "a", + "i", + "e", + "s", + "t", + "l", + "u", + "n", + "o", + "k", + "r", + "d", + "m", + "v", + "g", + "p", + "j", + "h", + "ä", + "b", + "õ", + "ü", + "f", + "c", + "ö", + "y", + ], + "Thai": [ + "า", + "น", + "ร", + "อ", + "ก", + "เ", + "ง", + "ม", + "ย", + "ล", + "ว", + "ด", + "ท", + "ส", + "ต", + "ะ", + "ป", + "บ", + "ค", + "ห", + "แ", + "จ", + "พ", + "ช", + "ข", + "ใ", + ], + "Greek": [ + "α", + "τ", + "ο", + "ι", + "ε", + "ν", + "ρ", + "σ", + "κ", + "η", + "π", + "ς", + "υ", + "μ", + "λ", + "ί", + "ό", + "ά", + "γ", + "έ", + "δ", + "ή", + "ω", + "χ", + "θ", + "ύ", + ], + "Tamil": [ + "க", + "த", + "ப", + "ட", + "ர", + "ம", + "ல", + "ன", + "வ", + "ற", + "ய", + "ள", + "ச", + "ந", + "இ", + "ண", + "அ", + "ஆ", + "ழ", + "ங", + "எ", + "உ", + "ஒ", + "ஸ", + ], + "Kazakh": [ + "а", + "ы", + "е", + "н", + "т", + "р", + "л", + "і", + "д", + "с", + "м", + "қ", + "к", + "о", + "б", + "и", + "у", + "ғ", + "ж", + "ң", + "з", + "ш", + "й", + "п", + "г", + "ө", + ], +} + +LANGUAGE_SUPPORTED_COUNT: int = len(FREQUENCIES) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py b/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py new file mode 100644 index 0000000..43aad21 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/legacy.py @@ -0,0 +1,54 @@ +from typing import Any, Dict, Optional, Union +from warnings import warn + +from .api import from_bytes +from .constant import CHARDET_CORRESPONDENCE + + +def detect( + byte_str: bytes, should_rename_legacy: bool = False, **kwargs: Any +) -> Dict[str, Optional[Union[str, float]]]: + """ + chardet legacy method + Detect the encoding of the given byte string. It should be mostly backward-compatible. + Encoding name will match Chardet own writing whenever possible. (Not on encoding name unsupported by it) + This function is deprecated and should be used to migrate your project easily, consult the documentation for + further information. Not planned for removal. + + :param byte_str: The byte sequence to examine. + :param should_rename_legacy: Should we rename legacy encodings + to their more modern equivalents? + """ + if len(kwargs): + warn( + f"charset-normalizer disregard arguments '{','.join(list(kwargs.keys()))}' in legacy function detect()" + ) + + if not isinstance(byte_str, (bytearray, bytes)): + raise TypeError( # pragma: nocover + "Expected object of type bytes or bytearray, got: " + "{0}".format(type(byte_str)) + ) + + if isinstance(byte_str, bytearray): + byte_str = bytes(byte_str) + + r = from_bytes(byte_str).best() + + encoding = r.encoding if r is not None else None + language = r.language if r is not None and r.language != "Unknown" else "" + confidence = 1.0 - r.chaos if r is not None else None + + # Note: CharsetNormalizer does not return 'UTF-8-SIG' as the sig get stripped in the detection/normalization process + # but chardet does return 'utf-8-sig' and it is a valid codec name. + if r is not None and encoding == "utf_8" and r.bom: + encoding += "_sig" + + if should_rename_legacy is False and encoding in CHARDET_CORRESPONDENCE: + encoding = CHARDET_CORRESPONDENCE[encoding] + + return { + "encoding": encoding, + "language": language, + "confidence": confidence, + } diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so b/venv/lib/python3.12/site-packages/charset_normalizer/md.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..3d0b46ae77baa966a03418d61fbd1da9d141366e GIT binary patch literal 16064 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/md.py b/venv/lib/python3.12/site-packages/charset_normalizer/md.py new file mode 100644 index 0000000..77897aa --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/md.py @@ -0,0 +1,615 @@ +from functools import lru_cache +from logging import getLogger +from typing import List, Optional + +from .constant import ( + COMMON_SAFE_ASCII_CHARACTERS, + TRACE, + UNICODE_SECONDARY_RANGE_KEYWORD, +) +from .utils import ( + is_accentuated, + is_arabic, + is_arabic_isolated_form, + is_case_variable, + is_cjk, + is_emoticon, + is_hangul, + is_hiragana, + is_katakana, + is_latin, + is_punctuation, + is_separator, + is_symbol, + is_thai, + is_unprintable, + remove_accent, + unicode_range, +) + + +class MessDetectorPlugin: + """ + Base abstract class used for mess detection plugins. + All detectors MUST extend and implement given methods. + """ + + def eligible(self, character: str) -> bool: + """ + Determine if given character should be fed in. + """ + raise NotImplementedError # pragma: nocover + + def feed(self, character: str) -> None: + """ + The main routine to be executed upon character. + Insert the logic in witch the text would be considered chaotic. + """ + raise NotImplementedError # pragma: nocover + + def reset(self) -> None: # pragma: no cover + """ + Permit to reset the plugin to the initial state. + """ + raise NotImplementedError + + @property + def ratio(self) -> float: + """ + Compute the chaos ratio based on what your feed() has seen. + Must NOT be lower than 0.; No restriction gt 0. + """ + raise NotImplementedError # pragma: nocover + + +class TooManySymbolOrPunctuationPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._punctuation_count: int = 0 + self._symbol_count: int = 0 + self._character_count: int = 0 + + self._last_printable_char: Optional[str] = None + self._frenzy_symbol_in_word: bool = False + + def eligible(self, character: str) -> bool: + return character.isprintable() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if ( + character != self._last_printable_char + and character not in COMMON_SAFE_ASCII_CHARACTERS + ): + if is_punctuation(character): + self._punctuation_count += 1 + elif ( + character.isdigit() is False + and is_symbol(character) + and is_emoticon(character) is False + ): + self._symbol_count += 2 + + self._last_printable_char = character + + def reset(self) -> None: # pragma: no cover + self._punctuation_count = 0 + self._character_count = 0 + self._symbol_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + ratio_of_punctuation: float = ( + self._punctuation_count + self._symbol_count + ) / self._character_count + + return ratio_of_punctuation if ratio_of_punctuation >= 0.3 else 0.0 + + +class TooManyAccentuatedPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._character_count: int = 0 + self._accentuated_count: int = 0 + + def eligible(self, character: str) -> bool: + return character.isalpha() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if is_accentuated(character): + self._accentuated_count += 1 + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._accentuated_count = 0 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + ratio_of_accentuation: float = self._accentuated_count / self._character_count + return ratio_of_accentuation if ratio_of_accentuation >= 0.35 else 0.0 + + +class UnprintablePlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._unprintable_count: int = 0 + self._character_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if is_unprintable(character): + self._unprintable_count += 1 + self._character_count += 1 + + def reset(self) -> None: # pragma: no cover + self._unprintable_count = 0 + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._unprintable_count * 8) / self._character_count + + +class SuspiciousDuplicateAccentPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._successive_count: int = 0 + self._character_count: int = 0 + + self._last_latin_character: Optional[str] = None + + def eligible(self, character: str) -> bool: + return character.isalpha() and is_latin(character) + + def feed(self, character: str) -> None: + self._character_count += 1 + if ( + self._last_latin_character is not None + and is_accentuated(character) + and is_accentuated(self._last_latin_character) + ): + if character.isupper() and self._last_latin_character.isupper(): + self._successive_count += 1 + # Worse if its the same char duplicated with different accent. + if remove_accent(character) == remove_accent(self._last_latin_character): + self._successive_count += 1 + self._last_latin_character = character + + def reset(self) -> None: # pragma: no cover + self._successive_count = 0 + self._character_count = 0 + self._last_latin_character = None + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return (self._successive_count * 2) / self._character_count + + +class SuspiciousRange(MessDetectorPlugin): + def __init__(self) -> None: + self._suspicious_successive_range_count: int = 0 + self._character_count: int = 0 + self._last_printable_seen: Optional[str] = None + + def eligible(self, character: str) -> bool: + return character.isprintable() + + def feed(self, character: str) -> None: + self._character_count += 1 + + if ( + character.isspace() + or is_punctuation(character) + or character in COMMON_SAFE_ASCII_CHARACTERS + ): + self._last_printable_seen = None + return + + if self._last_printable_seen is None: + self._last_printable_seen = character + return + + unicode_range_a: Optional[str] = unicode_range(self._last_printable_seen) + unicode_range_b: Optional[str] = unicode_range(character) + + if is_suspiciously_successive_range(unicode_range_a, unicode_range_b): + self._suspicious_successive_range_count += 1 + + self._last_printable_seen = character + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._suspicious_successive_range_count = 0 + self._last_printable_seen = None + + @property + def ratio(self) -> float: + if self._character_count <= 24: + return 0.0 + + ratio_of_suspicious_range_usage: float = ( + self._suspicious_successive_range_count * 2 + ) / self._character_count + + return ratio_of_suspicious_range_usage + + +class SuperWeirdWordPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._word_count: int = 0 + self._bad_word_count: int = 0 + self._foreign_long_count: int = 0 + + self._is_current_word_bad: bool = False + self._foreign_long_watch: bool = False + + self._character_count: int = 0 + self._bad_character_count: int = 0 + + self._buffer: str = "" + self._buffer_accent_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if character.isalpha(): + self._buffer += character + if is_accentuated(character): + self._buffer_accent_count += 1 + if ( + self._foreign_long_watch is False + and (is_latin(character) is False or is_accentuated(character)) + and is_cjk(character) is False + and is_hangul(character) is False + and is_katakana(character) is False + and is_hiragana(character) is False + and is_thai(character) is False + ): + self._foreign_long_watch = True + return + if not self._buffer: + return + if ( + character.isspace() or is_punctuation(character) or is_separator(character) + ) and self._buffer: + self._word_count += 1 + buffer_length: int = len(self._buffer) + + self._character_count += buffer_length + + if buffer_length >= 4: + if self._buffer_accent_count / buffer_length > 0.34: + self._is_current_word_bad = True + # Word/Buffer ending with an upper case accentuated letter are so rare, + # that we will consider them all as suspicious. Same weight as foreign_long suspicious. + if ( + is_accentuated(self._buffer[-1]) + and self._buffer[-1].isupper() + and all(_.isupper() for _ in self._buffer) is False + ): + self._foreign_long_count += 1 + self._is_current_word_bad = True + if buffer_length >= 24 and self._foreign_long_watch: + camel_case_dst = [ + i + for c, i in zip(self._buffer, range(0, buffer_length)) + if c.isupper() + ] + probable_camel_cased: bool = False + + if camel_case_dst and (len(camel_case_dst) / buffer_length <= 0.3): + probable_camel_cased = True + + if not probable_camel_cased: + self._foreign_long_count += 1 + self._is_current_word_bad = True + + if self._is_current_word_bad: + self._bad_word_count += 1 + self._bad_character_count += len(self._buffer) + self._is_current_word_bad = False + + self._foreign_long_watch = False + self._buffer = "" + self._buffer_accent_count = 0 + elif ( + character not in {"<", ">", "-", "=", "~", "|", "_"} + and character.isdigit() is False + and is_symbol(character) + ): + self._is_current_word_bad = True + self._buffer += character + + def reset(self) -> None: # pragma: no cover + self._buffer = "" + self._is_current_word_bad = False + self._foreign_long_watch = False + self._bad_word_count = 0 + self._word_count = 0 + self._character_count = 0 + self._bad_character_count = 0 + self._foreign_long_count = 0 + + @property + def ratio(self) -> float: + if self._word_count <= 10 and self._foreign_long_count == 0: + return 0.0 + + return self._bad_character_count / self._character_count + + +class CjkInvalidStopPlugin(MessDetectorPlugin): + """ + GB(Chinese) based encoding often render the stop incorrectly when the content does not fit and + can be easily detected. Searching for the overuse of '丅' and '丄'. + """ + + def __init__(self) -> None: + self._wrong_stop_count: int = 0 + self._cjk_character_count: int = 0 + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + if character in {"丅", "丄"}: + self._wrong_stop_count += 1 + return + if is_cjk(character): + self._cjk_character_count += 1 + + def reset(self) -> None: # pragma: no cover + self._wrong_stop_count = 0 + self._cjk_character_count = 0 + + @property + def ratio(self) -> float: + if self._cjk_character_count < 16: + return 0.0 + return self._wrong_stop_count / self._cjk_character_count + + +class ArchaicUpperLowerPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._buf: bool = False + + self._character_count_since_last_sep: int = 0 + + self._successive_upper_lower_count: int = 0 + self._successive_upper_lower_count_final: int = 0 + + self._character_count: int = 0 + + self._last_alpha_seen: Optional[str] = None + self._current_ascii_only: bool = True + + def eligible(self, character: str) -> bool: + return True + + def feed(self, character: str) -> None: + is_concerned = character.isalpha() and is_case_variable(character) + chunk_sep = is_concerned is False + + if chunk_sep and self._character_count_since_last_sep > 0: + if ( + self._character_count_since_last_sep <= 64 + and character.isdigit() is False + and self._current_ascii_only is False + ): + self._successive_upper_lower_count_final += ( + self._successive_upper_lower_count + ) + + self._successive_upper_lower_count = 0 + self._character_count_since_last_sep = 0 + self._last_alpha_seen = None + self._buf = False + self._character_count += 1 + self._current_ascii_only = True + + return + + if self._current_ascii_only is True and character.isascii() is False: + self._current_ascii_only = False + + if self._last_alpha_seen is not None: + if (character.isupper() and self._last_alpha_seen.islower()) or ( + character.islower() and self._last_alpha_seen.isupper() + ): + if self._buf is True: + self._successive_upper_lower_count += 2 + self._buf = False + else: + self._buf = True + else: + self._buf = False + + self._character_count += 1 + self._character_count_since_last_sep += 1 + self._last_alpha_seen = character + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._character_count_since_last_sep = 0 + self._successive_upper_lower_count = 0 + self._successive_upper_lower_count_final = 0 + self._last_alpha_seen = None + self._buf = False + self._current_ascii_only = True + + @property + def ratio(self) -> float: + if self._character_count == 0: + return 0.0 + + return self._successive_upper_lower_count_final / self._character_count + + +class ArabicIsolatedFormPlugin(MessDetectorPlugin): + def __init__(self) -> None: + self._character_count: int = 0 + self._isolated_form_count: int = 0 + + def reset(self) -> None: # pragma: no cover + self._character_count = 0 + self._isolated_form_count = 0 + + def eligible(self, character: str) -> bool: + return is_arabic(character) + + def feed(self, character: str) -> None: + self._character_count += 1 + + if is_arabic_isolated_form(character): + self._isolated_form_count += 1 + + @property + def ratio(self) -> float: + if self._character_count < 8: + return 0.0 + + isolated_form_usage: float = self._isolated_form_count / self._character_count + + return isolated_form_usage + + +@lru_cache(maxsize=1024) +def is_suspiciously_successive_range( + unicode_range_a: Optional[str], unicode_range_b: Optional[str] +) -> bool: + """ + Determine if two Unicode range seen next to each other can be considered as suspicious. + """ + if unicode_range_a is None or unicode_range_b is None: + return True + + if unicode_range_a == unicode_range_b: + return False + + if "Latin" in unicode_range_a and "Latin" in unicode_range_b: + return False + + if "Emoticons" in unicode_range_a or "Emoticons" in unicode_range_b: + return False + + # Latin characters can be accompanied with a combining diacritical mark + # eg. Vietnamese. + if ("Latin" in unicode_range_a or "Latin" in unicode_range_b) and ( + "Combining" in unicode_range_a or "Combining" in unicode_range_b + ): + return False + + keywords_range_a, keywords_range_b = unicode_range_a.split( + " " + ), unicode_range_b.split(" ") + + for el in keywords_range_a: + if el in UNICODE_SECONDARY_RANGE_KEYWORD: + continue + if el in keywords_range_b: + return False + + # Japanese Exception + range_a_jp_chars, range_b_jp_chars = ( + unicode_range_a + in ( + "Hiragana", + "Katakana", + ), + unicode_range_b in ("Hiragana", "Katakana"), + ) + if (range_a_jp_chars or range_b_jp_chars) and ( + "CJK" in unicode_range_a or "CJK" in unicode_range_b + ): + return False + if range_a_jp_chars and range_b_jp_chars: + return False + + if "Hangul" in unicode_range_a or "Hangul" in unicode_range_b: + if "CJK" in unicode_range_a or "CJK" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + # Chinese/Japanese use dedicated range for punctuation and/or separators. + if ("CJK" in unicode_range_a or "CJK" in unicode_range_b) or ( + unicode_range_a in ["Katakana", "Hiragana"] + and unicode_range_b in ["Katakana", "Hiragana"] + ): + if "Punctuation" in unicode_range_a or "Punctuation" in unicode_range_b: + return False + if "Forms" in unicode_range_a or "Forms" in unicode_range_b: + return False + if unicode_range_a == "Basic Latin" or unicode_range_b == "Basic Latin": + return False + + return True + + +@lru_cache(maxsize=2048) +def mess_ratio( + decoded_sequence: str, maximum_threshold: float = 0.2, debug: bool = False +) -> float: + """ + Compute a mess ratio given a decoded bytes sequence. The maximum threshold does stop the computation earlier. + """ + + detectors: List[MessDetectorPlugin] = [ + md_class() for md_class in MessDetectorPlugin.__subclasses__() + ] + + length: int = len(decoded_sequence) + 1 + + mean_mess_ratio: float = 0.0 + + if length < 512: + intermediary_mean_mess_ratio_calc: int = 32 + elif length <= 1024: + intermediary_mean_mess_ratio_calc = 64 + else: + intermediary_mean_mess_ratio_calc = 128 + + for character, index in zip(decoded_sequence + "\n", range(length)): + for detector in detectors: + if detector.eligible(character): + detector.feed(character) + + if ( + index > 0 and index % intermediary_mean_mess_ratio_calc == 0 + ) or index == length - 1: + mean_mess_ratio = sum(dt.ratio for dt in detectors) + + if mean_mess_ratio >= maximum_threshold: + break + + if debug: + logger = getLogger("charset_normalizer") + + logger.log( + TRACE, + "Mess-detector extended-analysis start. " + f"intermediary_mean_mess_ratio_calc={intermediary_mean_mess_ratio_calc} mean_mess_ratio={mean_mess_ratio} " + f"maximum_threshold={maximum_threshold}", + ) + + if len(decoded_sequence) > 16: + logger.log(TRACE, f"Starting with: {decoded_sequence[:16]}") + logger.log(TRACE, f"Ending with: {decoded_sequence[-16::]}") + + for dt in detectors: # pragma: nocover + logger.log(TRACE, f"{dt.__class__}: {dt.ratio}") + + return round(mean_mess_ratio, 3) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so b/venv/lib/python3.12/site-packages/charset_normalizer/md__mypyc.cpython-312-x86_64-linux-gnu.so new file mode 100755 index 0000000000000000000000000000000000000000..e3044d9abd70dd87a4a1262fa53e3fb0b434d993 GIT binary patch literal 272640 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

Ude%8yZ^!Z|lc9jdo}U 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

GL>E3U8;wWJxulxD51)p=PryE4$P% zs%0}?ob3#fGjRy%k-xeJvTSh;3lozVly=?)q_TonL@g* ze2n|#N#`C9YD2hsvuy^cQJD1JXeTD%k|kwid`C9q{Z%UrPJG_Xl<`Q{lBSvQH+vHy zdzv(c34=Y~8e@g%oWohrO8CC7xI|@RpFX9um+Hz-(a*ut)w!e;PL^)%%P~%33u9S~ z{z6sacdSS6KFW3nWFWWcU}HJ7Ub-!_{xGAb|(*%V&V7?W*&Jr!iBkayi{#PnSt<)&VvkE&*PnX6}*e$J~O%<^aHupDPmdL74; zcKQjQxbT5%>4gvaFXMOST2Gb>xJ|!oR}rUG{w5_k^}duyXxGe~BQRfi$FbbW%`{Zg z?TxKT+Lr0zLPMgtO(Y~wUgovSsQS+pnPJ(jZ_#Z*&z#j%uMszDs{7SFg388N4=xGw zWK8)(U61T(aqzI)32Gzf{C;Vd@;ue27nm&mwhvidp{u)7jO7MiE5efq(}8K*7r9 z1lz2qMGRsQY$9TDC_*|tbB7nmUCvyD1RD#BU=?g^QwBQ=t%F$Dd8CjuLa?y1v9Yi) ze(&d-ot@lCaAEJw%+5D6JM-qv-@CU_&Wf}G>svWdIeKWLT4#9Oaf|{vANiq_He6;a zO}oxW7U70~3VP8cL}e&%nF3B(x22q7+r_>G@h=r6EiOWXv!g`x;UiAImB);TG9l<1r6lqdKS5xlYZ?nsLdI z%3|)fr7I>sE0XpUK0>8Qg<)QHWx6tli~Ib_+=!whhKlbBS7_R{$S=zxt>kB=3D4`4 zVPq>%ocq3_?h8w?4j*!2AkuPUGTK1J;V4BH)+#v;j}(%IH2#rCco`X}NZIaVPY!&j zg(~?@(nQHdv9Z2}^+)s~&P7mUV>FssflahzT!NB^R*NxJ_CB$fLlL&UlBu!) z!6}33BV`M{vf{7;i>lnA7_4_;Z4GpF#b}2voWZw?$GxY8tnyn^i>;u(j+|c=t@R#| zMlq7=6Pclkl3wb0fM+Z1rKSMf)yD+ASQJ@YtjbcW5Uoo*TZXBbW+>VnSFi81fThn6 zrjl<6x&On+m;O{@(7l1pC+s&y4|NKg% zm$G!-++_?c;QDoNuuQyvHXxAJPgv9mN6@}36Ts(t!b#l3Z=SLzq+77VDVO9cmJ5le zy~bIDN!rBAcO2v*{W4{K{+jhe`a*zN+;EVT|5(?ak10cZ+^4*q*vcnTZ}lS`Xa-Bd~G#J3d^gN z%bPQXy@X40VEuxtiU{N54qAAptjCw|}Y`;OoC>O>U1YEDT$!y&v! z{Kjo_ZCp1x^yX*1vE1Z?Jz&%P=kFM9{)W+QBg`)HKhyb|;X}g#vqo=a3`891_Y6<_ z=?~p5`u23pS{=2jH~fHK(qb`dv{U=sLORUIaW$tTKjDz~uQR~uq~kAV;a;7Jkw@as znn)2dj&IymZxA_f50P0M%3rA-mfd37@5Zi$K7$?E^kV)DI}67s{KQ3T@!yQ-G{^r1 DNR#cw literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/models.py b/venv/lib/python3.12/site-packages/charset_normalizer/models.py new file mode 100644 index 0000000..a760b9c --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/models.py @@ -0,0 +1,340 @@ +from encodings.aliases import aliases +from hashlib import sha256 +from json import dumps +from typing import Any, Dict, Iterator, List, Optional, Tuple, Union + +from .constant import TOO_BIG_SEQUENCE +from .utils import iana_name, is_multi_byte_encoding, unicode_range + + +class CharsetMatch: + def __init__( + self, + payload: bytes, + guessed_encoding: str, + mean_mess_ratio: float, + has_sig_or_bom: bool, + languages: "CoherenceMatches", + decoded_payload: Optional[str] = None, + ): + self._payload: bytes = payload + + self._encoding: str = guessed_encoding + self._mean_mess_ratio: float = mean_mess_ratio + self._languages: CoherenceMatches = languages + self._has_sig_or_bom: bool = has_sig_or_bom + self._unicode_ranges: Optional[List[str]] = None + + self._leaves: List[CharsetMatch] = [] + self._mean_coherence_ratio: float = 0.0 + + self._output_payload: Optional[bytes] = None + self._output_encoding: Optional[str] = None + + self._string: Optional[str] = decoded_payload + + def __eq__(self, other: object) -> bool: + if not isinstance(other, CharsetMatch): + raise TypeError( + "__eq__ cannot be invoked on {} and {}.".format( + str(other.__class__), str(self.__class__) + ) + ) + return self.encoding == other.encoding and self.fingerprint == other.fingerprint + + def __lt__(self, other: object) -> bool: + """ + Implemented to make sorted available upon CharsetMatches items. + """ + if not isinstance(other, CharsetMatch): + raise ValueError + + chaos_difference: float = abs(self.chaos - other.chaos) + coherence_difference: float = abs(self.coherence - other.coherence) + + # Below 1% difference --> Use Coherence + if chaos_difference < 0.01 and coherence_difference > 0.02: + return self.coherence > other.coherence + elif chaos_difference < 0.01 and coherence_difference <= 0.02: + # When having a difficult decision, use the result that decoded as many multi-byte as possible. + # preserve RAM usage! + if len(self._payload) >= TOO_BIG_SEQUENCE: + return self.chaos < other.chaos + return self.multi_byte_usage > other.multi_byte_usage + + return self.chaos < other.chaos + + @property + def multi_byte_usage(self) -> float: + return 1.0 - (len(str(self)) / len(self.raw)) + + def __str__(self) -> str: + # Lazy Str Loading + if self._string is None: + self._string = str(self._payload, self._encoding, "strict") + return self._string + + def __repr__(self) -> str: + return "".format(self.encoding, self.fingerprint) + + def add_submatch(self, other: "CharsetMatch") -> None: + if not isinstance(other, CharsetMatch) or other == self: + raise ValueError( + "Unable to add instance <{}> as a submatch of a CharsetMatch".format( + other.__class__ + ) + ) + + other._string = None # Unload RAM usage; dirty trick. + self._leaves.append(other) + + @property + def encoding(self) -> str: + return self._encoding + + @property + def encoding_aliases(self) -> List[str]: + """ + Encoding name are known by many name, using this could help when searching for IBM855 when it's listed as CP855. + """ + also_known_as: List[str] = [] + for u, p in aliases.items(): + if self.encoding == u: + also_known_as.append(p) + elif self.encoding == p: + also_known_as.append(u) + return also_known_as + + @property + def bom(self) -> bool: + return self._has_sig_or_bom + + @property + def byte_order_mark(self) -> bool: + return self._has_sig_or_bom + + @property + def languages(self) -> List[str]: + """ + Return the complete list of possible languages found in decoded sequence. + Usually not really useful. Returned list may be empty even if 'language' property return something != 'Unknown'. + """ + return [e[0] for e in self._languages] + + @property + def language(self) -> str: + """ + Most probable language found in decoded sequence. If none were detected or inferred, the property will return + "Unknown". + """ + if not self._languages: + # Trying to infer the language based on the given encoding + # Its either English or we should not pronounce ourselves in certain cases. + if "ascii" in self.could_be_from_charset: + return "English" + + # doing it there to avoid circular import + from charset_normalizer.cd import encoding_languages, mb_encoding_languages + + languages = ( + mb_encoding_languages(self.encoding) + if is_multi_byte_encoding(self.encoding) + else encoding_languages(self.encoding) + ) + + if len(languages) == 0 or "Latin Based" in languages: + return "Unknown" + + return languages[0] + + return self._languages[0][0] + + @property + def chaos(self) -> float: + return self._mean_mess_ratio + + @property + def coherence(self) -> float: + if not self._languages: + return 0.0 + return self._languages[0][1] + + @property + def percent_chaos(self) -> float: + return round(self.chaos * 100, ndigits=3) + + @property + def percent_coherence(self) -> float: + return round(self.coherence * 100, ndigits=3) + + @property + def raw(self) -> bytes: + """ + Original untouched bytes. + """ + return self._payload + + @property + def submatch(self) -> List["CharsetMatch"]: + return self._leaves + + @property + def has_submatch(self) -> bool: + return len(self._leaves) > 0 + + @property + def alphabets(self) -> List[str]: + if self._unicode_ranges is not None: + return self._unicode_ranges + # list detected ranges + detected_ranges: List[Optional[str]] = [ + unicode_range(char) for char in str(self) + ] + # filter and sort + self._unicode_ranges = sorted(list({r for r in detected_ranges if r})) + return self._unicode_ranges + + @property + def could_be_from_charset(self) -> List[str]: + """ + The complete list of encoding that output the exact SAME str result and therefore could be the originating + encoding. + This list does include the encoding available in property 'encoding'. + """ + return [self._encoding] + [m.encoding for m in self._leaves] + + def output(self, encoding: str = "utf_8") -> bytes: + """ + Method to get re-encoded bytes payload using given target encoding. Default to UTF-8. + Any errors will be simply ignored by the encoder NOT replaced. + """ + if self._output_encoding is None or self._output_encoding != encoding: + self._output_encoding = encoding + self._output_payload = str(self).encode(encoding, "replace") + + return self._output_payload # type: ignore + + @property + def fingerprint(self) -> str: + """ + Retrieve the unique SHA256 computed using the transformed (re-encoded) payload. Not the original one. + """ + return sha256(self.output()).hexdigest() + + +class CharsetMatches: + """ + Container with every CharsetMatch items ordered by default from most probable to the less one. + Act like a list(iterable) but does not implements all related methods. + """ + + def __init__(self, results: Optional[List[CharsetMatch]] = None): + self._results: List[CharsetMatch] = sorted(results) if results else [] + + def __iter__(self) -> Iterator[CharsetMatch]: + yield from self._results + + def __getitem__(self, item: Union[int, str]) -> CharsetMatch: + """ + Retrieve a single item either by its position or encoding name (alias may be used here). + Raise KeyError upon invalid index or encoding not present in results. + """ + if isinstance(item, int): + return self._results[item] + if isinstance(item, str): + item = iana_name(item, False) + for result in self._results: + if item in result.could_be_from_charset: + return result + raise KeyError + + def __len__(self) -> int: + return len(self._results) + + def __bool__(self) -> bool: + return len(self._results) > 0 + + def append(self, item: CharsetMatch) -> None: + """ + Insert a single match. Will be inserted accordingly to preserve sort. + Can be inserted as a submatch. + """ + if not isinstance(item, CharsetMatch): + raise ValueError( + "Cannot append instance '{}' to CharsetMatches".format( + str(item.__class__) + ) + ) + # We should disable the submatch factoring when the input file is too heavy (conserve RAM usage) + if len(item.raw) <= TOO_BIG_SEQUENCE: + for match in self._results: + if match.fingerprint == item.fingerprint and match.chaos == item.chaos: + match.add_submatch(item) + return + self._results.append(item) + self._results = sorted(self._results) + + def best(self) -> Optional["CharsetMatch"]: + """ + Simply return the first match. Strict equivalent to matches[0]. + """ + if not self._results: + return None + return self._results[0] + + def first(self) -> Optional["CharsetMatch"]: + """ + Redundant method, call the method best(). Kept for BC reasons. + """ + return self.best() + + +CoherenceMatch = Tuple[str, float] +CoherenceMatches = List[CoherenceMatch] + + +class CliDetectionResult: + def __init__( + self, + path: str, + encoding: Optional[str], + encoding_aliases: List[str], + alternative_encodings: List[str], + language: str, + alphabets: List[str], + has_sig_or_bom: bool, + chaos: float, + coherence: float, + unicode_path: Optional[str], + is_preferred: bool, + ): + self.path: str = path + self.unicode_path: Optional[str] = unicode_path + self.encoding: Optional[str] = encoding + self.encoding_aliases: List[str] = encoding_aliases + self.alternative_encodings: List[str] = alternative_encodings + self.language: str = language + self.alphabets: List[str] = alphabets + self.has_sig_or_bom: bool = has_sig_or_bom + self.chaos: float = chaos + self.coherence: float = coherence + self.is_preferred: bool = is_preferred + + @property + def __dict__(self) -> Dict[str, Any]: # type: ignore + return { + "path": self.path, + "encoding": self.encoding, + "encoding_aliases": self.encoding_aliases, + "alternative_encodings": self.alternative_encodings, + "language": self.language, + "alphabets": self.alphabets, + "has_sig_or_bom": self.has_sig_or_bom, + "chaos": self.chaos, + "coherence": self.coherence, + "unicode_path": self.unicode_path, + "is_preferred": self.is_preferred, + } + + def to_json(self) -> str: + return dumps(self.__dict__, ensure_ascii=True, indent=4) diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/py.typed b/venv/lib/python3.12/site-packages/charset_normalizer/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/utils.py b/venv/lib/python3.12/site-packages/charset_normalizer/utils.py new file mode 100644 index 0000000..e5cbbf4 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/utils.py @@ -0,0 +1,421 @@ +import importlib +import logging +import unicodedata +from codecs import IncrementalDecoder +from encodings.aliases import aliases +from functools import lru_cache +from re import findall +from typing import Generator, List, Optional, Set, Tuple, Union + +from _multibytecodec import MultibyteIncrementalDecoder + +from .constant import ( + ENCODING_MARKS, + IANA_SUPPORTED_SIMILAR, + RE_POSSIBLE_ENCODING_INDICATION, + UNICODE_RANGES_COMBINED, + UNICODE_SECONDARY_RANGE_KEYWORD, + UTF8_MAXIMAL_ALLOCATION, +) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_accentuated(character: str) -> bool: + try: + description: str = unicodedata.name(character) + except ValueError: + return False + return ( + "WITH GRAVE" in description + or "WITH ACUTE" in description + or "WITH CEDILLA" in description + or "WITH DIAERESIS" in description + or "WITH CIRCUMFLEX" in description + or "WITH TILDE" in description + or "WITH MACRON" in description + or "WITH RING ABOVE" in description + ) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def remove_accent(character: str) -> str: + decomposed: str = unicodedata.decomposition(character) + if not decomposed: + return character + + codes: List[str] = decomposed.split(" ") + + return chr(int(codes[0], 16)) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def unicode_range(character: str) -> Optional[str]: + """ + Retrieve the Unicode range official name from a single character. + """ + character_ord: int = ord(character) + + for range_name, ord_range in UNICODE_RANGES_COMBINED.items(): + if character_ord in ord_range: + return range_name + + return None + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_latin(character: str) -> bool: + try: + description: str = unicodedata.name(character) + except ValueError: + return False + return "LATIN" in description + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_punctuation(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "P" in character_category: + return True + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Punctuation" in character_range + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_symbol(character: str) -> bool: + character_category: str = unicodedata.category(character) + + if "S" in character_category or "N" in character_category: + return True + + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Forms" in character_range and character_category != "Lo" + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_emoticon(character: str) -> bool: + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + return False + + return "Emoticons" in character_range or "Pictographs" in character_range + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_separator(character: str) -> bool: + if character.isspace() or character in {"|", "+", "<", ">"}: + return True + + character_category: str = unicodedata.category(character) + + return "Z" in character_category or character_category in {"Po", "Pd", "Pc"} + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_case_variable(character: str) -> bool: + return character.islower() != character.isupper() + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_cjk(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "CJK" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hiragana(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "HIRAGANA" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_katakana(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "KATAKANA" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_hangul(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "HANGUL" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_thai(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "THAI" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "ARABIC" in character_name + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_arabic_isolated_form(character: str) -> bool: + try: + character_name = unicodedata.name(character) + except ValueError: + return False + + return "ARABIC" in character_name and "ISOLATED FORM" in character_name + + +@lru_cache(maxsize=len(UNICODE_RANGES_COMBINED)) +def is_unicode_range_secondary(range_name: str) -> bool: + return any(keyword in range_name for keyword in UNICODE_SECONDARY_RANGE_KEYWORD) + + +@lru_cache(maxsize=UTF8_MAXIMAL_ALLOCATION) +def is_unprintable(character: str) -> bool: + return ( + character.isspace() is False # includes \n \t \r \v + and character.isprintable() is False + and character != "\x1A" # Why? Its the ASCII substitute character. + and character != "\ufeff" # bug discovered in Python, + # Zero Width No-Break Space located in Arabic Presentation Forms-B, Unicode 1.1 not acknowledged as space. + ) + + +def any_specified_encoding(sequence: bytes, search_zone: int = 8192) -> Optional[str]: + """ + Extract using ASCII-only decoder any specified encoding in the first n-bytes. + """ + if not isinstance(sequence, bytes): + raise TypeError + + seq_len: int = len(sequence) + + results: List[str] = findall( + RE_POSSIBLE_ENCODING_INDICATION, + sequence[: min(seq_len, search_zone)].decode("ascii", errors="ignore"), + ) + + if len(results) == 0: + return None + + for specified_encoding in results: + specified_encoding = specified_encoding.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if encoding_alias == specified_encoding: + return encoding_iana + if encoding_iana == specified_encoding: + return encoding_iana + + return None + + +@lru_cache(maxsize=128) +def is_multi_byte_encoding(name: str) -> bool: + """ + Verify is a specific encoding is a multi byte one based on it IANA name + """ + return name in { + "utf_8", + "utf_8_sig", + "utf_16", + "utf_16_be", + "utf_16_le", + "utf_32", + "utf_32_le", + "utf_32_be", + "utf_7", + } or issubclass( + importlib.import_module("encodings.{}".format(name)).IncrementalDecoder, + MultibyteIncrementalDecoder, + ) + + +def identify_sig_or_bom(sequence: bytes) -> Tuple[Optional[str], bytes]: + """ + Identify and extract SIG/BOM in given sequence. + """ + + for iana_encoding in ENCODING_MARKS: + marks: Union[bytes, List[bytes]] = ENCODING_MARKS[iana_encoding] + + if isinstance(marks, bytes): + marks = [marks] + + for mark in marks: + if sequence.startswith(mark): + return iana_encoding, mark + + return None, b"" + + +def should_strip_sig_or_bom(iana_encoding: str) -> bool: + return iana_encoding not in {"utf_16", "utf_32"} + + +def iana_name(cp_name: str, strict: bool = True) -> str: + cp_name = cp_name.lower().replace("-", "_") + + encoding_alias: str + encoding_iana: str + + for encoding_alias, encoding_iana in aliases.items(): + if cp_name in [encoding_alias, encoding_iana]: + return encoding_iana + + if strict: + raise ValueError("Unable to retrieve IANA for '{}'".format(cp_name)) + + return cp_name + + +def range_scan(decoded_sequence: str) -> List[str]: + ranges: Set[str] = set() + + for character in decoded_sequence: + character_range: Optional[str] = unicode_range(character) + + if character_range is None: + continue + + ranges.add(character_range) + + return list(ranges) + + +def cp_similarity(iana_name_a: str, iana_name_b: str) -> float: + if is_multi_byte_encoding(iana_name_a) or is_multi_byte_encoding(iana_name_b): + return 0.0 + + decoder_a = importlib.import_module( + "encodings.{}".format(iana_name_a) + ).IncrementalDecoder + decoder_b = importlib.import_module( + "encodings.{}".format(iana_name_b) + ).IncrementalDecoder + + id_a: IncrementalDecoder = decoder_a(errors="ignore") + id_b: IncrementalDecoder = decoder_b(errors="ignore") + + character_match_count: int = 0 + + for i in range(255): + to_be_decoded: bytes = bytes([i]) + if id_a.decode(to_be_decoded) == id_b.decode(to_be_decoded): + character_match_count += 1 + + return character_match_count / 254 + + +def is_cp_similar(iana_name_a: str, iana_name_b: str) -> bool: + """ + Determine if two code page are at least 80% similar. IANA_SUPPORTED_SIMILAR dict was generated using + the function cp_similarity. + """ + return ( + iana_name_a in IANA_SUPPORTED_SIMILAR + and iana_name_b in IANA_SUPPORTED_SIMILAR[iana_name_a] + ) + + +def set_logging_handler( + name: str = "charset_normalizer", + level: int = logging.INFO, + format_string: str = "%(asctime)s | %(levelname)s | %(message)s", +) -> None: + logger = logging.getLogger(name) + logger.setLevel(level) + + handler = logging.StreamHandler() + handler.setFormatter(logging.Formatter(format_string)) + logger.addHandler(handler) + + +def cut_sequence_chunks( + sequences: bytes, + encoding_iana: str, + offsets: range, + chunk_size: int, + bom_or_sig_available: bool, + strip_sig_or_bom: bool, + sig_payload: bytes, + is_multi_byte_decoder: bool, + decoded_payload: Optional[str] = None, +) -> Generator[str, None, None]: + if decoded_payload and is_multi_byte_decoder is False: + for i in offsets: + chunk = decoded_payload[i : i + chunk_size] + if not chunk: + break + yield chunk + else: + for i in offsets: + chunk_end = i + chunk_size + if chunk_end > len(sequences) + 8: + continue + + cut_sequence = sequences[i : i + chunk_size] + + if bom_or_sig_available and strip_sig_or_bom is False: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode( + encoding_iana, + errors="ignore" if is_multi_byte_decoder else "strict", + ) + + # multi-byte bad cutting detector and adjustment + # not the cleanest way to perform that fix but clever enough for now. + if is_multi_byte_decoder and i > 0: + chunk_partial_size_chk: int = min(chunk_size, 16) + + if ( + decoded_payload + and chunk[:chunk_partial_size_chk] not in decoded_payload + ): + for j in range(i, i - 4, -1): + cut_sequence = sequences[j:chunk_end] + + if bom_or_sig_available and strip_sig_or_bom is False: + cut_sequence = sig_payload + cut_sequence + + chunk = cut_sequence.decode(encoding_iana, errors="ignore") + + if chunk[:chunk_partial_size_chk] in decoded_payload: + break + + yield chunk diff --git a/venv/lib/python3.12/site-packages/charset_normalizer/version.py b/venv/lib/python3.12/site-packages/charset_normalizer/version.py new file mode 100644 index 0000000..5a4da4f --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer/version.py @@ -0,0 +1,6 @@ +""" +Expose version +""" + +__version__ = "3.3.2" +VERSION = __version__.split(".") diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/DESCRIPTION.rst b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/DESCRIPTION.rst new file mode 100644 index 0000000..6500a2f --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/DESCRIPTION.rst @@ -0,0 +1,91 @@ +clamd +===== + +.. image:: https://travis-ci.org/graingert/python-clamd.png?branch=master + :alt: travis build status + :target: https://travis-ci.org/graingert/python-clamd + +About +----- +`clamd` is a portable Python module to use the ClamAV anti-virus engine on +Windows, Linux, MacOSX and other platforms. It requires a running instance of +the `clamd` daemon. + +This is a fork of pyClamd v0.2.0 created by Philippe Lagadec and published on his website: http://www.decalage.info/en/python/pyclamd which in turn is a slightly improved version of pyClamd v0.1.1 created by Alexandre Norman and published on his website: http://xael.org/norman/python/pyclamd/ + +Usage +----- + +To use with a unix socket:: + + >>> import clamd + >>> cd = clamd.ClamdUnixSocket() + >>> cd.ping() + 'PONG' + >>> cd.version() # doctest: +ELLIPSIS + 'ClamAV ... + >>> cd.reload() + 'RELOADING' + +To scan a file:: + + >>> open('/tmp/EICAR','wb').write(clamd.EICAR) + >>> cd.scan('/tmp/EICAR') + {'/tmp/EICAR': ('FOUND', 'Eicar-Test-Signature')} + +To scan a stream:: + + >>> from six import BytesIO + >>> cd.instream(BytesIO(clamd.EICAR)) + {'stream': ('FOUND', 'Eicar-Test-Signature')} + + +License +------- +`clamd` is released as open-source software under the LGPL license. + +clamd Install +------------- +How to install the ClamAV daemon `clamd` under Ubuntu:: + + sudo apt-get install clamav-daemon clamav-freshclam clamav-unofficial-sigs + sudo freshclam + sudo service clamav-daemon start + + +Changes +========= + +1.0.2 (2014-08-21) +------------------ + +- Remove all dependencies. clamd is now standalone! +- Use plain setuptools no d2to1. +- Create universal wheel. + + +1.0.1 (2013-03-06) +------------------ + +- Updated d2to1 dependency + + +1.0.0 (2013-02-08) +------------------ + +- Change public interface, including exceptions +- Support Python 3.3, withdraw 2.5 support + + +0.3.4 (2013-02-01) +------------------ + +- Use regex to parse file status reponse instead of complicated string split/join + + +0.3.3 (2013-01-28) +------------------ + +- First version of clamd that can be installed from PyPI + + diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/METADATA b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/METADATA new file mode 100644 index 0000000..8bb2cb2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/METADATA @@ -0,0 +1,103 @@ +Metadata-Version: 2.0 +Name: clamd +Version: 1.0.2 +Summary: Clamd is a python interface to Clamd (Clamav daemon). +Home-page: https://github.com/graingert/python-clamd +Author: Thomas Grainger +Author-email: python-clamd@graingert.co.uk +License: UNKNOWN +Keywords: python,clamav,antivirus,scanner,virus,libclamav,clamd +Platform: UNKNOWN +Classifier: License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL) + +clamd +===== + +.. image:: https://travis-ci.org/graingert/python-clamd.png?branch=master + :alt: travis build status + :target: https://travis-ci.org/graingert/python-clamd + +About +----- +`clamd` is a portable Python module to use the ClamAV anti-virus engine on +Windows, Linux, MacOSX and other platforms. It requires a running instance of +the `clamd` daemon. + +This is a fork of pyClamd v0.2.0 created by Philippe Lagadec and published on his website: http://www.decalage.info/en/python/pyclamd which in turn is a slightly improved version of pyClamd v0.1.1 created by Alexandre Norman and published on his website: http://xael.org/norman/python/pyclamd/ + +Usage +----- + +To use with a unix socket:: + + >>> import clamd + >>> cd = clamd.ClamdUnixSocket() + >>> cd.ping() + 'PONG' + >>> cd.version() # doctest: +ELLIPSIS + 'ClamAV ... + >>> cd.reload() + 'RELOADING' + +To scan a file:: + + >>> open('/tmp/EICAR','wb').write(clamd.EICAR) + >>> cd.scan('/tmp/EICAR') + {'/tmp/EICAR': ('FOUND', 'Eicar-Test-Signature')} + +To scan a stream:: + + >>> from six import BytesIO + >>> cd.instream(BytesIO(clamd.EICAR)) + {'stream': ('FOUND', 'Eicar-Test-Signature')} + + +License +------- +`clamd` is released as open-source software under the LGPL license. + +clamd Install +------------- +How to install the ClamAV daemon `clamd` under Ubuntu:: + + sudo apt-get install clamav-daemon clamav-freshclam clamav-unofficial-sigs + sudo freshclam + sudo service clamav-daemon start + + +Changes +========= + +1.0.2 (2014-08-21) +------------------ + +- Remove all dependencies. clamd is now standalone! +- Use plain setuptools no d2to1. +- Create universal wheel. + + +1.0.1 (2013-03-06) +------------------ + +- Updated d2to1 dependency + + +1.0.0 (2013-02-08) +------------------ + +- Change public interface, including exceptions +- Support Python 3.3, withdraw 2.5 support + + +0.3.4 (2013-02-01) +------------------ + +- Use regex to parse file status reponse instead of complicated string split/join + + +0.3.3 (2013-01-28) +------------------ + +- First version of clamd that can be installed from PyPI + + diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/RECORD b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/RECORD new file mode 100644 index 0000000..be2006d --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/RECORD @@ -0,0 +1,11 @@ +clamd-1.0.2.dist-info/DESCRIPTION.rst,sha256=xGmjajI4-vMs3O1rFebhzk93T2t_1c1HY1mxfdfQ5Xo,2108 +clamd-1.0.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +clamd-1.0.2.dist-info/METADATA,sha256=nt00krgj68fNJv1dtMxC_Bw8PLb_x573UPCGCqVTYrg,2531 +clamd-1.0.2.dist-info/RECORD,, +clamd-1.0.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +clamd-1.0.2.dist-info/WHEEL,sha256=AvR0WeTpDaxT645bl5FQxUK6NPsTls2ttpcGJg3j1Xg,110 +clamd-1.0.2.dist-info/metadata.json,sha256=bg4WyS9Lc6jEwVCXPMIe67p8YRDzr7RZeGZqMVH3bdQ,620 +clamd-1.0.2.dist-info/top_level.txt,sha256=ZzFw4e0WM5pp797vk3QDYoUlpWuMMXwfNWerJgDfKiY,6 +clamd-1.0.2.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +clamd/__init__.py,sha256=oXFZmkN7h18q2gEkJfJirsOVNS_MjvOdmUr2jeicMws,9186 +clamd/__pycache__/__init__.cpython-312.pyc,, diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/WHEEL b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/WHEEL new file mode 100644 index 0000000..9dff69d --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.24.0) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/metadata.json b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/metadata.json new file mode 100644 index 0000000..402498b --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/metadata.json @@ -0,0 +1 @@ +{"name": "clamd", "metadata_version": "2.0", "generator": "bdist_wheel (0.24.0)", "summary": "Clamd is a python interface to Clamd (Clamav daemon).", "version": "1.0.2", "extensions": {"python.details": {"project_urls": {"Home": "https://github.com/graingert/python-clamd"}, "document_names": {"description": "DESCRIPTION.rst"}, "contacts": [{"role": "author", "email": "python-clamd@graingert.co.uk", "name": "Thomas Grainger"}]}}, "keywords": ["python", "clamav", "antivirus", "scanner", "virus", "libclamav", "clamd"], "classifiers": ["License :: OSI Approved :: GNU Library or Lesser General Public License (LGPL)"]} \ No newline at end of file diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/top_level.txt new file mode 100644 index 0000000..8d6fb8d --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/top_level.txt @@ -0,0 +1 @@ +clamd diff --git a/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/zip-safe b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd-1.0.2.dist-info/zip-safe @@ -0,0 +1 @@ + diff --git a/venv/lib/python3.12/site-packages/clamd/__init__.py b/venv/lib/python3.12/site-packages/clamd/__init__.py new file mode 100644 index 0000000..b085886 --- /dev/null +++ b/venv/lib/python3.12/site-packages/clamd/__init__.py @@ -0,0 +1,313 @@ +#!/usr/bin/env python +# -*- coding: utf-8 -*- +from __future__ import unicode_literals + +try: + __version__ = __import__('pkg_resources').get_distribution('clamd').version +except: + __version__ = '' + +# $Source$ + + +import socket +import sys +import struct +import contextlib +import re +import base64 + +scan_response = re.compile(r"^(?P.*): ((?P.+) )?(?P(FOUND|OK|ERROR))$") +EICAR = base64.b64decode(b'WDVPIVAlQEFQWzRcUFpYNTQoUF4pN0NDKTd9JEVJQ0FSLVNUQU5E' \ + b'QVJELUFOVElWSVJVUy1URVNU\nLUZJTEUhJEgrSCo=\n') + + +class ClamdError(Exception): + pass + + +class ResponseError(ClamdError): + pass + + +class BufferTooLongError(ResponseError): + """Class for errors with clamd using INSTREAM with a buffer lenght > StreamMaxLength in /etc/clamav/clamd.conf""" + + +class ConnectionError(ClamdError): + """Class for errors communication with clamd""" + + +class ClamdNetworkSocket(object): + """ + Class for using clamd with a network socket + """ + def __init__(self, host='127.0.0.1', port=3310, timeout=None): + """ + class initialisation + + host (string) : hostname or ip address + port (int) : TCP port + timeout (float or None) : socket timeout + """ + + self.host = host + self.port = port + self.timeout = timeout + + def _init_socket(self): + """ + internal use only + """ + try: + self.clamd_socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) + self.clamd_socket.connect((self.host, self.port)) + self.clamd_socket.settimeout(self.timeout) + + except socket.error: + e = sys.exc_info()[1] + raise ConnectionError(self._error_message(e)) + + def _error_message(self, exception): + # args for socket.error can either be (errno, "message") + # or just "message" + if len(exception.args) == 1: + return "Error connecting to {host}:{port}. {msg}.".format( + host=self.host, + port=self.port, + msg=exception.args[0] + ) + else: + return "Error {erno} connecting {host}:{port}. {msg}.".format( + erno=exception.args[0], + host=self.host, + port=self.port, + msg=exception.args[1] + ) + + def ping(self): + return self._basic_command("PING") + + def version(self): + return self._basic_command("VERSION") + + def reload(self): + return self._basic_command("RELOAD") + + def shutdown(self): + """ + Force Clamd to shutdown and exit + + return: nothing + + May raise: + - ConnectionError: in case of communication problem + """ + try: + self._init_socket() + self._send_command('SHUTDOWN') + # result = self._recv_response() + finally: + self._close_socket() + + def scan(self, file): + return self._file_system_scan('SCAN', file) + + def contscan(self, file): + return self._file_system_scan('CONTSCAN', file) + + def multiscan(self, file): + return self._file_system_scan('MULTISCAN', file) + + def _basic_command(self, command): + """ + Send a command to the clamav server, and return the reply. + """ + self._init_socket() + try: + self._send_command(command) + response = self._recv_response().rsplit("ERROR", 1) + if len(response) > 1: + raise ResponseError(response[0]) + else: + return response[0] + finally: + self._close_socket() + + def _file_system_scan(self, command, file): + """ + Scan a file or directory given by filename using multiple threads (faster on SMP machines). + Do not stop on error or virus found. + Scan with archive support enabled. + + file (string): filename or directory (MUST BE ABSOLUTE PATH !) + + return: + - (dict): {filename1: ('FOUND', 'virusname'), filename2: ('ERROR', 'reason')} + + May raise: + - ConnectionError: in case of communication problem + """ + + try: + self._init_socket() + self._send_command(command, file) + + dr = {} + for result in self._recv_response_multiline().split('\n'): + if result: + filename, reason, status = self._parse_response(result) + dr[filename] = (status, reason) + + return dr + + finally: + self._close_socket() + + def instream(self, buff): + """ + Scan a buffer + + buff filelikeobj: buffer to scan + + return: + - (dict): {filename1: ("virusname", "status")} + + May raise : + - BufferTooLongError: if the buffer size exceeds clamd limits + - ConnectionError: in case of communication problem + """ + + try: + self._init_socket() + self._send_command('INSTREAM') + + max_chunk_size = 1024 # MUST be < StreamMaxLength in /etc/clamav/clamd.conf + + chunk = buff.read(max_chunk_size) + while chunk: + size = struct.pack(b'!L', len(chunk)) + self.clamd_socket.send(size + chunk) + chunk = buff.read(max_chunk_size) + + self.clamd_socket.send(struct.pack(b'!L', 0)) + + result = self._recv_response() + + if len(result) > 0: + if result == 'INSTREAM size limit exceeded. ERROR': + raise BufferTooLongError(result) + + filename, reason, status = self._parse_response(result) + return {filename: (status, reason)} + finally: + self._close_socket() + + def stats(self): + """ + Get Clamscan stats + + return: (string) clamscan stats + + May raise: + - ConnectionError: in case of communication problem + """ + self._init_socket() + try: + self._send_command('STATS') + return self._recv_response_multiline() + finally: + self._close_socket() + + def _send_command(self, cmd, *args): + """ + `man clamd` recommends to prefix commands with z, but we will use \n + terminated strings, as python<->clamd has some problems with \0x00 + """ + concat_args = '' + if args: + concat_args = ' ' + ' '.join(args) + + cmd = 'n{cmd}{args}\n'.format(cmd=cmd, args=concat_args).encode('utf-8') + self.clamd_socket.send(cmd) + + def _recv_response(self): + """ + receive line from clamd + """ + try: + with contextlib.closing(self.clamd_socket.makefile('rb')) as f: + return f.readline().decode('utf-8').strip() + except (socket.error, socket.timeout): + e = sys.exc_info()[1] + raise ConnectionError("Error while reading from socket: {0}".format(e.args)) + + def _recv_response_multiline(self): + """ + receive multiple line response from clamd and strip all whitespace characters + """ + try: + with contextlib.closing(self.clamd_socket.makefile('rb')) as f: + return f.read().decode('utf-8') + except (socket.error, socket.timeout): + e = sys.exc_info()[1] + raise ConnectionError("Error while reading from socket: {0}".format(e.args)) + + def _close_socket(self): + """ + close clamd socket + """ + self.clamd_socket.close() + return + + def _parse_response(self, msg): + """ + parses responses for SCAN, CONTSCAN, MULTISCAN and STREAM commands. + """ + try: + return scan_response.match(msg).group("path", "virus", "status") + except AttributeError: + raise ResponseError(msg.rsplit("ERROR", 1)[0]) + + +class ClamdUnixSocket(ClamdNetworkSocket): + """ + Class for using clamd with an unix socket + """ + def __init__(self, path="/var/run/clamav/clamd.ctl", timeout=None): + """ + class initialisation + + path (string) : unix socket path + timeout (float or None) : socket timeout + """ + + self.unix_socket = path + self.timeout = timeout + + def _init_socket(self): + """ + internal use only + """ + try: + self.clamd_socket = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) + self.clamd_socket.connect(self.unix_socket) + self.clamd_socket.settimeout(self.timeout) + except socket.error: + e = sys.exc_info()[1] + raise ConnectionError(self._error_message(e)) + + def _error_message(self, exception): + # args for socket.error can either be (errno, "message") + # or just "message" + if len(exception.args) == 1: + return "Error connecting to {path}. {msg}.".format( + path=self.unix_socket, + msg=exception.args[0] + ) + else: + return "Error {erno} connecting {path}. {msg}.".format( + erno=exception.args[0], + path=self.unix_socket, + msg=exception.args[1] + ) diff --git a/venv/lib/python3.12/site-packages/clamd/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/clamd/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..119cfdb9a131e69f6440e9978d3b9f26bb1b03de GIT binary patch literal 14799 zcmd5jTWlNIbu)ZZqDYCPtcPuB^t5Q}VO#P`_R67NwrrV_tjDgEbQzj6vMBSRof%mc zEoB{d189>?WA7G~1GJ5dv|YJgG%iq}`_Yf}wjTis6ynk;m06=O+We#+g=%fuh5OTU z?r??=jTP_41$qUYxpVKG`)A zEto7I*TTs{Sg~NHeEUqSNm*yI2*wo7?9muwR>wGW)ESDkyhE{8uK0mIy_*u!S^%wu zT#4H1B&{}RE#jPNtBbVSq1BN!)=gTAp|yl7Rmbiktxjllal6#kvIS!uMN_O{(s+q_ z?|awvm#BH#j4krIgR&%7!aYMsefqP*Sk1$ezEW3#i5HH zPrdLaEcklw#PGm`H$2kUKk|C~VsN~F_L6UGBsSjPG3z_%>peflo;cSxac<;b|LEX^ zZ+v9@NZ-iBxxT^i{-KG!@av-!=O)G%4vk-gzJkH=$#Y|U z8e6C>8{Dr@95qR^)TC~K_UNR79z0VY&&PP*eZ6Gy`=fyf=l4qmet#s!&V{jV^ZVbL z3xwsK`_vXr`+THrIu_yDBK&k9c$MSZdO0B&;I9OPwt4RI;kIjB^jcdubh&MIL7a|7 z+glGEZWG|ew#>rtz!gqtBX6_K?+-;oqTk;-yTBvD5>Nq^EhL0@s11XKw=3;0eXOF3 zoG=@U3Y>g0-ik96As}-(u;x_2UaSbKbD@@HUS4n1jL4ewCE^NavZtO=l*H3PIDCjwq) z1z5lW|Cuag3jx|#;5w5CP8Rseq>FU{bhB=NrEDp{ zU4RQ^k`vxQg!OUae2l+38UxA@<3|b@D4ACye|{Mi2v!7`sQdsUkSEA^U(i5KCj&gI z9{#sl0jyAq^djY#djKx#;7*}(YEch&%DbVE%Hw}dX2e~}78q9TqR>ltRSLG2Yo5iT|d1E#{U zfQVE0Vo?r<%BN(~1Jnn6KuZQ(QZnE~k~uxVV~`927oOr##PEb#tDq*}`@u8uNY2Q* zWKI&_z5N@sDxEF(AhMU6)TWavtyng^XWej@lS^6Evf+m|f^0$cZNg9!{F8V85L#D2 z3X5v*40PoeQEiw}zk=FCW%Xu%-}Hb7=_lX|;)uX$*F{>{fpWb?&r`B|zpszisTc;R%JI=a7&tKCbTqu6_WT-;;Pcoe zlZ>2_+1u|Q@b!&Jg`-0~=lwFPmTZJ-{mK~NzR3SFh$$5aoR~&i9+6Zs6810Yg#|&f zaMy!?q#zWKmq~U%>GMZ`ra&Uz*YVZZOmhNafr8gI8Lj0d%dUw!Is+;*@P~!nQYMYe?7{R>cn& z?kzm5|69*rd)6CIJ+{4;HJ~YBYg%*vY|s5Yzpx$s@>h=1A1%JS_>9uQ62-0++a22n z_PcK-iffj=PnC`PwXfwFx-G5mq;&XwNW_QnaxfS~c`z?R8i^BH%{`MUxx_ z9a?iG&0We*zk*#5YWT?XAk8;MDUaF5*TK%>9wL63G&-VkA;y>+$V!(wZy+ySYGrOj zgeyy}Jicy^J_}>@&>nA*C%6IB5nIZhM{^Qn$T%`H3x61=HA;HWUL*skfr4ZLG>-(b zXhXqoD^LM9i~2w|p7Y3=<2737okJyOV3_cI05_>GOq9*Byzry%y!)MGVbyBQXN7ee zuCA1;FX8IjD6Lqzbmx+CaqnI6-SMp+O1K*~&6K;J-l7a{`zB>5vTxcbcMqL%4J2Fx z8>Lk%Z{B%x)te}7R31%Fls$u$a-V}4j5vd_$i7`-APy5eu7?UpYidT77|@U|tje|E zOX_@*VR*oI<~|K<;c`F-1^uWx1)}VIny>`{XGn`W!z_H_c$vn#!j3m!px^>1bKEw7jBCnlAPY4taaE_h{ld&`Q{Ng~k@;E;Q1%y~g87NAtR+dHW8LCdn6nA1bIL zXn%7>vJsh!di3!>QDt3!49r>7MA+W&kfsnv;sVRR5ID z08A{L0)XnD(ORPlxW~3?Qm;zbs_w=g+xBmosG^dT4ex(pW4>JORqM|MRK0H1bWnfe z^qO)7n2H9CFyzIA4+=|K?4?P6w8!fM(l7B(g}~wlT|wj`ez2#b3ez-TM>f9%l^D7; znE-aYg$G3?E6oHN5{`z|sWmp~XkWL;233ya{hAxM^bGmNaP#~iti}6q)okU(0wPHy z8`Vku)3?g z@Dc4|A)JqtMV+j?D2moCT4@2sgQ{F!$(&)7BFt&WF)DL1#0OPIFbXu!1PHf4egynU zoaTt%Byf!pI3DCjGvQP+Zz8=sHyd7PRi}`Q#M4GpBU#@u6OO{8?f~MI=YrSJtw$V0 zl8F~)!Q;nwK&R{zItw*mLPQxir=_rDQ63QR%P3YSkGw=%YsnGfaTq2n06?{zvKFN* z6$wklW6SPMoh8kM2a{wmVg}KT)i81d`8S7#tDkr@@Mm1ikx8@}#1M#WcM;OFp~RD2r+ehVmz z92&hGYzPocjPVQ1l@NGAnac~Li}+Dw*AHPNvoKnm1{WVIfQuvm9G?f1lo`D+%tQh~ z5VxG*$>4Nv423Wwh_P85MO0#3j5wXa%{UijGlR*7WX}>0GhO2tVQ!W zqVia>@`geRTdMY)=i>QtKrne=KDW>&YP z0|Q<|AL;2 zMqYl6-*y((pzJ(r7t~A%Y%8xQ+;GX5b$+Ar6l);b!O2B%rxSNep@>E%DU0eT&=9B@ z)w!qigNs@nLHIOq=_SjeY0Bx}~igRGV1vw5xN|2a$;ZP(bW*qjvtBp3`ll`C}3KRyS=+_Jq4J%%!bTMQX zWZm>$K-@5dq5C|xEH-OE(T8l1p9`YLAHssN4z>@zKRW!QEPn~ABwWP@utxZ-RaVRl zcxcHU30(IFr{|(q{kSfKXt54Y!wnzAXIKOrf++yRbW_-^5;zD&VG|H))3h9w&JXcv zHy{o0+C612;KH>t*fP zn&hT~Dz4tNzt|#1PH?N+)LTb=YV{t2%RkgPdynXI!YF_;=`adZzP=Uo@-7nKDk`6c zCDSFFs}PQ{;~14==;A+7b(=GsNZcpL0zf4T0EMZ2ipxY%sR$uz4Se-_jB#|#J2vVu zWQdH%7$G5>ZT=D?*>}8LL(d>R{{&A8NO0&W$+cJv+bkAWS;}=V;X0Uf9nMCZT(1f0 z*6%Z3J@rWM^yWGK5jXHVZ2c7gNP3|`PV0C#3&}28uG5S>N9nqxXZ17L)(o^^0c%7L zPW!aYtECsPs#ID+8T7JYHq~(p0WXusoP`8*7yuv_n#DYNK*)1aAvkd$y6?v+b0f0E+>XnB#+-n7YmQ^@UtlWX zA^oLVW z8Eoc)9NM&Kk}*?!EFu$}+Arz&%lvg%T@H>tua{$6^V4XbqtXGSBtMr9nKCyHE_obM z0lFi(>mnpANoMpl!#INZk|h$j3e+3s&_npMM6&GUf9ok{ zKbdqze|}ZG3uC!|JoS_4kE83377Xyh0^1|J>$PW7wL^*8q4nXB)bK=Ncp_Q* zdeZsEy6p{&^j@N$3m(|wtyXV4^{~aePycAI6{?T+8NCP1kDB#ZKS*G^x4Orft0|~d z`Un5-sq`ySqG~tJs5A+0DP6=&uSSxEN{On~HRD#E%v=@T!YY)g+CxBzDph92FY0D0 zGj~c&p+M!DLy3Ns(f}<9C93``LXwJGB#SnQ!H4p^H?sR|;1VPkg zj1+zewvk1^{CD8qW9Q$-=9>tJIQlNuLI{2z!AlY#|2-I-OLnLu#SducK`-(H{RXG_ z0Kiuwz-xD|eQq+|2hq8-&ta?HPg3Q+;nGin_!6Lis3AR(v% zVmPgQq7W95d65Ewvl;}assMm8pe67PpoFIP$C{8rHHgj}A6MTT@jVJ4$mIBioMVbX zt!73E#x*l)q>E5qI?ps6$`CS+Vl=zOX~{@@62w5}F?%2@a$=H-(0EaOosto9I)d=X z6+SjME7`pwh(FL_AFtJ-wp^#G89(g^JdH%Ax1N0B zVp6WggsX8?NV*QBT!#{_Lk}B2-uKDzq-${9Hu&We$KGcY4FjFkpgI=ZD_A@B(3@nA zK71>|oJcx5*KM7fdgxDwZyTDZwI*+|9wOt`Lx+#G9)!O`q5l9D?DLf6rPK15qsB7` zFfvV2RroHfc@gv?7(g(LU=+aw0t`P8cP@|NSRTWiL@Ad28pwBK+bn=JRQHI&Dtm#E zEAt3Yj0(u--l6_er!!i%OohhkXO)G<&S#Ylqy1SeZ9MSIL>pTXv^+D}jWy30+Sq}& z#}S-(W-5ZVsyzTsH30C@WK4mv{#m)zc!_?tONK_HW6N$fo|JciYX{+9Eea8BA*;51~w}o_Av*aKjdORAsJ}T$Jwi7&t)^u|8_FUK~1Np+&b2DMn^hLI!vMGjaW2a15 z!j8VHQciHk+*hQ8?A+I^T`<_EPV+VLT6Iz(PN(E9po*9dF!DcuI?)+(g%TbvZJcM` zo|?s4io}6>01!tpwTD?YJhqf?{MP){yYN_^(F1ej7erIJXyx2x^%|6MnXAIdUS_>xK4QQ1=RR8?gQ*4I+DRL6m` zlZ;};*TOQMBBIBTD&iF{(MEnj4y4?G@&RYOkkcfvP%(ngv=b8@gb| zk{@NHvp|t|<)we>WUhmEgq>=fV^B}ORb{L*{5IjL0*nrL>*}f&nc?@oIFc0xD zUX>>XT5~g>n-TX=%YQ*m=dqNlE8*&bjLcMNL!z`{BRd(>NV!jMQF_e9)I&BWgeFg= zT-^y*cV055#-or4+LM(DO5`3WuoZ3B0(=`k7tQ;rjTrWM%rB!FT6 zp^9=Vi1J+p#?GzsBBQLUl7XIb{QcF`9Aw|Y@2`0L)YuS;U=SaEkX3wz6a8!mEh^Bx zAk~s6B2uB>pH8oYhfqq(eux>Yq4flw5l%8eVhVS(16&-j$Sn9Y_#a}A_43gU#iP+T z(Br)*S^JbUUHNxePMpP!09_iA3BqBR`cCu|a>CqGOO{je@5j3MpTc_cxQp-?~|}VJTlWr7YzMOZg^6SAGLNCvEl8H;rFdXxe(a;tL8c za{ZiIzeeBPi#OM3?CH2YgEt*tSU5d>^6suLD7=0#Y;L0M>${qML&5dS&2bo6y5V%+ VI{#ciHGa9KyNUX=$=3.7 +Description-Content-Type: text/x-rst +License-File: LICENSE.rst +Requires-Dist: colorama ; platform_system == "Windows" +Requires-Dist: importlib-metadata ; python_version < "3.8" + +\$ click\_ +========== + +Click is a Python package for creating beautiful command line interfaces +in a composable way with as little code as necessary. It's the "Command +Line Interface Creation Kit". It's highly configurable but comes with +sensible defaults out of the box. + +It aims to make the process of writing command line tools quick and fun +while also preventing any frustration caused by the inability to +implement an intended CLI API. + +Click in three points: + +- Arbitrary nesting of commands +- Automatic help page generation +- Supports lazy loading of subcommands at runtime + + +Installing +---------- + +Install and update using `pip`_: + +.. code-block:: text + + $ pip install -U click + +.. _pip: https://pip.pypa.io/en/stable/getting-started/ + + +A Simple Example +---------------- + +.. code-block:: python + + import click + + @click.command() + @click.option("--count", default=1, help="Number of greetings.") + @click.option("--name", prompt="Your name", help="The person to greet.") + def hello(count, name): + """Simple program that greets NAME for a total of COUNT times.""" + for _ in range(count): + click.echo(f"Hello, {name}!") + + if __name__ == '__main__': + hello() + +.. code-block:: text + + $ python hello.py --count=3 + Your name: Click + Hello, Click! + Hello, Click! + Hello, Click! + + +Donate +------ + +The Pallets organization develops and supports Click and other popular +packages. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, `please +donate today`_. + +.. _please donate today: https://palletsprojects.com/donate + + +Links +----- + +- Documentation: https://click.palletsprojects.com/ +- Changes: https://click.palletsprojects.com/changes/ +- PyPI Releases: https://pypi.org/project/click/ +- Source Code: https://github.com/pallets/click +- Issue Tracker: https://github.com/pallets/click/issues +- Chat: https://discord.gg/pallets diff --git a/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/RECORD b/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/RECORD new file mode 100644 index 0000000..72be766 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/RECORD @@ -0,0 +1,40 @@ +click-8.1.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +click-8.1.7.dist-info/LICENSE.rst,sha256=morRBqOU6FO_4h9C9OctWSgZoigF2ZG18ydQKSkrZY0,1475 +click-8.1.7.dist-info/METADATA,sha256=qIMevCxGA9yEmJOM_4WHuUJCwWpsIEVbCPOhs45YPN4,3014 +click-8.1.7.dist-info/RECORD,, +click-8.1.7.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +click-8.1.7.dist-info/WHEEL,sha256=5sUXSg9e4bi7lTLOHcm6QEYwO5TIF1TNbTSVFVjcJcc,92 +click-8.1.7.dist-info/top_level.txt,sha256=J1ZQogalYS4pphY_lPECoNMfw0HzTSrZglC4Yfwo4xA,6 +click/__init__.py,sha256=YDDbjm406dTOA0V8bTtdGnhN7zj5j-_dFRewZF_pLvw,3138 +click/__pycache__/__init__.cpython-312.pyc,, +click/__pycache__/_compat.cpython-312.pyc,, +click/__pycache__/_termui_impl.cpython-312.pyc,, +click/__pycache__/_textwrap.cpython-312.pyc,, +click/__pycache__/_winconsole.cpython-312.pyc,, +click/__pycache__/core.cpython-312.pyc,, +click/__pycache__/decorators.cpython-312.pyc,, +click/__pycache__/exceptions.cpython-312.pyc,, +click/__pycache__/formatting.cpython-312.pyc,, +click/__pycache__/globals.cpython-312.pyc,, +click/__pycache__/parser.cpython-312.pyc,, +click/__pycache__/shell_completion.cpython-312.pyc,, +click/__pycache__/termui.cpython-312.pyc,, +click/__pycache__/testing.cpython-312.pyc,, +click/__pycache__/types.cpython-312.pyc,, +click/__pycache__/utils.cpython-312.pyc,, +click/_compat.py,sha256=5318agQpbt4kroKsbqDOYpTSWzL_YCZVUQiTT04yXmc,18744 +click/_termui_impl.py,sha256=3dFYv4445Nw-rFvZOTBMBPYwB1bxnmNk9Du6Dm_oBSU,24069 +click/_textwrap.py,sha256=10fQ64OcBUMuK7mFvh8363_uoOxPlRItZBmKzRJDgoY,1353 +click/_winconsole.py,sha256=5ju3jQkcZD0W27WEMGqmEP4y_crUVzPCqsX_FYb7BO0,7860 +click/core.py,sha256=j6oEWtGgGna8JarD6WxhXmNnxLnfRjwXglbBc-8jr7U,114086 +click/decorators.py,sha256=-ZlbGYgV-oI8jr_oH4RpuL1PFS-5QmeuEAsLDAYgxtw,18719 +click/exceptions.py,sha256=fyROO-47HWFDjt2qupo7A3J32VlpM-ovJnfowu92K3s,9273 +click/formatting.py,sha256=Frf0-5W33-loyY_i9qrwXR8-STnW3m5gvyxLVUdyxyk,9706 +click/globals.py,sha256=TP-qM88STzc7f127h35TD_v920FgfOD2EwzqA0oE8XU,1961 +click/parser.py,sha256=LKyYQE9ZLj5KgIDXkrcTHQRXIggfoivX14_UVIn56YA,19067 +click/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +click/shell_completion.py,sha256=Ty3VM_ts0sQhj6u7eFTiLwHPoTgcXTGEAUg2OpLqYKw,18460 +click/termui.py,sha256=H7Q8FpmPelhJ2ovOhfCRhjMtCpNyjFXryAMLZODqsdc,28324 +click/testing.py,sha256=1Qd4kS5bucn1hsNIRryd0WtTMuCpkA93grkWxT8POsU,16084 +click/types.py,sha256=TZvz3hKvBztf-Hpa2enOmP4eznSPLzijjig5b_0XMxE,36391 +click/utils.py,sha256=1476UduUNY6UePGU4m18uzVHLt1sKM2PP3yWsQhbItM,20298 diff --git a/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/WHEEL b/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/WHEEL new file mode 100644 index 0000000..2c08da0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.41.1) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/top_level.txt new file mode 100644 index 0000000..dca9a90 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click-8.1.7.dist-info/top_level.txt @@ -0,0 +1 @@ +click diff --git a/venv/lib/python3.12/site-packages/click/__init__.py b/venv/lib/python3.12/site-packages/click/__init__.py new file mode 100644 index 0000000..9a1dab0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/__init__.py @@ -0,0 +1,73 @@ +""" +Click is a simple Python module inspired by the stdlib optparse to make +writing command line scripts fun. Unlike other modules, it's based +around a simple API that does not come with too much magic and is +composable. +""" +from .core import Argument as Argument +from .core import BaseCommand as BaseCommand +from .core import Command as Command +from .core import CommandCollection as CommandCollection +from .core import Context as Context +from .core import Group as Group +from .core import MultiCommand as MultiCommand +from .core import Option as Option +from .core import Parameter as Parameter +from .decorators import argument as argument +from .decorators import command as command +from .decorators import confirmation_option as confirmation_option +from .decorators import group as group +from .decorators import help_option as help_option +from .decorators import make_pass_decorator as make_pass_decorator +from .decorators import option as option +from .decorators import pass_context as pass_context +from .decorators import pass_obj as pass_obj +from .decorators import password_option as password_option +from .decorators import version_option as version_option +from .exceptions import Abort as Abort +from .exceptions import BadArgumentUsage as BadArgumentUsage +from .exceptions import BadOptionUsage as BadOptionUsage +from .exceptions import BadParameter as BadParameter +from .exceptions import ClickException as ClickException +from .exceptions import FileError as FileError +from .exceptions import MissingParameter as MissingParameter +from .exceptions import NoSuchOption as NoSuchOption +from .exceptions import UsageError as UsageError +from .formatting import HelpFormatter as HelpFormatter +from .formatting import wrap_text as wrap_text +from .globals import get_current_context as get_current_context +from .parser import OptionParser as OptionParser +from .termui import clear as clear +from .termui import confirm as confirm +from .termui import echo_via_pager as echo_via_pager +from .termui import edit as edit +from .termui import getchar as getchar +from .termui import launch as launch +from .termui import pause as pause +from .termui import progressbar as progressbar +from .termui import prompt as prompt +from .termui import secho as secho +from .termui import style as style +from .termui import unstyle as unstyle +from .types import BOOL as BOOL +from .types import Choice as Choice +from .types import DateTime as DateTime +from .types import File as File +from .types import FLOAT as FLOAT +from .types import FloatRange as FloatRange +from .types import INT as INT +from .types import IntRange as IntRange +from .types import ParamType as ParamType +from .types import Path as Path +from .types import STRING as STRING +from .types import Tuple as Tuple +from .types import UNPROCESSED as UNPROCESSED +from .types import UUID as UUID +from .utils import echo as echo +from .utils import format_filename as format_filename +from .utils import get_app_dir as get_app_dir +from .utils import get_binary_stream as get_binary_stream +from .utils import get_text_stream as get_text_stream +from .utils import open_file as open_file + +__version__ = "8.1.7" diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35a571c0e14d3f84df3772e964203f142dba97f2 GIT binary patch literal 2697 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ⓈNLd9)Y#VyzB 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/_winconsole.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..82ee94aebf9eb89dc181093f3dd8a85b24ccf050 GIT binary patch literal 11977 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/core.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8037b6c70864a033ceb2bfd3a1bd753aa53b0630 GIT binary patch literal 135498 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%0DJsWeL>aoqXjYU*NrN!AcHn4v&) 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/decorators.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7d6025c6b0f3f292efca6fc7aba51e9f099e0917 GIT binary patch literal 23970 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 G4Ew(()7aer literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/exceptions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..782f15ed200240ab9b363e8329af6ec174a5a953 GIT binary patch literal 14733 zcmb_jYit`=cAg=J6iJbyBl+ff{QZOgHvB#INq+eSdk(43J)g(8(1 z%C=|;a8d&+6xL*v<0pM9sKo*u(NQ$a{yqqM(XnO;-1X zRBJ?APoj3*KkR4qy~qcK11#@DzHYb<`C7EzTxezGK$We0AqBOo@MPuG#&%@Y#t{dl z^i%v*dSx|7BqeY|8V)&xGlEigLr{Wh(>*8eZMd0H>p^W$n{8?fqc(yXQd?|lE2B1n z+N`$P)HX(K0kyTLZabs4f!ba~?O@anP&X7&H!$i(P&XBgVI!k%2DMY&WWQ}QqspLe zDWY~xiQ%qa( znvRUb6KXO#u7Xr^Dm6YHO)5N_G&}X4i)tuOtD51PploC`o=h8VO-)Z~$r!!K3KB9j z)oa6uZVS`GTRYQs`LvLBSQYP?IlWC0$E;0j6(Us}H_&=OxM$MtnZ29`^}G;v4rQEj zpZvtT51{(menig;B76TI1_fb8EEpD%fCI}H<}t(`^L4=XzUGD>l;w@SX8?d)%&if7x(vFR+E?e67h?D6I1EY zRPsRYzWsfAJgx4TK=tS)Rqu->;;}dS)T=RdA{|d9_1=jo!+Z3SnpCe&XvZ?!B4ep| zGE$gaz4vG$6^kbHW4(5*5XPc6Bl-{FH`j%1`=Pu2i_sr#TX^%%j=TN;t<%)M-P|gM zorW*2$CG+GnvAK2Q%`G#MBRr)%}-s>Ov)M^X`|tZ_iA*$FlU0^i|D$r>J~hW*_us1 z8N1){*XKX$KCu#Px|x~FU(L_-?p{1GBniKJ{Vo17kvre#(`jzyF5 zD2_@(l@ZJOXzGfbPN9Y>PwJ}HtI@X`HRGzTV+UvfJPpO{?T;rqChVxtcKuWFwva~3 z!<=JU_&(ZC+nZHHep-mw?WY8-9(A$SE`4$W2h$UY#FO!KB%*ENbV*keBkaNOMk299 zRM#UBon9!**V*c8G9EImr61gD^+QZsZ$*T?_RtfUtI2uV7Fs{^Y*}gDJS%Lq4gT=>g&QvFm!Wz zZaVAP@VgC7+lKD6?PbHN!Q`d2NF>uzHXf5s^|c)o(bpRiG1Zdgc7x1j=LRyE9r3!a zz?Cd62TnzGSV+?bVnMOD!B~w&E2NlbZ{f+xSv|h*u=w4y_`cKPx*~X9SQ`3m{b@~0 zY5npwbGB#L$AeMypr5cyqd{x*PD6|sZa(!|H6ccPho z2oaX5HaL6qVW=w~+BQ4zrN{ry%h}+Te4uMN5Y7d{_qQ$YKb_luI=}x+HW1DS&VG{q zC(o;FUiqdE(rzb-6^R(WNMt;vOeQGrk3`;_j3&$yteBFDf$UYU;$Xy55P!6v*|ujN zp@s2ih-t&~664CzgyDGZCBu0lIi>YcQNTPnF*T8hM6g+DyRpss9e#o~QhyW?qtRoC zese?kTsjG^+0c0XxmC&G>RfcL3P_fuuP9mdh^~!`&NTtasvFTlh~*!jODXmwQUmcC>a(Zea4w;#l^2rF%izzLQ zn#n17WKsiP);Pb8ColE-SdD%rZ)J1u_cPwjI-=fln^!Cpwu<0iE#=qCy=AL*d!Z5r#OMcVbu?-3*wpiP?+<6w1?YZ5~mXtZ`P5HIP3ASpx*TH~-(mO$&vM}RFhb&T+Rs@yHf+ZDc95k9A zI{~X4@4Kz*mM9c@Etk;U1x`glzzxiTZKGLH`Ls2CrVs-6Vs>(2cm+q2`?{W-ao=F-5t7S-ZFJu=H;%r<* zk|50liw-4Wf#V?R>xjy*z)F47tZOCMFe^Rs*WWxlcQ)&nLA&j_qtOpXmk*uG z9XgkN`IX$E^Q%sw>7=+OIGXBa2OyF6$<}tRG_~D6d+Y4& zp<6?LKlJz?`UBZIIq%=H z?BAL5@4Vl%yl)`4Zy>+#*{pwO-hXDLp?RgT^}lK)udfKn1hl<0dHX1$Yk+ouBH~mW zs{9`12s3fMc$jiWD56=_o}!5HHahSoBsoe%il~bIM~DDP9y{DF&uTpbC66Vi>t&Hp z38hP0KIpmIbN{tm&v8!pB0TASR!@@^R#=%c;q<9F^&2twc2?o`H-n1q^g#qf9bij4Cq27o<0_5DMS` zfWgRQLcTJplDyYaSCaCGmKsO51YIsdVIZRqKpEUCb=Fe>ILOg-IvN|5O{@W|3t+&< z21r0?C7zad(ip7k|8Be}9vfx-*rTCZaXoCJpx$2jva0FmAgU;;(%&!d@7-GhkXS_ObalAH5E(AX?A62$3gMzEC)ANN&E{@)d4BQ>8FHd;!&vDeTcMZuh&++f z_4vhvS_0145SfOmpRJV!z{iJ4oCgaqfr%|FjZD`CbA2kjg^il-`WQ6BbZ8q*FmRfV zUsh?(UuSQ8oiJJ~s;hj_3SVpIu;iL5$0l_EJNa@n5my+JBh|rVLIF6Pm{5}#$#Wxo zfvSy$HX!?`czOrhPYQjIJ{cR`En`v`H7Y0KI<1acX#v=fRN6^UQjKFT$Zt-j(%8&Q zlcCc0;EB&F2bUak5x6v5>~l3b;7p&y(WZS_1({G8j*+l-5>Xl2bXjO~+F=0$=r#b4 zitwg{Cu+}vrRk80@Zk_j*t^5-a#&~=aezo*lznY6L~JfT@is^tMOD2E5kTU4o#3rA zRUV65Kl602Gb9WDs?xiS z6Ty^SLz%YclI)1kL77y`H58d}Nijo8*9r%Jrl>wZ5`7F;i+OmSHi=P3Xohib#w_>_ zw{a1x&y=B-s)KqdR&_88l-W?SmpCtum^VtDTD*;jp`4q?=Z=hUAjoKx?E_QAv)cb!8+ zLw9`@F$dF(l);T|481bQc#%pd`YwKY5)lI#L4b^%LU+$fc+X0A&*NIJYx|>yrd1bG zV6D0!eeZ%d7wB58A(BU^Zy;Ur!meDfd(}%MpU~WLd+^raf`03zRcgQL7kqVJ1t{0z zbNLpXUkgY$=%4|_@Uug}%&q+^GL=CG10Hn*JjRHdl?9b6L8Qv1HYBOoR|4KAY z>IVpe7-_R*O?`7Rt}*^@sx1g(z<@D1t|rs+MW7l$f-8_B$yAz&oe3>pSc&cf9`k z?rNQ(9=~6q63sB4tw{!@vOLw8#ImKSWnrV~;F7hNsZ*Yd8Dz>NtJ{*SS4G_c%PTIn zkgL)?lEw&-vXH$6DU0i;V@NxNlCZN#w9DdXss4Ucu|GZufgnXNW}8Ozj}r^MvOhSz2vg@}b)3fdtHUo!;7UgsRw zFBx7$5%?5nQ5ZORTb)=FX9ryGL*OCPX^#AyC7yaq5z=i`(g`w`Af%q&5Bl!*eH(=I zsD0Dy;Frzaiofa^f6{lM(tqq@eMiMhnAlXO7+bN$)cEu=>Bz3aOZd^fn<_H?f8=?4S982tHQ zzU|EHbDsy>J`c65G_@|gvglp7mff%`*R<=_sYe}K=TH61hRyTh{MPyAx%lGAStn4B zzh$B0)7q^MTUxViJ^7Yhb7xiptqVs!4RF%Vd`p;{$#iAM z0kC8xJ;GSYYy%A1OGGK!#ip@R!I(=BJlX#;ZBOh`)1>=1RQ)6(Y)-N*|H<^q?!6xj z{%mleiQxL3&L4C>7?>S=ND9b9`Ox9z(6L({WWV z=xn}0MKg_QCm;#fv7z9PP;`cghm?ilGYmV7%@gKGxdX8d;A!9HO~)0x4pa5m$|8VJ zob;BV6jNWBQ-Wh|9&k;?n<0btAYs;uBA`m@8ZFMtw@{uD7!M#S|M)KC3X-Wr2UNUf zHb(tNs!vBA7tn^Dy$CDhHI3(l9|AS0bj_j|@k=o124dZs70kp^Rgfw+?>*RncfG z8cw)8vK@uX5A7Z!Skw!7`WQ9(G|!z=!M5BUj*$d8h_d_z7|Y6MbG~S#ya>DEd46*atFMBSF?QlC1f?ryy<~*ZN(%9yPbE zx{w0Q$rMw(AIuCb1SpBg@D-7`S<#At@~HKROBmB4^cm+=7(|{eXd}WrU-%4Uu8jIyT3R_U>t%gBDufRFindG`_*UELD9!KJhNp+ z+kjdNoF2QEb7Rs*kXxrlekkB-6BCIzI6tXaNYwxnf@~@|czqx7a?-rSlQGzEVNxlw z6%|`@WX)FUP)Eth@rzhA^kv;OxZQ!8lne$^1@tIY49o6*%S#DZuTL5Tsm&p zLr5XSOd|Hs6Q-NYP!Tg`MrcyCaUo<20#GQ=7$O-w%d{D=0Wc3p=rD@x1eJXt%cKIJ zV3|N*V_>p?BoEDau_$OQU0GWgJVsr8BO+2*xC;u40=xgEr;YDNx+RCb6>(kZf#b*Q zDO7*La7)@^jiP_Yj|(9(+}7ZPH3=_>=fuZO$+cr;!{$|%hIjMyz`>9DKkR=H&mB0+ z2#>shuU)A47`|dV_~@w9lGB2%%fcFsyVNOn$^oC!dd$cPQ#;6ZdnRA9)vYb}?KivC z;&Niu{pYm9~W3hrPYjLE2-jN5;ypj`vSatWin z#=eT3aAGQD2fWdqEc3kz zwaKvl1=yh~vHsbN>>_%EBe!+Fitob3vyEC5fRl>ZAtw@*bSY&4w`OzR`R#buDP}aL zb*4q;3xCa8J*=zCEcuHj^b zI+hO}Uk*N-3qHHj+`inr9qN~*^as;-r^yU;rrZq0{Qb1^^zL%!l?)Ln66p;j7JxE7 zmv%pv+^#K)p;ZCN(uofS?+)JA@4mzyKTdx|)YW8pq|DQNp2WBjk$6Xr2h;Gc{V^Ub8|)3_OEfq#2$=wVxqY-dX^IIC;$&~` z!hx-0(+qtny$<&R+PGydSM(vcFyui> z4#R8zJqvSIXYOIle9N>)4AwK`!6Y3!e}?~+$z(b{&SebWzwG-<=fvMe(17#xDf<3t{80gl%64tzQUTkDSu?j=z2U3uzPk-?{2`i!Cel4Yz%_ zd<*;T9Deuk;=Z5uzt_JMd++%DQ`xPDa~qE2>YrM5qS_;u`+LK04bMB@imbWtyx!O( zUJ&PBTNfx@@7*T)<~OekNY;nM9eC(p7m%#KDxMTYd476bpmcrE(JAhtG9>E*Vx72S xet2C#vfkwuJ@c7$0m*t}9XhBZx^KNp6wivYFJL{9u6umq*4d+92}s!D{x9*RWQ70# literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/formatting.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e83683c14ae110fc743d80e6f1259a3f459ba41 GIT binary patch literal 14052 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 KKcOg literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/globals.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c485fc2bf93001ee89194b7a1f247f9370dd1a6 GIT binary patch literal 3117 zcmbVOO>7&-6`ox#C5og(NtPT}O`LI(CSZO@TS1Y6XzRMN-6(Ns*Ve@h3Tn7BBv)SU zZfAz1C@8ID7;u9g(wlqeApwHKssl7R)jbux1;|B$6FA*CfQ#hfn;iBKB!~9REGbih zf)*WM=WpM>dGo#ZzPBHajwTVb$Bq|j8^Z{Ft`_|UYu&o14TP>Cim2hDk^!UXnvGZ~ zW*}xPCHmqIMxNBN@zM~DQOg}}BuWVbnTW-1^n^+y@a5ElFZwf@q2n}hCB7q<`WCqf z8fR%b1aD{h-#!@W@ONNQwdly8CeZ!Ae3QHqFQw=tO zTMQOm3%YBlgEoxf26TJ~)VG~{>BHw0}*?fz6t-R}0 z@D(blUHnNzf)mrJ(-ME^JsV)QEuIsC#^!49{$u%^B5Uynr4@awnjrP7U=z)qDc+L$4aENTj8*Qa2jA(K~z9 zxNKfT)OywUwb8Mnv2C=`a_k~%8`(Iy3V1nDEgQcIu(1>j_u}4Sb4eVEzm@RRY`wdLIPP@)H>#GE<1UG!nu+s>@w~mao zxsq{@NTJ+Vt$gVnBrG`*{&lX8W8-pZE1CA?f%Yc7#?GaHm1I<93wQ)uxN9 zKF4+D28;_Vns!}Xq^FwMb$=1J>kjNToLXJNWwjCqGJrE7;o6Re?K<&lj#tBu6d+M2 zEeCW~h(ZMp-i2a>KrX4(EciHRiu!&M&*DOZ$$DY2mu)#=`vF@VM7*aYm%}Zv9j-_y zWwcPh-_IS5^cMocNdrfDTEI>f3nmqOiwnF7%9LeM^5Pb8n*h1Mi$&jqS0L;8eRpeP zl}`tn@>7dAE~&VY?-*cTB~4d>)Pn$I;4n@c!7$lRNr5ec2hTS>=``3W&V9a^({h?j z?)@9u%8>;X9?CQ@h=4C40(J*uF*_U@GPGQ~>A{1urlzIPU_zxB#(NTd8aBlObZcn)uoZvVxRV)wz4cn__s&}f-+B1Whp$(* zjvTv{ncYmxesw23^T(GqQ%`+~Oc4A>X8O+L;mt>XdTVm-gNe=bOWhb6Ke#=F(&OK3 zk0^<+g(@(YpUk3-%!%>X&9M`y*xyrenC>DJMGu-#DloZ*B=k|+k4}~p{p@MfsO=EQ zQom*n$gH9pJ(@63$IQl7o<0ZR$y7#qtlf`>e*X2DK?9xR2SHIWYjFism?)R2W6N?m zOhU-@0wWwELBKo;MI>g++qI!_z&&t z<}K@)+t%!sHT&N4A6qX(%nOn`O*v2l^%I!2CL&6V$+XAQpvIH-h?et=!p zV!#}VztmQQKrtKBm)A&yvA_?a+Mx=A4yG^#dpnnW9JXiS5tGnGmprq6=C(DpWleo- z9n`l9V~qa$|kt9nzLgsU#80msf)dzrmMAc~I_FUqGxk6d5{B&!o_o^%5yKCntOS^__J^#k}bnu7xNU;i_nw|2oK6+ zbVQVN5To4n3Dxj~R>k+-FmX0e<&U^JtGJ3f4Z_~oO#HCn)27RQ%#VVIq5<(fblWk* zFg`_-pP}#GjagTZUq1e+_1I_DBmW#3``trpL%?EY?CQ+=OxHAw1Q45<-d3~iL~sAT zTD@UyBN(p#>dz}1D>t)S`IBF&^#k$yiD_e8Nx|^m#9wCKpSd}|b?kIkt-D7};|JZO qX*_g4ISNt}@65b8bNwW+?KXn-&0qYj^w-h{*4B@H{x7xGj`|M^vgp|W literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/parser.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..adcf5cc468dfbe2529e051c714b7db15f0b88522 GIT binary patch literal 21482 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 z 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 I!uZDj2WDZ^YXATM literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/click/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c99a63811cb0fbd2abbc57587a99d54134877dc GIT binary patch literal 26289 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 cD}ytXo7Twv#tT-gmjD0& literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/click/_compat.py b/venv/lib/python3.12/site-packages/click/_compat.py new file mode 100644 index 0000000..23f8866 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/_compat.py @@ -0,0 +1,623 @@ +import codecs +import io +import os +import re +import sys +import typing as t +from weakref import WeakKeyDictionary + +CYGWIN = sys.platform.startswith("cygwin") +WIN = sys.platform.startswith("win") +auto_wrap_for_ansi: t.Optional[t.Callable[[t.TextIO], t.TextIO]] = None +_ansi_re = re.compile(r"\033\[[;?0-9]*[a-zA-Z]") + + +def _make_text_stream( + stream: t.BinaryIO, + encoding: t.Optional[str], + errors: t.Optional[str], + force_readable: bool = False, + force_writable: bool = False, +) -> t.TextIO: + if encoding is None: + encoding = get_best_encoding(stream) + if errors is None: + errors = "replace" + return _NonClosingTextIOWrapper( + stream, + encoding, + errors, + line_buffering=True, + force_readable=force_readable, + force_writable=force_writable, + ) + + +def is_ascii_encoding(encoding: str) -> bool: + """Checks if a given encoding is ascii.""" + try: + return codecs.lookup(encoding).name == "ascii" + except LookupError: + return False + + +def get_best_encoding(stream: t.IO[t.Any]) -> str: + """Returns the default stream encoding if not found.""" + rv = getattr(stream, "encoding", None) or sys.getdefaultencoding() + if is_ascii_encoding(rv): + return "utf-8" + return rv + + +class _NonClosingTextIOWrapper(io.TextIOWrapper): + def __init__( + self, + stream: t.BinaryIO, + encoding: t.Optional[str], + errors: t.Optional[str], + force_readable: bool = False, + force_writable: bool = False, + **extra: t.Any, + ) -> None: + self._stream = stream = t.cast( + t.BinaryIO, _FixupStream(stream, force_readable, force_writable) + ) + super().__init__(stream, encoding, errors, **extra) + + def __del__(self) -> None: + try: + self.detach() + except Exception: + pass + + def isatty(self) -> bool: + # https://bitbucket.org/pypy/pypy/issue/1803 + return self._stream.isatty() + + +class _FixupStream: + """The new io interface needs more from streams than streams + traditionally implement. As such, this fix-up code is necessary in + some circumstances. + + The forcing of readable and writable flags are there because some tools + put badly patched objects on sys (one such offender are certain version + of jupyter notebook). + """ + + def __init__( + self, + stream: t.BinaryIO, + force_readable: bool = False, + force_writable: bool = False, + ): + self._stream = stream + self._force_readable = force_readable + self._force_writable = force_writable + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._stream, name) + + def read1(self, size: int) -> bytes: + f = getattr(self._stream, "read1", None) + + if f is not None: + return t.cast(bytes, f(size)) + + return self._stream.read(size) + + def readable(self) -> bool: + if self._force_readable: + return True + x = getattr(self._stream, "readable", None) + if x is not None: + return t.cast(bool, x()) + try: + self._stream.read(0) + except Exception: + return False + return True + + def writable(self) -> bool: + if self._force_writable: + return True + x = getattr(self._stream, "writable", None) + if x is not None: + return t.cast(bool, x()) + try: + self._stream.write("") # type: ignore + except Exception: + try: + self._stream.write(b"") + except Exception: + return False + return True + + def seekable(self) -> bool: + x = getattr(self._stream, "seekable", None) + if x is not None: + return t.cast(bool, x()) + try: + self._stream.seek(self._stream.tell()) + except Exception: + return False + return True + + +def _is_binary_reader(stream: t.IO[t.Any], default: bool = False) -> bool: + try: + return isinstance(stream.read(0), bytes) + except Exception: + return default + # This happens in some cases where the stream was already + # closed. In this case, we assume the default. + + +def _is_binary_writer(stream: t.IO[t.Any], default: bool = False) -> bool: + try: + stream.write(b"") + except Exception: + try: + stream.write("") + return False + except Exception: + pass + return default + return True + + +def _find_binary_reader(stream: t.IO[t.Any]) -> t.Optional[t.BinaryIO]: + # We need to figure out if the given stream is already binary. + # This can happen because the official docs recommend detaching + # the streams to get binary streams. Some code might do this, so + # we need to deal with this case explicitly. + if _is_binary_reader(stream, False): + return t.cast(t.BinaryIO, stream) + + buf = getattr(stream, "buffer", None) + + # Same situation here; this time we assume that the buffer is + # actually binary in case it's closed. + if buf is not None and _is_binary_reader(buf, True): + return t.cast(t.BinaryIO, buf) + + return None + + +def _find_binary_writer(stream: t.IO[t.Any]) -> t.Optional[t.BinaryIO]: + # We need to figure out if the given stream is already binary. + # This can happen because the official docs recommend detaching + # the streams to get binary streams. Some code might do this, so + # we need to deal with this case explicitly. + if _is_binary_writer(stream, False): + return t.cast(t.BinaryIO, stream) + + buf = getattr(stream, "buffer", None) + + # Same situation here; this time we assume that the buffer is + # actually binary in case it's closed. + if buf is not None and _is_binary_writer(buf, True): + return t.cast(t.BinaryIO, buf) + + return None + + +def _stream_is_misconfigured(stream: t.TextIO) -> bool: + """A stream is misconfigured if its encoding is ASCII.""" + # If the stream does not have an encoding set, we assume it's set + # to ASCII. This appears to happen in certain unittest + # environments. It's not quite clear what the correct behavior is + # but this at least will force Click to recover somehow. + return is_ascii_encoding(getattr(stream, "encoding", None) or "ascii") + + +def _is_compat_stream_attr(stream: t.TextIO, attr: str, value: t.Optional[str]) -> bool: + """A stream attribute is compatible if it is equal to the + desired value or the desired value is unset and the attribute + has a value. + """ + stream_value = getattr(stream, attr, None) + return stream_value == value or (value is None and stream_value is not None) + + +def _is_compatible_text_stream( + stream: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] +) -> bool: + """Check if a stream's encoding and errors attributes are + compatible with the desired values. + """ + return _is_compat_stream_attr( + stream, "encoding", encoding + ) and _is_compat_stream_attr(stream, "errors", errors) + + +def _force_correct_text_stream( + text_stream: t.IO[t.Any], + encoding: t.Optional[str], + errors: t.Optional[str], + is_binary: t.Callable[[t.IO[t.Any], bool], bool], + find_binary: t.Callable[[t.IO[t.Any]], t.Optional[t.BinaryIO]], + force_readable: bool = False, + force_writable: bool = False, +) -> t.TextIO: + if is_binary(text_stream, False): + binary_reader = t.cast(t.BinaryIO, text_stream) + else: + text_stream = t.cast(t.TextIO, text_stream) + # If the stream looks compatible, and won't default to a + # misconfigured ascii encoding, return it as-is. + if _is_compatible_text_stream(text_stream, encoding, errors) and not ( + encoding is None and _stream_is_misconfigured(text_stream) + ): + return text_stream + + # Otherwise, get the underlying binary reader. + possible_binary_reader = find_binary(text_stream) + + # If that's not possible, silently use the original reader + # and get mojibake instead of exceptions. + if possible_binary_reader is None: + return text_stream + + binary_reader = possible_binary_reader + + # Default errors to replace instead of strict in order to get + # something that works. + if errors is None: + errors = "replace" + + # Wrap the binary stream in a text stream with the correct + # encoding parameters. + return _make_text_stream( + binary_reader, + encoding, + errors, + force_readable=force_readable, + force_writable=force_writable, + ) + + +def _force_correct_text_reader( + text_reader: t.IO[t.Any], + encoding: t.Optional[str], + errors: t.Optional[str], + force_readable: bool = False, +) -> t.TextIO: + return _force_correct_text_stream( + text_reader, + encoding, + errors, + _is_binary_reader, + _find_binary_reader, + force_readable=force_readable, + ) + + +def _force_correct_text_writer( + text_writer: t.IO[t.Any], + encoding: t.Optional[str], + errors: t.Optional[str], + force_writable: bool = False, +) -> t.TextIO: + return _force_correct_text_stream( + text_writer, + encoding, + errors, + _is_binary_writer, + _find_binary_writer, + force_writable=force_writable, + ) + + +def get_binary_stdin() -> t.BinaryIO: + reader = _find_binary_reader(sys.stdin) + if reader is None: + raise RuntimeError("Was not able to determine binary stream for sys.stdin.") + return reader + + +def get_binary_stdout() -> t.BinaryIO: + writer = _find_binary_writer(sys.stdout) + if writer is None: + raise RuntimeError("Was not able to determine binary stream for sys.stdout.") + return writer + + +def get_binary_stderr() -> t.BinaryIO: + writer = _find_binary_writer(sys.stderr) + if writer is None: + raise RuntimeError("Was not able to determine binary stream for sys.stderr.") + return writer + + +def get_text_stdin( + encoding: t.Optional[str] = None, errors: t.Optional[str] = None +) -> t.TextIO: + rv = _get_windows_console_stream(sys.stdin, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_reader(sys.stdin, encoding, errors, force_readable=True) + + +def get_text_stdout( + encoding: t.Optional[str] = None, errors: t.Optional[str] = None +) -> t.TextIO: + rv = _get_windows_console_stream(sys.stdout, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_writer(sys.stdout, encoding, errors, force_writable=True) + + +def get_text_stderr( + encoding: t.Optional[str] = None, errors: t.Optional[str] = None +) -> t.TextIO: + rv = _get_windows_console_stream(sys.stderr, encoding, errors) + if rv is not None: + return rv + return _force_correct_text_writer(sys.stderr, encoding, errors, force_writable=True) + + +def _wrap_io_open( + file: t.Union[str, "os.PathLike[str]", int], + mode: str, + encoding: t.Optional[str], + errors: t.Optional[str], +) -> t.IO[t.Any]: + """Handles not passing ``encoding`` and ``errors`` in binary mode.""" + if "b" in mode: + return open(file, mode) + + return open(file, mode, encoding=encoding, errors=errors) + + +def open_stream( + filename: "t.Union[str, os.PathLike[str]]", + mode: str = "r", + encoding: t.Optional[str] = None, + errors: t.Optional[str] = "strict", + atomic: bool = False, +) -> t.Tuple[t.IO[t.Any], bool]: + binary = "b" in mode + filename = os.fspath(filename) + + # Standard streams first. These are simple because they ignore the + # atomic flag. Use fsdecode to handle Path("-"). + if os.fsdecode(filename) == "-": + if any(m in mode for m in ["w", "a", "x"]): + if binary: + return get_binary_stdout(), False + return get_text_stdout(encoding=encoding, errors=errors), False + if binary: + return get_binary_stdin(), False + return get_text_stdin(encoding=encoding, errors=errors), False + + # Non-atomic writes directly go out through the regular open functions. + if not atomic: + return _wrap_io_open(filename, mode, encoding, errors), True + + # Some usability stuff for atomic writes + if "a" in mode: + raise ValueError( + "Appending to an existing file is not supported, because that" + " would involve an expensive `copy`-operation to a temporary" + " file. Open the file in normal `w`-mode and copy explicitly" + " if that's what you're after." + ) + if "x" in mode: + raise ValueError("Use the `overwrite`-parameter instead.") + if "w" not in mode: + raise ValueError("Atomic writes only make sense with `w`-mode.") + + # Atomic writes are more complicated. They work by opening a file + # as a proxy in the same folder and then using the fdopen + # functionality to wrap it in a Python file. Then we wrap it in an + # atomic file that moves the file over on close. + import errno + import random + + try: + perm: t.Optional[int] = os.stat(filename).st_mode + except OSError: + perm = None + + flags = os.O_RDWR | os.O_CREAT | os.O_EXCL + + if binary: + flags |= getattr(os, "O_BINARY", 0) + + while True: + tmp_filename = os.path.join( + os.path.dirname(filename), + f".__atomic-write{random.randrange(1 << 32):08x}", + ) + try: + fd = os.open(tmp_filename, flags, 0o666 if perm is None else perm) + break + except OSError as e: + if e.errno == errno.EEXIST or ( + os.name == "nt" + and e.errno == errno.EACCES + and os.path.isdir(e.filename) + and os.access(e.filename, os.W_OK) + ): + continue + raise + + if perm is not None: + os.chmod(tmp_filename, perm) # in case perm includes bits in umask + + f = _wrap_io_open(fd, mode, encoding, errors) + af = _AtomicFile(f, tmp_filename, os.path.realpath(filename)) + return t.cast(t.IO[t.Any], af), True + + +class _AtomicFile: + def __init__(self, f: t.IO[t.Any], tmp_filename: str, real_filename: str) -> None: + self._f = f + self._tmp_filename = tmp_filename + self._real_filename = real_filename + self.closed = False + + @property + def name(self) -> str: + return self._real_filename + + def close(self, delete: bool = False) -> None: + if self.closed: + return + self._f.close() + os.replace(self._tmp_filename, self._real_filename) + self.closed = True + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._f, name) + + def __enter__(self) -> "_AtomicFile": + return self + + def __exit__(self, exc_type: t.Optional[t.Type[BaseException]], *_: t.Any) -> None: + self.close(delete=exc_type is not None) + + def __repr__(self) -> str: + return repr(self._f) + + +def strip_ansi(value: str) -> str: + return _ansi_re.sub("", value) + + +def _is_jupyter_kernel_output(stream: t.IO[t.Any]) -> bool: + while isinstance(stream, (_FixupStream, _NonClosingTextIOWrapper)): + stream = stream._stream + + return stream.__class__.__module__.startswith("ipykernel.") + + +def should_strip_ansi( + stream: t.Optional[t.IO[t.Any]] = None, color: t.Optional[bool] = None +) -> bool: + if color is None: + if stream is None: + stream = sys.stdin + return not isatty(stream) and not _is_jupyter_kernel_output(stream) + return not color + + +# On Windows, wrap the output streams with colorama to support ANSI +# color codes. +# NOTE: double check is needed so mypy does not analyze this on Linux +if sys.platform.startswith("win") and WIN: + from ._winconsole import _get_windows_console_stream + + def _get_argv_encoding() -> str: + import locale + + return locale.getpreferredencoding() + + _ansi_stream_wrappers: t.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() + + def auto_wrap_for_ansi( # noqa: F811 + stream: t.TextIO, color: t.Optional[bool] = None + ) -> t.TextIO: + """Support ANSI color and style codes on Windows by wrapping a + stream with colorama. + """ + try: + cached = _ansi_stream_wrappers.get(stream) + except Exception: + cached = None + + if cached is not None: + return cached + + import colorama + + strip = should_strip_ansi(stream, color) + ansi_wrapper = colorama.AnsiToWin32(stream, strip=strip) + rv = t.cast(t.TextIO, ansi_wrapper.stream) + _write = rv.write + + def _safe_write(s): + try: + return _write(s) + except BaseException: + ansi_wrapper.reset_all() + raise + + rv.write = _safe_write + + try: + _ansi_stream_wrappers[stream] = rv + except Exception: + pass + + return rv + +else: + + def _get_argv_encoding() -> str: + return getattr(sys.stdin, "encoding", None) or sys.getfilesystemencoding() + + def _get_windows_console_stream( + f: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] + ) -> t.Optional[t.TextIO]: + return None + + +def term_len(x: str) -> int: + return len(strip_ansi(x)) + + +def isatty(stream: t.IO[t.Any]) -> bool: + try: + return stream.isatty() + except Exception: + return False + + +def _make_cached_stream_func( + src_func: t.Callable[[], t.Optional[t.TextIO]], + wrapper_func: t.Callable[[], t.TextIO], +) -> t.Callable[[], t.Optional[t.TextIO]]: + cache: t.MutableMapping[t.TextIO, t.TextIO] = WeakKeyDictionary() + + def func() -> t.Optional[t.TextIO]: + stream = src_func() + + if stream is None: + return None + + try: + rv = cache.get(stream) + except Exception: + rv = None + if rv is not None: + return rv + rv = wrapper_func() + try: + cache[stream] = rv + except Exception: + pass + return rv + + return func + + +_default_text_stdin = _make_cached_stream_func(lambda: sys.stdin, get_text_stdin) +_default_text_stdout = _make_cached_stream_func(lambda: sys.stdout, get_text_stdout) +_default_text_stderr = _make_cached_stream_func(lambda: sys.stderr, get_text_stderr) + + +binary_streams: t.Mapping[str, t.Callable[[], t.BinaryIO]] = { + "stdin": get_binary_stdin, + "stdout": get_binary_stdout, + "stderr": get_binary_stderr, +} + +text_streams: t.Mapping[ + str, t.Callable[[t.Optional[str], t.Optional[str]], t.TextIO] +] = { + "stdin": get_text_stdin, + "stdout": get_text_stdout, + "stderr": get_text_stderr, +} diff --git a/venv/lib/python3.12/site-packages/click/_termui_impl.py b/venv/lib/python3.12/site-packages/click/_termui_impl.py new file mode 100644 index 0000000..f744657 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/_termui_impl.py @@ -0,0 +1,739 @@ +""" +This module contains implementations for the termui module. To keep the +import time of Click down, some infrequently used functionality is +placed in this module and only imported as needed. +""" +import contextlib +import math +import os +import sys +import time +import typing as t +from gettext import gettext as _ +from io import StringIO +from types import TracebackType + +from ._compat import _default_text_stdout +from ._compat import CYGWIN +from ._compat import get_best_encoding +from ._compat import isatty +from ._compat import open_stream +from ._compat import strip_ansi +from ._compat import term_len +from ._compat import WIN +from .exceptions import ClickException +from .utils import echo + +V = t.TypeVar("V") + +if os.name == "nt": + BEFORE_BAR = "\r" + AFTER_BAR = "\n" +else: + BEFORE_BAR = "\r\033[?25l" + AFTER_BAR = "\033[?25h\n" + + +class ProgressBar(t.Generic[V]): + def __init__( + self, + iterable: t.Optional[t.Iterable[V]], + length: t.Optional[int] = None, + fill_char: str = "#", + empty_char: str = " ", + bar_template: str = "%(bar)s", + info_sep: str = " ", + show_eta: bool = True, + show_percent: t.Optional[bool] = None, + show_pos: bool = False, + item_show_func: t.Optional[t.Callable[[t.Optional[V]], t.Optional[str]]] = None, + label: t.Optional[str] = None, + file: t.Optional[t.TextIO] = None, + color: t.Optional[bool] = None, + update_min_steps: int = 1, + width: int = 30, + ) -> None: + self.fill_char = fill_char + self.empty_char = empty_char + self.bar_template = bar_template + self.info_sep = info_sep + self.show_eta = show_eta + self.show_percent = show_percent + self.show_pos = show_pos + self.item_show_func = item_show_func + self.label: str = label or "" + + if file is None: + file = _default_text_stdout() + + # There are no standard streams attached to write to. For example, + # pythonw on Windows. + if file is None: + file = StringIO() + + self.file = file + self.color = color + self.update_min_steps = update_min_steps + self._completed_intervals = 0 + self.width: int = width + self.autowidth: bool = width == 0 + + if length is None: + from operator import length_hint + + length = length_hint(iterable, -1) + + if length == -1: + length = None + if iterable is None: + if length is None: + raise TypeError("iterable or length is required") + iterable = t.cast(t.Iterable[V], range(length)) + self.iter: t.Iterable[V] = iter(iterable) + self.length = length + self.pos = 0 + self.avg: t.List[float] = [] + self.last_eta: float + self.start: float + self.start = self.last_eta = time.time() + self.eta_known: bool = False + self.finished: bool = False + self.max_width: t.Optional[int] = None + self.entered: bool = False + self.current_item: t.Optional[V] = None + self.is_hidden: bool = not isatty(self.file) + self._last_line: t.Optional[str] = None + + def __enter__(self) -> "ProgressBar[V]": + self.entered = True + self.render_progress() + return self + + def __exit__( + self, + exc_type: t.Optional[t.Type[BaseException]], + exc_value: t.Optional[BaseException], + tb: t.Optional[TracebackType], + ) -> None: + self.render_finish() + + def __iter__(self) -> t.Iterator[V]: + if not self.entered: + raise RuntimeError("You need to use progress bars in a with block.") + self.render_progress() + return self.generator() + + def __next__(self) -> V: + # Iteration is defined in terms of a generator function, + # returned by iter(self); use that to define next(). This works + # because `self.iter` is an iterable consumed by that generator, + # so it is re-entry safe. Calling `next(self.generator())` + # twice works and does "what you want". + return next(iter(self)) + + def render_finish(self) -> None: + if self.is_hidden: + return + self.file.write(AFTER_BAR) + self.file.flush() + + @property + def pct(self) -> float: + if self.finished: + return 1.0 + return min(self.pos / (float(self.length or 1) or 1), 1.0) + + @property + def time_per_iteration(self) -> float: + if not self.avg: + return 0.0 + return sum(self.avg) / float(len(self.avg)) + + @property + def eta(self) -> float: + if self.length is not None and not self.finished: + return self.time_per_iteration * (self.length - self.pos) + return 0.0 + + def format_eta(self) -> str: + if self.eta_known: + t = int(self.eta) + seconds = t % 60 + t //= 60 + minutes = t % 60 + t //= 60 + hours = t % 24 + t //= 24 + if t > 0: + return f"{t}d {hours:02}:{minutes:02}:{seconds:02}" + else: + return f"{hours:02}:{minutes:02}:{seconds:02}" + return "" + + def format_pos(self) -> str: + pos = str(self.pos) + if self.length is not None: + pos += f"/{self.length}" + return pos + + def format_pct(self) -> str: + return f"{int(self.pct * 100): 4}%"[1:] + + def format_bar(self) -> str: + if self.length is not None: + bar_length = int(self.pct * self.width) + bar = self.fill_char * bar_length + bar += self.empty_char * (self.width - bar_length) + elif self.finished: + bar = self.fill_char * self.width + else: + chars = list(self.empty_char * (self.width or 1)) + if self.time_per_iteration != 0: + chars[ + int( + (math.cos(self.pos * self.time_per_iteration) / 2.0 + 0.5) + * self.width + ) + ] = self.fill_char + bar = "".join(chars) + return bar + + def format_progress_line(self) -> str: + show_percent = self.show_percent + + info_bits = [] + if self.length is not None and show_percent is None: + show_percent = not self.show_pos + + if self.show_pos: + info_bits.append(self.format_pos()) + if show_percent: + info_bits.append(self.format_pct()) + if self.show_eta and self.eta_known and not self.finished: + info_bits.append(self.format_eta()) + if self.item_show_func is not None: + item_info = self.item_show_func(self.current_item) + if item_info is not None: + info_bits.append(item_info) + + return ( + self.bar_template + % { + "label": self.label, + "bar": self.format_bar(), + "info": self.info_sep.join(info_bits), + } + ).rstrip() + + def render_progress(self) -> None: + import shutil + + if self.is_hidden: + # Only output the label as it changes if the output is not a + # TTY. Use file=stderr if you expect to be piping stdout. + if self._last_line != self.label: + self._last_line = self.label + echo(self.label, file=self.file, color=self.color) + + return + + buf = [] + # Update width in case the terminal has been resized + if self.autowidth: + old_width = self.width + self.width = 0 + clutter_length = term_len(self.format_progress_line()) + new_width = max(0, shutil.get_terminal_size().columns - clutter_length) + if new_width < old_width: + buf.append(BEFORE_BAR) + buf.append(" " * self.max_width) # type: ignore + self.max_width = new_width + self.width = new_width + + clear_width = self.width + if self.max_width is not None: + clear_width = self.max_width + + buf.append(BEFORE_BAR) + line = self.format_progress_line() + line_len = term_len(line) + if self.max_width is None or self.max_width < line_len: + self.max_width = line_len + + buf.append(line) + buf.append(" " * (clear_width - line_len)) + line = "".join(buf) + # Render the line only if it changed. + + if line != self._last_line: + self._last_line = line + echo(line, file=self.file, color=self.color, nl=False) + self.file.flush() + + def make_step(self, n_steps: int) -> None: + self.pos += n_steps + if self.length is not None and self.pos >= self.length: + self.finished = True + + if (time.time() - self.last_eta) < 1.0: + return + + self.last_eta = time.time() + + # self.avg is a rolling list of length <= 7 of steps where steps are + # defined as time elapsed divided by the total progress through + # self.length. + if self.pos: + step = (time.time() - self.start) / self.pos + else: + step = time.time() - self.start + + self.avg = self.avg[-6:] + [step] + + self.eta_known = self.length is not None + + def update(self, n_steps: int, current_item: t.Optional[V] = None) -> None: + """Update the progress bar by advancing a specified number of + steps, and optionally set the ``current_item`` for this new + position. + + :param n_steps: Number of steps to advance. + :param current_item: Optional item to set as ``current_item`` + for the updated position. + + .. versionchanged:: 8.0 + Added the ``current_item`` optional parameter. + + .. versionchanged:: 8.0 + Only render when the number of steps meets the + ``update_min_steps`` threshold. + """ + if current_item is not None: + self.current_item = current_item + + self._completed_intervals += n_steps + + if self._completed_intervals >= self.update_min_steps: + self.make_step(self._completed_intervals) + self.render_progress() + self._completed_intervals = 0 + + def finish(self) -> None: + self.eta_known = False + self.current_item = None + self.finished = True + + def generator(self) -> t.Iterator[V]: + """Return a generator which yields the items added to the bar + during construction, and updates the progress bar *after* the + yielded block returns. + """ + # WARNING: the iterator interface for `ProgressBar` relies on + # this and only works because this is a simple generator which + # doesn't create or manage additional state. If this function + # changes, the impact should be evaluated both against + # `iter(bar)` and `next(bar)`. `next()` in particular may call + # `self.generator()` repeatedly, and this must remain safe in + # order for that interface to work. + if not self.entered: + raise RuntimeError("You need to use progress bars in a with block.") + + if self.is_hidden: + yield from self.iter + else: + for rv in self.iter: + self.current_item = rv + + # This allows show_item_func to be updated before the + # item is processed. Only trigger at the beginning of + # the update interval. + if self._completed_intervals == 0: + self.render_progress() + + yield rv + self.update(1) + + self.finish() + self.render_progress() + + +def pager(generator: t.Iterable[str], color: t.Optional[bool] = None) -> None: + """Decide what method to use for paging through text.""" + stdout = _default_text_stdout() + + # There are no standard streams attached to write to. For example, + # pythonw on Windows. + if stdout is None: + stdout = StringIO() + + if not isatty(sys.stdin) or not isatty(stdout): + return _nullpager(stdout, generator, color) + pager_cmd = (os.environ.get("PAGER", None) or "").strip() + if pager_cmd: + if WIN: + return _tempfilepager(generator, pager_cmd, color) + return _pipepager(generator, pager_cmd, color) + if os.environ.get("TERM") in ("dumb", "emacs"): + return _nullpager(stdout, generator, color) + if WIN or sys.platform.startswith("os2"): + return _tempfilepager(generator, "more <", color) + if hasattr(os, "system") and os.system("(less) 2>/dev/null") == 0: + return _pipepager(generator, "less", color) + + import tempfile + + fd, filename = tempfile.mkstemp() + os.close(fd) + try: + if hasattr(os, "system") and os.system(f'more "{filename}"') == 0: + return _pipepager(generator, "more", color) + return _nullpager(stdout, generator, color) + finally: + os.unlink(filename) + + +def _pipepager(generator: t.Iterable[str], cmd: str, color: t.Optional[bool]) -> None: + """Page through text by feeding it to another program. Invoking a + pager through this might support colors. + """ + import subprocess + + env = dict(os.environ) + + # If we're piping to less we might support colors under the + # condition that + cmd_detail = cmd.rsplit("/", 1)[-1].split() + if color is None and cmd_detail[0] == "less": + less_flags = f"{os.environ.get('LESS', '')}{' '.join(cmd_detail[1:])}" + if not less_flags: + env["LESS"] = "-R" + color = True + elif "r" in less_flags or "R" in less_flags: + color = True + + c = subprocess.Popen(cmd, shell=True, stdin=subprocess.PIPE, env=env) + stdin = t.cast(t.BinaryIO, c.stdin) + encoding = get_best_encoding(stdin) + try: + for text in generator: + if not color: + text = strip_ansi(text) + + stdin.write(text.encode(encoding, "replace")) + except (OSError, KeyboardInterrupt): + pass + else: + stdin.close() + + # Less doesn't respect ^C, but catches it for its own UI purposes (aborting + # search or other commands inside less). + # + # That means when the user hits ^C, the parent process (click) terminates, + # but less is still alive, paging the output and messing up the terminal. + # + # If the user wants to make the pager exit on ^C, they should set + # `LESS='-K'`. It's not our decision to make. + while True: + try: + c.wait() + except KeyboardInterrupt: + pass + else: + break + + +def _tempfilepager( + generator: t.Iterable[str], cmd: str, color: t.Optional[bool] +) -> None: + """Page through text by invoking a program on a temporary file.""" + import tempfile + + fd, filename = tempfile.mkstemp() + # TODO: This never terminates if the passed generator never terminates. + text = "".join(generator) + if not color: + text = strip_ansi(text) + encoding = get_best_encoding(sys.stdout) + with open_stream(filename, "wb")[0] as f: + f.write(text.encode(encoding)) + try: + os.system(f'{cmd} "{filename}"') + finally: + os.close(fd) + os.unlink(filename) + + +def _nullpager( + stream: t.TextIO, generator: t.Iterable[str], color: t.Optional[bool] +) -> None: + """Simply print unformatted text. This is the ultimate fallback.""" + for text in generator: + if not color: + text = strip_ansi(text) + stream.write(text) + + +class Editor: + def __init__( + self, + editor: t.Optional[str] = None, + env: t.Optional[t.Mapping[str, str]] = None, + require_save: bool = True, + extension: str = ".txt", + ) -> None: + self.editor = editor + self.env = env + self.require_save = require_save + self.extension = extension + + def get_editor(self) -> str: + if self.editor is not None: + return self.editor + for key in "VISUAL", "EDITOR": + rv = os.environ.get(key) + if rv: + return rv + if WIN: + return "notepad" + for editor in "sensible-editor", "vim", "nano": + if os.system(f"which {editor} >/dev/null 2>&1") == 0: + return editor + return "vi" + + def edit_file(self, filename: str) -> None: + import subprocess + + editor = self.get_editor() + environ: t.Optional[t.Dict[str, str]] = None + + if self.env: + environ = os.environ.copy() + environ.update(self.env) + + try: + c = subprocess.Popen(f'{editor} "{filename}"', env=environ, shell=True) + exit_code = c.wait() + if exit_code != 0: + raise ClickException( + _("{editor}: Editing failed").format(editor=editor) + ) + except OSError as e: + raise ClickException( + _("{editor}: Editing failed: {e}").format(editor=editor, e=e) + ) from e + + def edit(self, text: t.Optional[t.AnyStr]) -> t.Optional[t.AnyStr]: + import tempfile + + if not text: + data = b"" + elif isinstance(text, (bytes, bytearray)): + data = text + else: + if text and not text.endswith("\n"): + text += "\n" + + if WIN: + data = text.replace("\n", "\r\n").encode("utf-8-sig") + else: + data = text.encode("utf-8") + + fd, name = tempfile.mkstemp(prefix="editor-", suffix=self.extension) + f: t.BinaryIO + + try: + with os.fdopen(fd, "wb") as f: + f.write(data) + + # If the filesystem resolution is 1 second, like Mac OS + # 10.12 Extended, or 2 seconds, like FAT32, and the editor + # closes very fast, require_save can fail. Set the modified + # time to be 2 seconds in the past to work around this. + os.utime(name, (os.path.getatime(name), os.path.getmtime(name) - 2)) + # Depending on the resolution, the exact value might not be + # recorded, so get the new recorded value. + timestamp = os.path.getmtime(name) + + self.edit_file(name) + + if self.require_save and os.path.getmtime(name) == timestamp: + return None + + with open(name, "rb") as f: + rv = f.read() + + if isinstance(text, (bytes, bytearray)): + return rv + + return rv.decode("utf-8-sig").replace("\r\n", "\n") # type: ignore + finally: + os.unlink(name) + + +def open_url(url: str, wait: bool = False, locate: bool = False) -> int: + import subprocess + + def _unquote_file(url: str) -> str: + from urllib.parse import unquote + + if url.startswith("file://"): + url = unquote(url[7:]) + + return url + + if sys.platform == "darwin": + args = ["open"] + if wait: + args.append("-W") + if locate: + args.append("-R") + args.append(_unquote_file(url)) + null = open("/dev/null", "w") + try: + return subprocess.Popen(args, stderr=null).wait() + finally: + null.close() + elif WIN: + if locate: + url = _unquote_file(url.replace('"', "")) + args = f'explorer /select,"{url}"' + else: + url = url.replace('"', "") + wait_str = "/WAIT" if wait else "" + args = f'start {wait_str} "" "{url}"' + return os.system(args) + elif CYGWIN: + if locate: + url = os.path.dirname(_unquote_file(url).replace('"', "")) + args = f'cygstart "{url}"' + else: + url = url.replace('"', "") + wait_str = "-w" if wait else "" + args = f'cygstart {wait_str} "{url}"' + return os.system(args) + + try: + if locate: + url = os.path.dirname(_unquote_file(url)) or "." + else: + url = _unquote_file(url) + c = subprocess.Popen(["xdg-open", url]) + if wait: + return c.wait() + return 0 + except OSError: + if url.startswith(("http://", "https://")) and not locate and not wait: + import webbrowser + + webbrowser.open(url) + return 0 + return 1 + + +def _translate_ch_to_exc(ch: str) -> t.Optional[BaseException]: + if ch == "\x03": + raise KeyboardInterrupt() + + if ch == "\x04" and not WIN: # Unix-like, Ctrl+D + raise EOFError() + + if ch == "\x1a" and WIN: # Windows, Ctrl+Z + raise EOFError() + + return None + + +if WIN: + import msvcrt + + @contextlib.contextmanager + def raw_terminal() -> t.Iterator[int]: + yield -1 + + def getchar(echo: bool) -> str: + # The function `getch` will return a bytes object corresponding to + # the pressed character. Since Windows 10 build 1803, it will also + # return \x00 when called a second time after pressing a regular key. + # + # `getwch` does not share this probably-bugged behavior. Moreover, it + # returns a Unicode object by default, which is what we want. + # + # Either of these functions will return \x00 or \xe0 to indicate + # a special key, and you need to call the same function again to get + # the "rest" of the code. The fun part is that \u00e0 is + # "latin small letter a with grave", so if you type that on a French + # keyboard, you _also_ get a \xe0. + # E.g., consider the Up arrow. This returns \xe0 and then \x48. The + # resulting Unicode string reads as "a with grave" + "capital H". + # This is indistinguishable from when the user actually types + # "a with grave" and then "capital H". + # + # When \xe0 is returned, we assume it's part of a special-key sequence + # and call `getwch` again, but that means that when the user types + # the \u00e0 character, `getchar` doesn't return until a second + # character is typed. + # The alternative is returning immediately, but that would mess up + # cross-platform handling of arrow keys and others that start with + # \xe0. Another option is using `getch`, but then we can't reliably + # read non-ASCII characters, because return values of `getch` are + # limited to the current 8-bit codepage. + # + # Anyway, Click doesn't claim to do this Right(tm), and using `getwch` + # is doing the right thing in more situations than with `getch`. + func: t.Callable[[], str] + + if echo: + func = msvcrt.getwche # type: ignore + else: + func = msvcrt.getwch # type: ignore + + rv = func() + + if rv in ("\x00", "\xe0"): + # \x00 and \xe0 are control characters that indicate special key, + # see above. + rv += func() + + _translate_ch_to_exc(rv) + return rv + +else: + import tty + import termios + + @contextlib.contextmanager + def raw_terminal() -> t.Iterator[int]: + f: t.Optional[t.TextIO] + fd: int + + if not isatty(sys.stdin): + f = open("/dev/tty") + fd = f.fileno() + else: + fd = sys.stdin.fileno() + f = None + + try: + old_settings = termios.tcgetattr(fd) + + try: + tty.setraw(fd) + yield fd + finally: + termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) + sys.stdout.flush() + + if f is not None: + f.close() + except termios.error: + pass + + def getchar(echo: bool) -> str: + with raw_terminal() as fd: + ch = os.read(fd, 32).decode(get_best_encoding(sys.stdin), "replace") + + if echo and isatty(sys.stdout): + sys.stdout.write(ch) + + _translate_ch_to_exc(ch) + return ch diff --git a/venv/lib/python3.12/site-packages/click/_textwrap.py b/venv/lib/python3.12/site-packages/click/_textwrap.py new file mode 100644 index 0000000..b47dcbd --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/_textwrap.py @@ -0,0 +1,49 @@ +import textwrap +import typing as t +from contextlib import contextmanager + + +class TextWrapper(textwrap.TextWrapper): + def _handle_long_word( + self, + reversed_chunks: t.List[str], + cur_line: t.List[str], + cur_len: int, + width: int, + ) -> None: + space_left = max(width - cur_len, 1) + + if self.break_long_words: + last = reversed_chunks[-1] + cut = last[:space_left] + res = last[space_left:] + cur_line.append(cut) + reversed_chunks[-1] = res + elif not cur_line: + cur_line.append(reversed_chunks.pop()) + + @contextmanager + def extra_indent(self, indent: str) -> t.Iterator[None]: + old_initial_indent = self.initial_indent + old_subsequent_indent = self.subsequent_indent + self.initial_indent += indent + self.subsequent_indent += indent + + try: + yield + finally: + self.initial_indent = old_initial_indent + self.subsequent_indent = old_subsequent_indent + + def indent_only(self, text: str) -> str: + rv = [] + + for idx, line in enumerate(text.splitlines()): + indent = self.initial_indent + + if idx > 0: + indent = self.subsequent_indent + + rv.append(f"{indent}{line}") + + return "\n".join(rv) diff --git a/venv/lib/python3.12/site-packages/click/_winconsole.py b/venv/lib/python3.12/site-packages/click/_winconsole.py new file mode 100644 index 0000000..6b20df3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/_winconsole.py @@ -0,0 +1,279 @@ +# This module is based on the excellent work by Adam Bartoš who +# provided a lot of what went into the implementation here in +# the discussion to issue1602 in the Python bug tracker. +# +# There are some general differences in regards to how this works +# compared to the original patches as we do not need to patch +# the entire interpreter but just work in our little world of +# echo and prompt. +import io +import sys +import time +import typing as t +from ctypes import byref +from ctypes import c_char +from ctypes import c_char_p +from ctypes import c_int +from ctypes import c_ssize_t +from ctypes import c_ulong +from ctypes import c_void_p +from ctypes import POINTER +from ctypes import py_object +from ctypes import Structure +from ctypes.wintypes import DWORD +from ctypes.wintypes import HANDLE +from ctypes.wintypes import LPCWSTR +from ctypes.wintypes import LPWSTR + +from ._compat import _NonClosingTextIOWrapper + +assert sys.platform == "win32" +import msvcrt # noqa: E402 +from ctypes import windll # noqa: E402 +from ctypes import WINFUNCTYPE # noqa: E402 + +c_ssize_p = POINTER(c_ssize_t) + +kernel32 = windll.kernel32 +GetStdHandle = kernel32.GetStdHandle +ReadConsoleW = kernel32.ReadConsoleW +WriteConsoleW = kernel32.WriteConsoleW +GetConsoleMode = kernel32.GetConsoleMode +GetLastError = kernel32.GetLastError +GetCommandLineW = WINFUNCTYPE(LPWSTR)(("GetCommandLineW", windll.kernel32)) +CommandLineToArgvW = WINFUNCTYPE(POINTER(LPWSTR), LPCWSTR, POINTER(c_int))( + ("CommandLineToArgvW", windll.shell32) +) +LocalFree = WINFUNCTYPE(c_void_p, c_void_p)(("LocalFree", windll.kernel32)) + +STDIN_HANDLE = GetStdHandle(-10) +STDOUT_HANDLE = GetStdHandle(-11) +STDERR_HANDLE = GetStdHandle(-12) + +PyBUF_SIMPLE = 0 +PyBUF_WRITABLE = 1 + +ERROR_SUCCESS = 0 +ERROR_NOT_ENOUGH_MEMORY = 8 +ERROR_OPERATION_ABORTED = 995 + +STDIN_FILENO = 0 +STDOUT_FILENO = 1 +STDERR_FILENO = 2 + +EOF = b"\x1a" +MAX_BYTES_WRITTEN = 32767 + +try: + from ctypes import pythonapi +except ImportError: + # On PyPy we cannot get buffers so our ability to operate here is + # severely limited. + get_buffer = None +else: + + class Py_buffer(Structure): + _fields_ = [ + ("buf", c_void_p), + ("obj", py_object), + ("len", c_ssize_t), + ("itemsize", c_ssize_t), + ("readonly", c_int), + ("ndim", c_int), + ("format", c_char_p), + ("shape", c_ssize_p), + ("strides", c_ssize_p), + ("suboffsets", c_ssize_p), + ("internal", c_void_p), + ] + + PyObject_GetBuffer = pythonapi.PyObject_GetBuffer + PyBuffer_Release = pythonapi.PyBuffer_Release + + def get_buffer(obj, writable=False): + buf = Py_buffer() + flags = PyBUF_WRITABLE if writable else PyBUF_SIMPLE + PyObject_GetBuffer(py_object(obj), byref(buf), flags) + + try: + buffer_type = c_char * buf.len + return buffer_type.from_address(buf.buf) + finally: + PyBuffer_Release(byref(buf)) + + +class _WindowsConsoleRawIOBase(io.RawIOBase): + def __init__(self, handle): + self.handle = handle + + def isatty(self): + super().isatty() + return True + + +class _WindowsConsoleReader(_WindowsConsoleRawIOBase): + def readable(self): + return True + + def readinto(self, b): + bytes_to_be_read = len(b) + if not bytes_to_be_read: + return 0 + elif bytes_to_be_read % 2: + raise ValueError( + "cannot read odd number of bytes from UTF-16-LE encoded console" + ) + + buffer = get_buffer(b, writable=True) + code_units_to_be_read = bytes_to_be_read // 2 + code_units_read = c_ulong() + + rv = ReadConsoleW( + HANDLE(self.handle), + buffer, + code_units_to_be_read, + byref(code_units_read), + None, + ) + if GetLastError() == ERROR_OPERATION_ABORTED: + # wait for KeyboardInterrupt + time.sleep(0.1) + if not rv: + raise OSError(f"Windows error: {GetLastError()}") + + if buffer[0] == EOF: + return 0 + return 2 * code_units_read.value + + +class _WindowsConsoleWriter(_WindowsConsoleRawIOBase): + def writable(self): + return True + + @staticmethod + def _get_error_message(errno): + if errno == ERROR_SUCCESS: + return "ERROR_SUCCESS" + elif errno == ERROR_NOT_ENOUGH_MEMORY: + return "ERROR_NOT_ENOUGH_MEMORY" + return f"Windows error {errno}" + + def write(self, b): + bytes_to_be_written = len(b) + buf = get_buffer(b) + code_units_to_be_written = min(bytes_to_be_written, MAX_BYTES_WRITTEN) // 2 + code_units_written = c_ulong() + + WriteConsoleW( + HANDLE(self.handle), + buf, + code_units_to_be_written, + byref(code_units_written), + None, + ) + bytes_written = 2 * code_units_written.value + + if bytes_written == 0 and bytes_to_be_written > 0: + raise OSError(self._get_error_message(GetLastError())) + return bytes_written + + +class ConsoleStream: + def __init__(self, text_stream: t.TextIO, byte_stream: t.BinaryIO) -> None: + self._text_stream = text_stream + self.buffer = byte_stream + + @property + def name(self) -> str: + return self.buffer.name + + def write(self, x: t.AnyStr) -> int: + if isinstance(x, str): + return self._text_stream.write(x) + try: + self.flush() + except Exception: + pass + return self.buffer.write(x) + + def writelines(self, lines: t.Iterable[t.AnyStr]) -> None: + for line in lines: + self.write(line) + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._text_stream, name) + + def isatty(self) -> bool: + return self.buffer.isatty() + + def __repr__(self): + return f"" + + +def _get_text_stdin(buffer_stream: t.BinaryIO) -> t.TextIO: + text_stream = _NonClosingTextIOWrapper( + io.BufferedReader(_WindowsConsoleReader(STDIN_HANDLE)), + "utf-16-le", + "strict", + line_buffering=True, + ) + return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) + + +def _get_text_stdout(buffer_stream: t.BinaryIO) -> t.TextIO: + text_stream = _NonClosingTextIOWrapper( + io.BufferedWriter(_WindowsConsoleWriter(STDOUT_HANDLE)), + "utf-16-le", + "strict", + line_buffering=True, + ) + return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) + + +def _get_text_stderr(buffer_stream: t.BinaryIO) -> t.TextIO: + text_stream = _NonClosingTextIOWrapper( + io.BufferedWriter(_WindowsConsoleWriter(STDERR_HANDLE)), + "utf-16-le", + "strict", + line_buffering=True, + ) + return t.cast(t.TextIO, ConsoleStream(text_stream, buffer_stream)) + + +_stream_factories: t.Mapping[int, t.Callable[[t.BinaryIO], t.TextIO]] = { + 0: _get_text_stdin, + 1: _get_text_stdout, + 2: _get_text_stderr, +} + + +def _is_console(f: t.TextIO) -> bool: + if not hasattr(f, "fileno"): + return False + + try: + fileno = f.fileno() + except (OSError, io.UnsupportedOperation): + return False + + handle = msvcrt.get_osfhandle(fileno) + return bool(GetConsoleMode(handle, byref(DWORD()))) + + +def _get_windows_console_stream( + f: t.TextIO, encoding: t.Optional[str], errors: t.Optional[str] +) -> t.Optional[t.TextIO]: + if ( + get_buffer is not None + and encoding in {"utf-16-le", None} + and errors in {"strict", None} + and _is_console(f) + ): + func = _stream_factories.get(f.fileno()) + if func is not None: + b = getattr(f, "buffer", None) + + if b is None: + return None + + return func(b) diff --git a/venv/lib/python3.12/site-packages/click/core.py b/venv/lib/python3.12/site-packages/click/core.py new file mode 100644 index 0000000..cc65e89 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/core.py @@ -0,0 +1,3042 @@ +import enum +import errno +import inspect +import os +import sys +import typing as t +from collections import abc +from contextlib import contextmanager +from contextlib import ExitStack +from functools import update_wrapper +from gettext import gettext as _ +from gettext import ngettext +from itertools import repeat +from types import TracebackType + +from . import types +from .exceptions import Abort +from .exceptions import BadParameter +from .exceptions import ClickException +from .exceptions import Exit +from .exceptions import MissingParameter +from .exceptions import UsageError +from .formatting import HelpFormatter +from .formatting import join_options +from .globals import pop_context +from .globals import push_context +from .parser import _flag_needs_value +from .parser import OptionParser +from .parser import split_opt +from .termui import confirm +from .termui import prompt +from .termui import style +from .utils import _detect_program_name +from .utils import _expand_args +from .utils import echo +from .utils import make_default_short_help +from .utils import make_str +from .utils import PacifyFlushWrapper + +if t.TYPE_CHECKING: + import typing_extensions as te + from .shell_completion import CompletionItem + +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) +V = t.TypeVar("V") + + +def _complete_visible_commands( + ctx: "Context", incomplete: str +) -> t.Iterator[t.Tuple[str, "Command"]]: + """List all the subcommands of a group that start with the + incomplete value and aren't hidden. + + :param ctx: Invocation context for the group. + :param incomplete: Value being completed. May be empty. + """ + multi = t.cast(MultiCommand, ctx.command) + + for name in multi.list_commands(ctx): + if name.startswith(incomplete): + command = multi.get_command(ctx, name) + + if command is not None and not command.hidden: + yield name, command + + +def _check_multicommand( + base_command: "MultiCommand", cmd_name: str, cmd: "Command", register: bool = False +) -> None: + if not base_command.chain or not isinstance(cmd, MultiCommand): + return + if register: + hint = ( + "It is not possible to add multi commands as children to" + " another multi command that is in chain mode." + ) + else: + hint = ( + "Found a multi command as subcommand to a multi command" + " that is in chain mode. This is not supported." + ) + raise RuntimeError( + f"{hint}. Command {base_command.name!r} is set to chain and" + f" {cmd_name!r} was added as a subcommand but it in itself is a" + f" multi command. ({cmd_name!r} is a {type(cmd).__name__}" + f" within a chained {type(base_command).__name__} named" + f" {base_command.name!r})." + ) + + +def batch(iterable: t.Iterable[V], batch_size: int) -> t.List[t.Tuple[V, ...]]: + return list(zip(*repeat(iter(iterable), batch_size))) + + +@contextmanager +def augment_usage_errors( + ctx: "Context", param: t.Optional["Parameter"] = None +) -> t.Iterator[None]: + """Context manager that attaches extra information to exceptions.""" + try: + yield + except BadParameter as e: + if e.ctx is None: + e.ctx = ctx + if param is not None and e.param is None: + e.param = param + raise + except UsageError as e: + if e.ctx is None: + e.ctx = ctx + raise + + +def iter_params_for_processing( + invocation_order: t.Sequence["Parameter"], + declaration_order: t.Sequence["Parameter"], +) -> t.List["Parameter"]: + """Given a sequence of parameters in the order as should be considered + for processing and an iterable of parameters that exist, this returns + a list in the correct order as they should be processed. + """ + + def sort_key(item: "Parameter") -> t.Tuple[bool, float]: + try: + idx: float = invocation_order.index(item) + except ValueError: + idx = float("inf") + + return not item.is_eager, idx + + return sorted(declaration_order, key=sort_key) + + +class ParameterSource(enum.Enum): + """This is an :class:`~enum.Enum` that indicates the source of a + parameter's value. + + Use :meth:`click.Context.get_parameter_source` to get the + source for a parameter by name. + + .. versionchanged:: 8.0 + Use :class:`~enum.Enum` and drop the ``validate`` method. + + .. versionchanged:: 8.0 + Added the ``PROMPT`` value. + """ + + COMMANDLINE = enum.auto() + """The value was provided by the command line args.""" + ENVIRONMENT = enum.auto() + """The value was provided with an environment variable.""" + DEFAULT = enum.auto() + """Used the default specified by the parameter.""" + DEFAULT_MAP = enum.auto() + """Used a default provided by :attr:`Context.default_map`.""" + PROMPT = enum.auto() + """Used a prompt to confirm a default or provide a value.""" + + +class Context: + """The context is a special internal object that holds state relevant + for the script execution at every single level. It's normally invisible + to commands unless they opt-in to getting access to it. + + The context is useful as it can pass internal objects around and can + control special execution features such as reading data from + environment variables. + + A context can be used as context manager in which case it will call + :meth:`close` on teardown. + + :param command: the command class for this context. + :param parent: the parent context. + :param info_name: the info name for this invocation. Generally this + is the most descriptive name for the script or + command. For the toplevel script it is usually + the name of the script, for commands below it it's + the name of the script. + :param obj: an arbitrary object of user data. + :param auto_envvar_prefix: the prefix to use for automatic environment + variables. If this is `None` then reading + from environment variables is disabled. This + does not affect manually set environment + variables which are always read. + :param default_map: a dictionary (like object) with default values + for parameters. + :param terminal_width: the width of the terminal. The default is + inherit from parent context. If no context + defines the terminal width then auto + detection will be applied. + :param max_content_width: the maximum width for content rendered by + Click (this currently only affects help + pages). This defaults to 80 characters if + not overridden. In other words: even if the + terminal is larger than that, Click will not + format things wider than 80 characters by + default. In addition to that, formatters might + add some safety mapping on the right. + :param resilient_parsing: if this flag is enabled then Click will + parse without any interactivity or callback + invocation. Default values will also be + ignored. This is useful for implementing + things such as completion support. + :param allow_extra_args: if this is set to `True` then extra arguments + at the end will not raise an error and will be + kept on the context. The default is to inherit + from the command. + :param allow_interspersed_args: if this is set to `False` then options + and arguments cannot be mixed. The + default is to inherit from the command. + :param ignore_unknown_options: instructs click to ignore options it does + not know and keeps them for later + processing. + :param help_option_names: optionally a list of strings that define how + the default help parameter is named. The + default is ``['--help']``. + :param token_normalize_func: an optional function that is used to + normalize tokens (options, choices, + etc.). This for instance can be used to + implement case insensitive behavior. + :param color: controls if the terminal supports ANSI colors or not. The + default is autodetection. This is only needed if ANSI + codes are used in texts that Click prints which is by + default not the case. This for instance would affect + help output. + :param show_default: Show the default value for commands. If this + value is not set, it defaults to the value from the parent + context. ``Command.show_default`` overrides this default for the + specific command. + + .. versionchanged:: 8.1 + The ``show_default`` parameter is overridden by + ``Command.show_default``, instead of the other way around. + + .. versionchanged:: 8.0 + The ``show_default`` parameter defaults to the value from the + parent context. + + .. versionchanged:: 7.1 + Added the ``show_default`` parameter. + + .. versionchanged:: 4.0 + Added the ``color``, ``ignore_unknown_options``, and + ``max_content_width`` parameters. + + .. versionchanged:: 3.0 + Added the ``allow_extra_args`` and ``allow_interspersed_args`` + parameters. + + .. versionchanged:: 2.0 + Added the ``resilient_parsing``, ``help_option_names``, and + ``token_normalize_func`` parameters. + """ + + #: The formatter class to create with :meth:`make_formatter`. + #: + #: .. versionadded:: 8.0 + formatter_class: t.Type["HelpFormatter"] = HelpFormatter + + def __init__( + self, + command: "Command", + parent: t.Optional["Context"] = None, + info_name: t.Optional[str] = None, + obj: t.Optional[t.Any] = None, + auto_envvar_prefix: t.Optional[str] = None, + default_map: t.Optional[t.MutableMapping[str, t.Any]] = None, + terminal_width: t.Optional[int] = None, + max_content_width: t.Optional[int] = None, + resilient_parsing: bool = False, + allow_extra_args: t.Optional[bool] = None, + allow_interspersed_args: t.Optional[bool] = None, + ignore_unknown_options: t.Optional[bool] = None, + help_option_names: t.Optional[t.List[str]] = None, + token_normalize_func: t.Optional[t.Callable[[str], str]] = None, + color: t.Optional[bool] = None, + show_default: t.Optional[bool] = None, + ) -> None: + #: the parent context or `None` if none exists. + self.parent = parent + #: the :class:`Command` for this context. + self.command = command + #: the descriptive information name + self.info_name = info_name + #: Map of parameter names to their parsed values. Parameters + #: with ``expose_value=False`` are not stored. + self.params: t.Dict[str, t.Any] = {} + #: the leftover arguments. + self.args: t.List[str] = [] + #: protected arguments. These are arguments that are prepended + #: to `args` when certain parsing scenarios are encountered but + #: must be never propagated to another arguments. This is used + #: to implement nested parsing. + self.protected_args: t.List[str] = [] + #: the collected prefixes of the command's options. + self._opt_prefixes: t.Set[str] = set(parent._opt_prefixes) if parent else set() + + if obj is None and parent is not None: + obj = parent.obj + + #: the user object stored. + self.obj: t.Any = obj + self._meta: t.Dict[str, t.Any] = getattr(parent, "meta", {}) + + #: A dictionary (-like object) with defaults for parameters. + if ( + default_map is None + and info_name is not None + and parent is not None + and parent.default_map is not None + ): + default_map = parent.default_map.get(info_name) + + self.default_map: t.Optional[t.MutableMapping[str, t.Any]] = default_map + + #: This flag indicates if a subcommand is going to be executed. A + #: group callback can use this information to figure out if it's + #: being executed directly or because the execution flow passes + #: onwards to a subcommand. By default it's None, but it can be + #: the name of the subcommand to execute. + #: + #: If chaining is enabled this will be set to ``'*'`` in case + #: any commands are executed. It is however not possible to + #: figure out which ones. If you require this knowledge you + #: should use a :func:`result_callback`. + self.invoked_subcommand: t.Optional[str] = None + + if terminal_width is None and parent is not None: + terminal_width = parent.terminal_width + + #: The width of the terminal (None is autodetection). + self.terminal_width: t.Optional[int] = terminal_width + + if max_content_width is None and parent is not None: + max_content_width = parent.max_content_width + + #: The maximum width of formatted content (None implies a sensible + #: default which is 80 for most things). + self.max_content_width: t.Optional[int] = max_content_width + + if allow_extra_args is None: + allow_extra_args = command.allow_extra_args + + #: Indicates if the context allows extra args or if it should + #: fail on parsing. + #: + #: .. versionadded:: 3.0 + self.allow_extra_args = allow_extra_args + + if allow_interspersed_args is None: + allow_interspersed_args = command.allow_interspersed_args + + #: Indicates if the context allows mixing of arguments and + #: options or not. + #: + #: .. versionadded:: 3.0 + self.allow_interspersed_args: bool = allow_interspersed_args + + if ignore_unknown_options is None: + ignore_unknown_options = command.ignore_unknown_options + + #: Instructs click to ignore options that a command does not + #: understand and will store it on the context for later + #: processing. This is primarily useful for situations where you + #: want to call into external programs. Generally this pattern is + #: strongly discouraged because it's not possibly to losslessly + #: forward all arguments. + #: + #: .. versionadded:: 4.0 + self.ignore_unknown_options: bool = ignore_unknown_options + + if help_option_names is None: + if parent is not None: + help_option_names = parent.help_option_names + else: + help_option_names = ["--help"] + + #: The names for the help options. + self.help_option_names: t.List[str] = help_option_names + + if token_normalize_func is None and parent is not None: + token_normalize_func = parent.token_normalize_func + + #: An optional normalization function for tokens. This is + #: options, choices, commands etc. + self.token_normalize_func: t.Optional[ + t.Callable[[str], str] + ] = token_normalize_func + + #: Indicates if resilient parsing is enabled. In that case Click + #: will do its best to not cause any failures and default values + #: will be ignored. Useful for completion. + self.resilient_parsing: bool = resilient_parsing + + # If there is no envvar prefix yet, but the parent has one and + # the command on this level has a name, we can expand the envvar + # prefix automatically. + if auto_envvar_prefix is None: + if ( + parent is not None + and parent.auto_envvar_prefix is not None + and self.info_name is not None + ): + auto_envvar_prefix = ( + f"{parent.auto_envvar_prefix}_{self.info_name.upper()}" + ) + else: + auto_envvar_prefix = auto_envvar_prefix.upper() + + if auto_envvar_prefix is not None: + auto_envvar_prefix = auto_envvar_prefix.replace("-", "_") + + self.auto_envvar_prefix: t.Optional[str] = auto_envvar_prefix + + if color is None and parent is not None: + color = parent.color + + #: Controls if styling output is wanted or not. + self.color: t.Optional[bool] = color + + if show_default is None and parent is not None: + show_default = parent.show_default + + #: Show option default values when formatting help text. + self.show_default: t.Optional[bool] = show_default + + self._close_callbacks: t.List[t.Callable[[], t.Any]] = [] + self._depth = 0 + self._parameter_source: t.Dict[str, ParameterSource] = {} + self._exit_stack = ExitStack() + + def to_info_dict(self) -> t.Dict[str, t.Any]: + """Gather information that could be useful for a tool generating + user-facing documentation. This traverses the entire CLI + structure. + + .. code-block:: python + + with Context(cli) as ctx: + info = ctx.to_info_dict() + + .. versionadded:: 8.0 + """ + return { + "command": self.command.to_info_dict(self), + "info_name": self.info_name, + "allow_extra_args": self.allow_extra_args, + "allow_interspersed_args": self.allow_interspersed_args, + "ignore_unknown_options": self.ignore_unknown_options, + "auto_envvar_prefix": self.auto_envvar_prefix, + } + + def __enter__(self) -> "Context": + self._depth += 1 + push_context(self) + return self + + def __exit__( + self, + exc_type: t.Optional[t.Type[BaseException]], + exc_value: t.Optional[BaseException], + tb: t.Optional[TracebackType], + ) -> None: + self._depth -= 1 + if self._depth == 0: + self.close() + pop_context() + + @contextmanager + def scope(self, cleanup: bool = True) -> t.Iterator["Context"]: + """This helper method can be used with the context object to promote + it to the current thread local (see :func:`get_current_context`). + The default behavior of this is to invoke the cleanup functions which + can be disabled by setting `cleanup` to `False`. The cleanup + functions are typically used for things such as closing file handles. + + If the cleanup is intended the context object can also be directly + used as a context manager. + + Example usage:: + + with ctx.scope(): + assert get_current_context() is ctx + + This is equivalent:: + + with ctx: + assert get_current_context() is ctx + + .. versionadded:: 5.0 + + :param cleanup: controls if the cleanup functions should be run or + not. The default is to run these functions. In + some situations the context only wants to be + temporarily pushed in which case this can be disabled. + Nested pushes automatically defer the cleanup. + """ + if not cleanup: + self._depth += 1 + try: + with self as rv: + yield rv + finally: + if not cleanup: + self._depth -= 1 + + @property + def meta(self) -> t.Dict[str, t.Any]: + """This is a dictionary which is shared with all the contexts + that are nested. It exists so that click utilities can store some + state here if they need to. It is however the responsibility of + that code to manage this dictionary well. + + The keys are supposed to be unique dotted strings. For instance + module paths are a good choice for it. What is stored in there is + irrelevant for the operation of click. However what is important is + that code that places data here adheres to the general semantics of + the system. + + Example usage:: + + LANG_KEY = f'{__name__}.lang' + + def set_language(value): + ctx = get_current_context() + ctx.meta[LANG_KEY] = value + + def get_language(): + return get_current_context().meta.get(LANG_KEY, 'en_US') + + .. versionadded:: 5.0 + """ + return self._meta + + def make_formatter(self) -> HelpFormatter: + """Creates the :class:`~click.HelpFormatter` for the help and + usage output. + + To quickly customize the formatter class used without overriding + this method, set the :attr:`formatter_class` attribute. + + .. versionchanged:: 8.0 + Added the :attr:`formatter_class` attribute. + """ + return self.formatter_class( + width=self.terminal_width, max_width=self.max_content_width + ) + + def with_resource(self, context_manager: t.ContextManager[V]) -> V: + """Register a resource as if it were used in a ``with`` + statement. The resource will be cleaned up when the context is + popped. + + Uses :meth:`contextlib.ExitStack.enter_context`. It calls the + resource's ``__enter__()`` method and returns the result. When + the context is popped, it closes the stack, which calls the + resource's ``__exit__()`` method. + + To register a cleanup function for something that isn't a + context manager, use :meth:`call_on_close`. Or use something + from :mod:`contextlib` to turn it into a context manager first. + + .. code-block:: python + + @click.group() + @click.option("--name") + @click.pass_context + def cli(ctx): + ctx.obj = ctx.with_resource(connect_db(name)) + + :param context_manager: The context manager to enter. + :return: Whatever ``context_manager.__enter__()`` returns. + + .. versionadded:: 8.0 + """ + return self._exit_stack.enter_context(context_manager) + + def call_on_close(self, f: t.Callable[..., t.Any]) -> t.Callable[..., t.Any]: + """Register a function to be called when the context tears down. + + This can be used to close resources opened during the script + execution. Resources that support Python's context manager + protocol which would be used in a ``with`` statement should be + registered with :meth:`with_resource` instead. + + :param f: The function to execute on teardown. + """ + return self._exit_stack.callback(f) + + def close(self) -> None: + """Invoke all close callbacks registered with + :meth:`call_on_close`, and exit all context managers entered + with :meth:`with_resource`. + """ + self._exit_stack.close() + # In case the context is reused, create a new exit stack. + self._exit_stack = ExitStack() + + @property + def command_path(self) -> str: + """The computed command path. This is used for the ``usage`` + information on the help page. It's automatically created by + combining the info names of the chain of contexts to the root. + """ + rv = "" + if self.info_name is not None: + rv = self.info_name + if self.parent is not None: + parent_command_path = [self.parent.command_path] + + if isinstance(self.parent.command, Command): + for param in self.parent.command.get_params(self): + parent_command_path.extend(param.get_usage_pieces(self)) + + rv = f"{' '.join(parent_command_path)} {rv}" + return rv.lstrip() + + def find_root(self) -> "Context": + """Finds the outermost context.""" + node = self + while node.parent is not None: + node = node.parent + return node + + def find_object(self, object_type: t.Type[V]) -> t.Optional[V]: + """Finds the closest object of a given type.""" + node: t.Optional["Context"] = self + + while node is not None: + if isinstance(node.obj, object_type): + return node.obj + + node = node.parent + + return None + + def ensure_object(self, object_type: t.Type[V]) -> V: + """Like :meth:`find_object` but sets the innermost object to a + new instance of `object_type` if it does not exist. + """ + rv = self.find_object(object_type) + if rv is None: + self.obj = rv = object_type() + return rv + + @t.overload + def lookup_default( + self, name: str, call: "te.Literal[True]" = True + ) -> t.Optional[t.Any]: + ... + + @t.overload + def lookup_default( + self, name: str, call: "te.Literal[False]" = ... + ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: + ... + + def lookup_default(self, name: str, call: bool = True) -> t.Optional[t.Any]: + """Get the default for a parameter from :attr:`default_map`. + + :param name: Name of the parameter. + :param call: If the default is a callable, call it. Disable to + return the callable instead. + + .. versionchanged:: 8.0 + Added the ``call`` parameter. + """ + if self.default_map is not None: + value = self.default_map.get(name) + + if call and callable(value): + return value() + + return value + + return None + + def fail(self, message: str) -> "te.NoReturn": + """Aborts the execution of the program with a specific error + message. + + :param message: the error message to fail with. + """ + raise UsageError(message, self) + + def abort(self) -> "te.NoReturn": + """Aborts the script.""" + raise Abort() + + def exit(self, code: int = 0) -> "te.NoReturn": + """Exits the application with a given exit code.""" + raise Exit(code) + + def get_usage(self) -> str: + """Helper method to get formatted usage string for the current + context and command. + """ + return self.command.get_usage(self) + + def get_help(self) -> str: + """Helper method to get formatted help page for the current + context and command. + """ + return self.command.get_help(self) + + def _make_sub_context(self, command: "Command") -> "Context": + """Create a new context of the same type as this context, but + for a new command. + + :meta private: + """ + return type(self)(command, info_name=command.name, parent=self) + + @t.overload + def invoke( + __self, # noqa: B902 + __callback: "t.Callable[..., V]", + *args: t.Any, + **kwargs: t.Any, + ) -> V: + ... + + @t.overload + def invoke( + __self, # noqa: B902 + __callback: "Command", + *args: t.Any, + **kwargs: t.Any, + ) -> t.Any: + ... + + def invoke( + __self, # noqa: B902 + __callback: t.Union["Command", "t.Callable[..., V]"], + *args: t.Any, + **kwargs: t.Any, + ) -> t.Union[t.Any, V]: + """Invokes a command callback in exactly the way it expects. There + are two ways to invoke this method: + + 1. the first argument can be a callback and all other arguments and + keyword arguments are forwarded directly to the function. + 2. the first argument is a click command object. In that case all + arguments are forwarded as well but proper click parameters + (options and click arguments) must be keyword arguments and Click + will fill in defaults. + + Note that before Click 3.2 keyword arguments were not properly filled + in against the intention of this code and no context was created. For + more information about this change and why it was done in a bugfix + release see :ref:`upgrade-to-3.2`. + + .. versionchanged:: 8.0 + All ``kwargs`` are tracked in :attr:`params` so they will be + passed if :meth:`forward` is called at multiple levels. + """ + if isinstance(__callback, Command): + other_cmd = __callback + + if other_cmd.callback is None: + raise TypeError( + "The given command does not have a callback that can be invoked." + ) + else: + __callback = t.cast("t.Callable[..., V]", other_cmd.callback) + + ctx = __self._make_sub_context(other_cmd) + + for param in other_cmd.params: + if param.name not in kwargs and param.expose_value: + kwargs[param.name] = param.type_cast_value( # type: ignore + ctx, param.get_default(ctx) + ) + + # Track all kwargs as params, so that forward() will pass + # them on in subsequent calls. + ctx.params.update(kwargs) + else: + ctx = __self + + with augment_usage_errors(__self): + with ctx: + return __callback(*args, **kwargs) + + def forward( + __self, __cmd: "Command", *args: t.Any, **kwargs: t.Any # noqa: B902 + ) -> t.Any: + """Similar to :meth:`invoke` but fills in default keyword + arguments from the current context if the other command expects + it. This cannot invoke callbacks directly, only other commands. + + .. versionchanged:: 8.0 + All ``kwargs`` are tracked in :attr:`params` so they will be + passed if ``forward`` is called at multiple levels. + """ + # Can only forward to other commands, not direct callbacks. + if not isinstance(__cmd, Command): + raise TypeError("Callback is not a command.") + + for param in __self.params: + if param not in kwargs: + kwargs[param] = __self.params[param] + + return __self.invoke(__cmd, *args, **kwargs) + + def set_parameter_source(self, name: str, source: ParameterSource) -> None: + """Set the source of a parameter. This indicates the location + from which the value of the parameter was obtained. + + :param name: The name of the parameter. + :param source: A member of :class:`~click.core.ParameterSource`. + """ + self._parameter_source[name] = source + + def get_parameter_source(self, name: str) -> t.Optional[ParameterSource]: + """Get the source of a parameter. This indicates the location + from which the value of the parameter was obtained. + + This can be useful for determining when a user specified a value + on the command line that is the same as the default value. It + will be :attr:`~click.core.ParameterSource.DEFAULT` only if the + value was actually taken from the default. + + :param name: The name of the parameter. + :rtype: ParameterSource + + .. versionchanged:: 8.0 + Returns ``None`` if the parameter was not provided from any + source. + """ + return self._parameter_source.get(name) + + +class BaseCommand: + """The base command implements the minimal API contract of commands. + Most code will never use this as it does not implement a lot of useful + functionality but it can act as the direct subclass of alternative + parsing methods that do not depend on the Click parser. + + For instance, this can be used to bridge Click and other systems like + argparse or docopt. + + Because base commands do not implement a lot of the API that other + parts of Click take for granted, they are not supported for all + operations. For instance, they cannot be used with the decorators + usually and they have no built-in callback system. + + .. versionchanged:: 2.0 + Added the `context_settings` parameter. + + :param name: the name of the command to use unless a group overrides it. + :param context_settings: an optional dictionary with defaults that are + passed to the context object. + """ + + #: The context class to create with :meth:`make_context`. + #: + #: .. versionadded:: 8.0 + context_class: t.Type[Context] = Context + #: the default for the :attr:`Context.allow_extra_args` flag. + allow_extra_args = False + #: the default for the :attr:`Context.allow_interspersed_args` flag. + allow_interspersed_args = True + #: the default for the :attr:`Context.ignore_unknown_options` flag. + ignore_unknown_options = False + + def __init__( + self, + name: t.Optional[str], + context_settings: t.Optional[t.MutableMapping[str, t.Any]] = None, + ) -> None: + #: the name the command thinks it has. Upon registering a command + #: on a :class:`Group` the group will default the command name + #: with this information. You should instead use the + #: :class:`Context`\'s :attr:`~Context.info_name` attribute. + self.name = name + + if context_settings is None: + context_settings = {} + + #: an optional dictionary with defaults passed to the context. + self.context_settings: t.MutableMapping[str, t.Any] = context_settings + + def to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: + """Gather information that could be useful for a tool generating + user-facing documentation. This traverses the entire structure + below this command. + + Use :meth:`click.Context.to_info_dict` to traverse the entire + CLI structure. + + :param ctx: A :class:`Context` representing this command. + + .. versionadded:: 8.0 + """ + return {"name": self.name} + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} {self.name}>" + + def get_usage(self, ctx: Context) -> str: + raise NotImplementedError("Base commands cannot get usage") + + def get_help(self, ctx: Context) -> str: + raise NotImplementedError("Base commands cannot get help") + + def make_context( + self, + info_name: t.Optional[str], + args: t.List[str], + parent: t.Optional[Context] = None, + **extra: t.Any, + ) -> Context: + """This function when given an info name and arguments will kick + off the parsing and create a new :class:`Context`. It does not + invoke the actual command callback though. + + To quickly customize the context class used without overriding + this method, set the :attr:`context_class` attribute. + + :param info_name: the info name for this invocation. Generally this + is the most descriptive name for the script or + command. For the toplevel script it's usually + the name of the script, for commands below it's + the name of the command. + :param args: the arguments to parse as list of strings. + :param parent: the parent context if available. + :param extra: extra keyword arguments forwarded to the context + constructor. + + .. versionchanged:: 8.0 + Added the :attr:`context_class` attribute. + """ + for key, value in self.context_settings.items(): + if key not in extra: + extra[key] = value + + ctx = self.context_class( + self, info_name=info_name, parent=parent, **extra # type: ignore + ) + + with ctx.scope(cleanup=False): + self.parse_args(ctx, args) + return ctx + + def parse_args(self, ctx: Context, args: t.List[str]) -> t.List[str]: + """Given a context and a list of arguments this creates the parser + and parses the arguments, then modifies the context as necessary. + This is automatically invoked by :meth:`make_context`. + """ + raise NotImplementedError("Base commands do not know how to parse arguments.") + + def invoke(self, ctx: Context) -> t.Any: + """Given a context, this invokes the command. The default + implementation is raising a not implemented error. + """ + raise NotImplementedError("Base commands are not invocable by default") + + def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: + """Return a list of completions for the incomplete value. Looks + at the names of chained multi-commands. + + Any command could be part of a chained multi-command, so sibling + commands are valid at any point during command completion. Other + command classes will return more completions. + + :param ctx: Invocation context for this command. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + results: t.List["CompletionItem"] = [] + + while ctx.parent is not None: + ctx = ctx.parent + + if isinstance(ctx.command, MultiCommand) and ctx.command.chain: + results.extend( + CompletionItem(name, help=command.get_short_help_str()) + for name, command in _complete_visible_commands(ctx, incomplete) + if name not in ctx.protected_args + ) + + return results + + @t.overload + def main( + self, + args: t.Optional[t.Sequence[str]] = None, + prog_name: t.Optional[str] = None, + complete_var: t.Optional[str] = None, + standalone_mode: "te.Literal[True]" = True, + **extra: t.Any, + ) -> "te.NoReturn": + ... + + @t.overload + def main( + self, + args: t.Optional[t.Sequence[str]] = None, + prog_name: t.Optional[str] = None, + complete_var: t.Optional[str] = None, + standalone_mode: bool = ..., + **extra: t.Any, + ) -> t.Any: + ... + + def main( + self, + args: t.Optional[t.Sequence[str]] = None, + prog_name: t.Optional[str] = None, + complete_var: t.Optional[str] = None, + standalone_mode: bool = True, + windows_expand_args: bool = True, + **extra: t.Any, + ) -> t.Any: + """This is the way to invoke a script with all the bells and + whistles as a command line application. This will always terminate + the application after a call. If this is not wanted, ``SystemExit`` + needs to be caught. + + This method is also available by directly calling the instance of + a :class:`Command`. + + :param args: the arguments that should be used for parsing. If not + provided, ``sys.argv[1:]`` is used. + :param prog_name: the program name that should be used. By default + the program name is constructed by taking the file + name from ``sys.argv[0]``. + :param complete_var: the environment variable that controls the + bash completion support. The default is + ``"__COMPLETE"`` with prog_name in + uppercase. + :param standalone_mode: the default behavior is to invoke the script + in standalone mode. Click will then + handle exceptions and convert them into + error messages and the function will never + return but shut down the interpreter. If + this is set to `False` they will be + propagated to the caller and the return + value of this function is the return value + of :meth:`invoke`. + :param windows_expand_args: Expand glob patterns, user dir, and + env vars in command line args on Windows. + :param extra: extra keyword arguments are forwarded to the context + constructor. See :class:`Context` for more information. + + .. versionchanged:: 8.0.1 + Added the ``windows_expand_args`` parameter to allow + disabling command line arg expansion on Windows. + + .. versionchanged:: 8.0 + When taking arguments from ``sys.argv`` on Windows, glob + patterns, user dir, and env vars are expanded. + + .. versionchanged:: 3.0 + Added the ``standalone_mode`` parameter. + """ + if args is None: + args = sys.argv[1:] + + if os.name == "nt" and windows_expand_args: + args = _expand_args(args) + else: + args = list(args) + + if prog_name is None: + prog_name = _detect_program_name() + + # Process shell completion requests and exit early. + self._main_shell_completion(extra, prog_name, complete_var) + + try: + try: + with self.make_context(prog_name, args, **extra) as ctx: + rv = self.invoke(ctx) + if not standalone_mode: + return rv + # it's not safe to `ctx.exit(rv)` here! + # note that `rv` may actually contain data like "1" which + # has obvious effects + # more subtle case: `rv=[None, None]` can come out of + # chained commands which all returned `None` -- so it's not + # even always obvious that `rv` indicates success/failure + # by its truthiness/falsiness + ctx.exit() + except (EOFError, KeyboardInterrupt) as e: + echo(file=sys.stderr) + raise Abort() from e + except ClickException as e: + if not standalone_mode: + raise + e.show() + sys.exit(e.exit_code) + except OSError as e: + if e.errno == errno.EPIPE: + sys.stdout = t.cast(t.TextIO, PacifyFlushWrapper(sys.stdout)) + sys.stderr = t.cast(t.TextIO, PacifyFlushWrapper(sys.stderr)) + sys.exit(1) + else: + raise + except Exit as e: + if standalone_mode: + sys.exit(e.exit_code) + else: + # in non-standalone mode, return the exit code + # note that this is only reached if `self.invoke` above raises + # an Exit explicitly -- thus bypassing the check there which + # would return its result + # the results of non-standalone execution may therefore be + # somewhat ambiguous: if there are codepaths which lead to + # `ctx.exit(1)` and to `return 1`, the caller won't be able to + # tell the difference between the two + return e.exit_code + except Abort: + if not standalone_mode: + raise + echo(_("Aborted!"), file=sys.stderr) + sys.exit(1) + + def _main_shell_completion( + self, + ctx_args: t.MutableMapping[str, t.Any], + prog_name: str, + complete_var: t.Optional[str] = None, + ) -> None: + """Check if the shell is asking for tab completion, process + that, then exit early. Called from :meth:`main` before the + program is invoked. + + :param prog_name: Name of the executable in the shell. + :param complete_var: Name of the environment variable that holds + the completion instruction. Defaults to + ``_{PROG_NAME}_COMPLETE``. + + .. versionchanged:: 8.2.0 + Dots (``.``) in ``prog_name`` are replaced with underscores (``_``). + """ + if complete_var is None: + complete_name = prog_name.replace("-", "_").replace(".", "_") + complete_var = f"_{complete_name}_COMPLETE".upper() + + instruction = os.environ.get(complete_var) + + if not instruction: + return + + from .shell_completion import shell_complete + + rv = shell_complete(self, ctx_args, prog_name, complete_var, instruction) + sys.exit(rv) + + def __call__(self, *args: t.Any, **kwargs: t.Any) -> t.Any: + """Alias for :meth:`main`.""" + return self.main(*args, **kwargs) + + +class Command(BaseCommand): + """Commands are the basic building block of command line interfaces in + Click. A basic command handles command line parsing and might dispatch + more parsing to commands nested below it. + + :param name: the name of the command to use unless a group overrides it. + :param context_settings: an optional dictionary with defaults that are + passed to the context object. + :param callback: the callback to invoke. This is optional. + :param params: the parameters to register with this command. This can + be either :class:`Option` or :class:`Argument` objects. + :param help: the help string to use for this command. + :param epilog: like the help string but it's printed at the end of the + help page after everything else. + :param short_help: the short help to use for this command. This is + shown on the command listing of the parent command. + :param add_help_option: by default each command registers a ``--help`` + option. This can be disabled by this parameter. + :param no_args_is_help: this controls what happens if no arguments are + provided. This option is disabled by default. + If enabled this will add ``--help`` as argument + if no arguments are passed + :param hidden: hide this command from help outputs. + + :param deprecated: issues a message indicating that + the command is deprecated. + + .. versionchanged:: 8.1 + ``help``, ``epilog``, and ``short_help`` are stored unprocessed, + all formatting is done when outputting help text, not at init, + and is done even if not using the ``@command`` decorator. + + .. versionchanged:: 8.0 + Added a ``repr`` showing the command name. + + .. versionchanged:: 7.1 + Added the ``no_args_is_help`` parameter. + + .. versionchanged:: 2.0 + Added the ``context_settings`` parameter. + """ + + def __init__( + self, + name: t.Optional[str], + context_settings: t.Optional[t.MutableMapping[str, t.Any]] = None, + callback: t.Optional[t.Callable[..., t.Any]] = None, + params: t.Optional[t.List["Parameter"]] = None, + help: t.Optional[str] = None, + epilog: t.Optional[str] = None, + short_help: t.Optional[str] = None, + options_metavar: t.Optional[str] = "[OPTIONS]", + add_help_option: bool = True, + no_args_is_help: bool = False, + hidden: bool = False, + deprecated: bool = False, + ) -> None: + super().__init__(name, context_settings) + #: the callback to execute when the command fires. This might be + #: `None` in which case nothing happens. + self.callback = callback + #: the list of parameters for this command in the order they + #: should show up in the help page and execute. Eager parameters + #: will automatically be handled before non eager ones. + self.params: t.List["Parameter"] = params or [] + self.help = help + self.epilog = epilog + self.options_metavar = options_metavar + self.short_help = short_help + self.add_help_option = add_help_option + self.no_args_is_help = no_args_is_help + self.hidden = hidden + self.deprecated = deprecated + + def to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict(ctx) + info_dict.update( + params=[param.to_info_dict() for param in self.get_params(ctx)], + help=self.help, + epilog=self.epilog, + short_help=self.short_help, + hidden=self.hidden, + deprecated=self.deprecated, + ) + return info_dict + + def get_usage(self, ctx: Context) -> str: + """Formats the usage line into a string and returns it. + + Calls :meth:`format_usage` internally. + """ + formatter = ctx.make_formatter() + self.format_usage(ctx, formatter) + return formatter.getvalue().rstrip("\n") + + def get_params(self, ctx: Context) -> t.List["Parameter"]: + rv = self.params + help_option = self.get_help_option(ctx) + + if help_option is not None: + rv = [*rv, help_option] + + return rv + + def format_usage(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the usage line into the formatter. + + This is a low-level method called by :meth:`get_usage`. + """ + pieces = self.collect_usage_pieces(ctx) + formatter.write_usage(ctx.command_path, " ".join(pieces)) + + def collect_usage_pieces(self, ctx: Context) -> t.List[str]: + """Returns all the pieces that go into the usage line and returns + it as a list of strings. + """ + rv = [self.options_metavar] if self.options_metavar else [] + + for param in self.get_params(ctx): + rv.extend(param.get_usage_pieces(ctx)) + + return rv + + def get_help_option_names(self, ctx: Context) -> t.List[str]: + """Returns the names for the help option.""" + all_names = set(ctx.help_option_names) + for param in self.params: + all_names.difference_update(param.opts) + all_names.difference_update(param.secondary_opts) + return list(all_names) + + def get_help_option(self, ctx: Context) -> t.Optional["Option"]: + """Returns the help option object.""" + help_options = self.get_help_option_names(ctx) + + if not help_options or not self.add_help_option: + return None + + def show_help(ctx: Context, param: "Parameter", value: str) -> None: + if value and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + + return Option( + help_options, + is_flag=True, + is_eager=True, + expose_value=False, + callback=show_help, + help=_("Show this message and exit."), + ) + + def make_parser(self, ctx: Context) -> OptionParser: + """Creates the underlying option parser for this command.""" + parser = OptionParser(ctx) + for param in self.get_params(ctx): + param.add_to_parser(parser, ctx) + return parser + + def get_help(self, ctx: Context) -> str: + """Formats the help into a string and returns it. + + Calls :meth:`format_help` internally. + """ + formatter = ctx.make_formatter() + self.format_help(ctx, formatter) + return formatter.getvalue().rstrip("\n") + + def get_short_help_str(self, limit: int = 45) -> str: + """Gets short help for the command or makes it by shortening the + long help string. + """ + if self.short_help: + text = inspect.cleandoc(self.short_help) + elif self.help: + text = make_default_short_help(self.help, limit) + else: + text = "" + + if self.deprecated: + text = _("(Deprecated) {text}").format(text=text) + + return text.strip() + + def format_help(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the help into the formatter if it exists. + + This is a low-level method called by :meth:`get_help`. + + This calls the following methods: + + - :meth:`format_usage` + - :meth:`format_help_text` + - :meth:`format_options` + - :meth:`format_epilog` + """ + self.format_usage(ctx, formatter) + self.format_help_text(ctx, formatter) + self.format_options(ctx, formatter) + self.format_epilog(ctx, formatter) + + def format_help_text(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the help text to the formatter if it exists.""" + if self.help is not None: + # truncate the help text to the first form feed + text = inspect.cleandoc(self.help).partition("\f")[0] + else: + text = "" + + if self.deprecated: + text = _("(Deprecated) {text}").format(text=text) + + if text: + formatter.write_paragraph() + + with formatter.indentation(): + formatter.write_text(text) + + def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes all the options into the formatter if they exist.""" + opts = [] + for param in self.get_params(ctx): + rv = param.get_help_record(ctx) + if rv is not None: + opts.append(rv) + + if opts: + with formatter.section(_("Options")): + formatter.write_dl(opts) + + def format_epilog(self, ctx: Context, formatter: HelpFormatter) -> None: + """Writes the epilog into the formatter if it exists.""" + if self.epilog: + epilog = inspect.cleandoc(self.epilog) + formatter.write_paragraph() + + with formatter.indentation(): + formatter.write_text(epilog) + + def parse_args(self, ctx: Context, args: t.List[str]) -> t.List[str]: + if not args and self.no_args_is_help and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + + parser = self.make_parser(ctx) + opts, args, param_order = parser.parse_args(args=args) + + for param in iter_params_for_processing(param_order, self.get_params(ctx)): + value, args = param.handle_parse_result(ctx, opts, args) + + if args and not ctx.allow_extra_args and not ctx.resilient_parsing: + ctx.fail( + ngettext( + "Got unexpected extra argument ({args})", + "Got unexpected extra arguments ({args})", + len(args), + ).format(args=" ".join(map(str, args))) + ) + + ctx.args = args + ctx._opt_prefixes.update(parser._opt_prefixes) + return args + + def invoke(self, ctx: Context) -> t.Any: + """Given a context, this invokes the attached callback (if it exists) + in the right way. + """ + if self.deprecated: + message = _( + "DeprecationWarning: The command {name!r} is deprecated." + ).format(name=self.name) + echo(style(message, fg="red"), err=True) + + if self.callback is not None: + return ctx.invoke(self.callback, **ctx.params) + + def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: + """Return a list of completions for the incomplete value. Looks + at the names of options and chained multi-commands. + + :param ctx: Invocation context for this command. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + results: t.List["CompletionItem"] = [] + + if incomplete and not incomplete[0].isalnum(): + for param in self.get_params(ctx): + if ( + not isinstance(param, Option) + or param.hidden + or ( + not param.multiple + and ctx.get_parameter_source(param.name) # type: ignore + is ParameterSource.COMMANDLINE + ) + ): + continue + + results.extend( + CompletionItem(name, help=param.help) + for name in [*param.opts, *param.secondary_opts] + if name.startswith(incomplete) + ) + + results.extend(super().shell_complete(ctx, incomplete)) + return results + + +class MultiCommand(Command): + """A multi command is the basic implementation of a command that + dispatches to subcommands. The most common version is the + :class:`Group`. + + :param invoke_without_command: this controls how the multi command itself + is invoked. By default it's only invoked + if a subcommand is provided. + :param no_args_is_help: this controls what happens if no arguments are + provided. This option is enabled by default if + `invoke_without_command` is disabled or disabled + if it's enabled. If enabled this will add + ``--help`` as argument if no arguments are + passed. + :param subcommand_metavar: the string that is used in the documentation + to indicate the subcommand place. + :param chain: if this is set to `True` chaining of multiple subcommands + is enabled. This restricts the form of commands in that + they cannot have optional arguments but it allows + multiple commands to be chained together. + :param result_callback: The result callback to attach to this multi + command. This can be set or changed later with the + :meth:`result_callback` decorator. + :param attrs: Other command arguments described in :class:`Command`. + """ + + allow_extra_args = True + allow_interspersed_args = False + + def __init__( + self, + name: t.Optional[str] = None, + invoke_without_command: bool = False, + no_args_is_help: t.Optional[bool] = None, + subcommand_metavar: t.Optional[str] = None, + chain: bool = False, + result_callback: t.Optional[t.Callable[..., t.Any]] = None, + **attrs: t.Any, + ) -> None: + super().__init__(name, **attrs) + + if no_args_is_help is None: + no_args_is_help = not invoke_without_command + + self.no_args_is_help = no_args_is_help + self.invoke_without_command = invoke_without_command + + if subcommand_metavar is None: + if chain: + subcommand_metavar = "COMMAND1 [ARGS]... [COMMAND2 [ARGS]...]..." + else: + subcommand_metavar = "COMMAND [ARGS]..." + + self.subcommand_metavar = subcommand_metavar + self.chain = chain + # The result callback that is stored. This can be set or + # overridden with the :func:`result_callback` decorator. + self._result_callback = result_callback + + if self.chain: + for param in self.params: + if isinstance(param, Argument) and not param.required: + raise RuntimeError( + "Multi commands in chain mode cannot have" + " optional arguments." + ) + + def to_info_dict(self, ctx: Context) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict(ctx) + commands = {} + + for name in self.list_commands(ctx): + command = self.get_command(ctx, name) + + if command is None: + continue + + sub_ctx = ctx._make_sub_context(command) + + with sub_ctx.scope(cleanup=False): + commands[name] = command.to_info_dict(sub_ctx) + + info_dict.update(commands=commands, chain=self.chain) + return info_dict + + def collect_usage_pieces(self, ctx: Context) -> t.List[str]: + rv = super().collect_usage_pieces(ctx) + rv.append(self.subcommand_metavar) + return rv + + def format_options(self, ctx: Context, formatter: HelpFormatter) -> None: + super().format_options(ctx, formatter) + self.format_commands(ctx, formatter) + + def result_callback(self, replace: bool = False) -> t.Callable[[F], F]: + """Adds a result callback to the command. By default if a + result callback is already registered this will chain them but + this can be disabled with the `replace` parameter. The result + callback is invoked with the return value of the subcommand + (or the list of return values from all subcommands if chaining + is enabled) as well as the parameters as they would be passed + to the main callback. + + Example:: + + @click.group() + @click.option('-i', '--input', default=23) + def cli(input): + return 42 + + @cli.result_callback() + def process_result(result, input): + return result + input + + :param replace: if set to `True` an already existing result + callback will be removed. + + .. versionchanged:: 8.0 + Renamed from ``resultcallback``. + + .. versionadded:: 3.0 + """ + + def decorator(f: F) -> F: + old_callback = self._result_callback + + if old_callback is None or replace: + self._result_callback = f + return f + + def function(__value, *args, **kwargs): # type: ignore + inner = old_callback(__value, *args, **kwargs) + return f(inner, *args, **kwargs) + + self._result_callback = rv = update_wrapper(t.cast(F, function), f) + return rv + + return decorator + + def format_commands(self, ctx: Context, formatter: HelpFormatter) -> None: + """Extra format methods for multi methods that adds all the commands + after the options. + """ + commands = [] + for subcommand in self.list_commands(ctx): + cmd = self.get_command(ctx, subcommand) + # What is this, the tool lied about a command. Ignore it + if cmd is None: + continue + if cmd.hidden: + continue + + commands.append((subcommand, cmd)) + + # allow for 3 times the default spacing + if len(commands): + limit = formatter.width - 6 - max(len(cmd[0]) for cmd in commands) + + rows = [] + for subcommand, cmd in commands: + help = cmd.get_short_help_str(limit) + rows.append((subcommand, help)) + + if rows: + with formatter.section(_("Commands")): + formatter.write_dl(rows) + + def parse_args(self, ctx: Context, args: t.List[str]) -> t.List[str]: + if not args and self.no_args_is_help and not ctx.resilient_parsing: + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + + rest = super().parse_args(ctx, args) + + if self.chain: + ctx.protected_args = rest + ctx.args = [] + elif rest: + ctx.protected_args, ctx.args = rest[:1], rest[1:] + + return ctx.args + + def invoke(self, ctx: Context) -> t.Any: + def _process_result(value: t.Any) -> t.Any: + if self._result_callback is not None: + value = ctx.invoke(self._result_callback, value, **ctx.params) + return value + + if not ctx.protected_args: + if self.invoke_without_command: + # No subcommand was invoked, so the result callback is + # invoked with the group return value for regular + # groups, or an empty list for chained groups. + with ctx: + rv = super().invoke(ctx) + return _process_result([] if self.chain else rv) + ctx.fail(_("Missing command.")) + + # Fetch args back out + args = [*ctx.protected_args, *ctx.args] + ctx.args = [] + ctx.protected_args = [] + + # If we're not in chain mode, we only allow the invocation of a + # single command but we also inform the current context about the + # name of the command to invoke. + if not self.chain: + # Make sure the context is entered so we do not clean up + # resources until the result processor has worked. + with ctx: + cmd_name, cmd, args = self.resolve_command(ctx, args) + assert cmd is not None + ctx.invoked_subcommand = cmd_name + super().invoke(ctx) + sub_ctx = cmd.make_context(cmd_name, args, parent=ctx) + with sub_ctx: + return _process_result(sub_ctx.command.invoke(sub_ctx)) + + # In chain mode we create the contexts step by step, but after the + # base command has been invoked. Because at that point we do not + # know the subcommands yet, the invoked subcommand attribute is + # set to ``*`` to inform the command that subcommands are executed + # but nothing else. + with ctx: + ctx.invoked_subcommand = "*" if args else None + super().invoke(ctx) + + # Otherwise we make every single context and invoke them in a + # chain. In that case the return value to the result processor + # is the list of all invoked subcommand's results. + contexts = [] + while args: + cmd_name, cmd, args = self.resolve_command(ctx, args) + assert cmd is not None + sub_ctx = cmd.make_context( + cmd_name, + args, + parent=ctx, + allow_extra_args=True, + allow_interspersed_args=False, + ) + contexts.append(sub_ctx) + args, sub_ctx.args = sub_ctx.args, [] + + rv = [] + for sub_ctx in contexts: + with sub_ctx: + rv.append(sub_ctx.command.invoke(sub_ctx)) + return _process_result(rv) + + def resolve_command( + self, ctx: Context, args: t.List[str] + ) -> t.Tuple[t.Optional[str], t.Optional[Command], t.List[str]]: + cmd_name = make_str(args[0]) + original_cmd_name = cmd_name + + # Get the command + cmd = self.get_command(ctx, cmd_name) + + # If we can't find the command but there is a normalization + # function available, we try with that one. + if cmd is None and ctx.token_normalize_func is not None: + cmd_name = ctx.token_normalize_func(cmd_name) + cmd = self.get_command(ctx, cmd_name) + + # If we don't find the command we want to show an error message + # to the user that it was not provided. However, there is + # something else we should do: if the first argument looks like + # an option we want to kick off parsing again for arguments to + # resolve things like --help which now should go to the main + # place. + if cmd is None and not ctx.resilient_parsing: + if split_opt(cmd_name)[0]: + self.parse_args(ctx, ctx.args) + ctx.fail(_("No such command {name!r}.").format(name=original_cmd_name)) + return cmd_name if cmd else None, cmd, args[1:] + + def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: + """Given a context and a command name, this returns a + :class:`Command` object if it exists or returns `None`. + """ + raise NotImplementedError + + def list_commands(self, ctx: Context) -> t.List[str]: + """Returns a list of subcommand names in the order they should + appear. + """ + return [] + + def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: + """Return a list of completions for the incomplete value. Looks + at the names of options, subcommands, and chained + multi-commands. + + :param ctx: Invocation context for this command. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + results = [ + CompletionItem(name, help=command.get_short_help_str()) + for name, command in _complete_visible_commands(ctx, incomplete) + ] + results.extend(super().shell_complete(ctx, incomplete)) + return results + + +class Group(MultiCommand): + """A group allows a command to have subcommands attached. This is + the most common way to implement nesting in Click. + + :param name: The name of the group command. + :param commands: A dict mapping names to :class:`Command` objects. + Can also be a list of :class:`Command`, which will use + :attr:`Command.name` to create the dict. + :param attrs: Other command arguments described in + :class:`MultiCommand`, :class:`Command`, and + :class:`BaseCommand`. + + .. versionchanged:: 8.0 + The ``commands`` argument can be a list of command objects. + """ + + #: If set, this is used by the group's :meth:`command` decorator + #: as the default :class:`Command` class. This is useful to make all + #: subcommands use a custom command class. + #: + #: .. versionadded:: 8.0 + command_class: t.Optional[t.Type[Command]] = None + + #: If set, this is used by the group's :meth:`group` decorator + #: as the default :class:`Group` class. This is useful to make all + #: subgroups use a custom group class. + #: + #: If set to the special value :class:`type` (literally + #: ``group_class = type``), this group's class will be used as the + #: default class. This makes a custom group class continue to make + #: custom groups. + #: + #: .. versionadded:: 8.0 + group_class: t.Optional[t.Union[t.Type["Group"], t.Type[type]]] = None + # Literal[type] isn't valid, so use Type[type] + + def __init__( + self, + name: t.Optional[str] = None, + commands: t.Optional[ + t.Union[t.MutableMapping[str, Command], t.Sequence[Command]] + ] = None, + **attrs: t.Any, + ) -> None: + super().__init__(name, **attrs) + + if commands is None: + commands = {} + elif isinstance(commands, abc.Sequence): + commands = {c.name: c for c in commands if c.name is not None} + + #: The registered subcommands by their exported names. + self.commands: t.MutableMapping[str, Command] = commands + + def add_command(self, cmd: Command, name: t.Optional[str] = None) -> None: + """Registers another :class:`Command` with this group. If the name + is not provided, the name of the command is used. + """ + name = name or cmd.name + if name is None: + raise TypeError("Command has no name.") + _check_multicommand(self, name, cmd, register=True) + self.commands[name] = cmd + + @t.overload + def command(self, __func: t.Callable[..., t.Any]) -> Command: + ... + + @t.overload + def command( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], Command]: + ... + + def command( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Union[t.Callable[[t.Callable[..., t.Any]], Command], Command]: + """A shortcut decorator for declaring and attaching a command to + the group. This takes the same arguments as :func:`command` and + immediately registers the created command with this group by + calling :meth:`add_command`. + + To customize the command class used, set the + :attr:`command_class` attribute. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + + .. versionchanged:: 8.0 + Added the :attr:`command_class` attribute. + """ + from .decorators import command + + func: t.Optional[t.Callable[..., t.Any]] = None + + if args and callable(args[0]): + assert ( + len(args) == 1 and not kwargs + ), "Use 'command(**kwargs)(callable)' to provide arguments." + (func,) = args + args = () + + if self.command_class and kwargs.get("cls") is None: + kwargs["cls"] = self.command_class + + def decorator(f: t.Callable[..., t.Any]) -> Command: + cmd: Command = command(*args, **kwargs)(f) + self.add_command(cmd) + return cmd + + if func is not None: + return decorator(func) + + return decorator + + @t.overload + def group(self, __func: t.Callable[..., t.Any]) -> "Group": + ... + + @t.overload + def group( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], "Group"]: + ... + + def group( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Union[t.Callable[[t.Callable[..., t.Any]], "Group"], "Group"]: + """A shortcut decorator for declaring and attaching a group to + the group. This takes the same arguments as :func:`group` and + immediately registers the created group with this group by + calling :meth:`add_command`. + + To customize the group class used, set the :attr:`group_class` + attribute. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + + .. versionchanged:: 8.0 + Added the :attr:`group_class` attribute. + """ + from .decorators import group + + func: t.Optional[t.Callable[..., t.Any]] = None + + if args and callable(args[0]): + assert ( + len(args) == 1 and not kwargs + ), "Use 'group(**kwargs)(callable)' to provide arguments." + (func,) = args + args = () + + if self.group_class is not None and kwargs.get("cls") is None: + if self.group_class is type: + kwargs["cls"] = type(self) + else: + kwargs["cls"] = self.group_class + + def decorator(f: t.Callable[..., t.Any]) -> "Group": + cmd: Group = group(*args, **kwargs)(f) + self.add_command(cmd) + return cmd + + if func is not None: + return decorator(func) + + return decorator + + def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: + return self.commands.get(cmd_name) + + def list_commands(self, ctx: Context) -> t.List[str]: + return sorted(self.commands) + + +class CommandCollection(MultiCommand): + """A command collection is a multi command that merges multiple multi + commands together into one. This is a straightforward implementation + that accepts a list of different multi commands as sources and + provides all the commands for each of them. + + See :class:`MultiCommand` and :class:`Command` for the description of + ``name`` and ``attrs``. + """ + + def __init__( + self, + name: t.Optional[str] = None, + sources: t.Optional[t.List[MultiCommand]] = None, + **attrs: t.Any, + ) -> None: + super().__init__(name, **attrs) + #: The list of registered multi commands. + self.sources: t.List[MultiCommand] = sources or [] + + def add_source(self, multi_cmd: MultiCommand) -> None: + """Adds a new multi command to the chain dispatcher.""" + self.sources.append(multi_cmd) + + def get_command(self, ctx: Context, cmd_name: str) -> t.Optional[Command]: + for source in self.sources: + rv = source.get_command(ctx, cmd_name) + + if rv is not None: + if self.chain: + _check_multicommand(self, cmd_name, rv) + + return rv + + return None + + def list_commands(self, ctx: Context) -> t.List[str]: + rv: t.Set[str] = set() + + for source in self.sources: + rv.update(source.list_commands(ctx)) + + return sorted(rv) + + +def _check_iter(value: t.Any) -> t.Iterator[t.Any]: + """Check if the value is iterable but not a string. Raises a type + error, or return an iterator over the value. + """ + if isinstance(value, str): + raise TypeError + + return iter(value) + + +class Parameter: + r"""A parameter to a command comes in two versions: they are either + :class:`Option`\s or :class:`Argument`\s. Other subclasses are currently + not supported by design as some of the internals for parsing are + intentionally not finalized. + + Some settings are supported by both options and arguments. + + :param param_decls: the parameter declarations for this option or + argument. This is a list of flags or argument + names. + :param type: the type that should be used. Either a :class:`ParamType` + or a Python type. The latter is converted into the former + automatically if supported. + :param required: controls if this is optional or not. + :param default: the default value if omitted. This can also be a callable, + in which case it's invoked when the default is needed + without any arguments. + :param callback: A function to further process or validate the value + after type conversion. It is called as ``f(ctx, param, value)`` + and must return the value. It is called for all sources, + including prompts. + :param nargs: the number of arguments to match. If not ``1`` the return + value is a tuple instead of single value. The default for + nargs is ``1`` (except if the type is a tuple, then it's + the arity of the tuple). If ``nargs=-1``, all remaining + parameters are collected. + :param metavar: how the value is represented in the help page. + :param expose_value: if this is `True` then the value is passed onwards + to the command callback and stored on the context, + otherwise it's skipped. + :param is_eager: eager values are processed before non eager ones. This + should not be set for arguments or it will inverse the + order of processing. + :param envvar: a string or list of strings that are environment variables + that should be checked. + :param shell_complete: A function that returns custom shell + completions. Used instead of the param's type completion if + given. Takes ``ctx, param, incomplete`` and must return a list + of :class:`~click.shell_completion.CompletionItem` or a list of + strings. + + .. versionchanged:: 8.0 + ``process_value`` validates required parameters and bounded + ``nargs``, and invokes the parameter callback before returning + the value. This allows the callback to validate prompts. + ``full_process_value`` is removed. + + .. versionchanged:: 8.0 + ``autocompletion`` is renamed to ``shell_complete`` and has new + semantics described above. The old name is deprecated and will + be removed in 8.1, until then it will be wrapped to match the + new requirements. + + .. versionchanged:: 8.0 + For ``multiple=True, nargs>1``, the default must be a list of + tuples. + + .. versionchanged:: 8.0 + Setting a default is no longer required for ``nargs>1``, it will + default to ``None``. ``multiple=True`` or ``nargs=-1`` will + default to ``()``. + + .. versionchanged:: 7.1 + Empty environment variables are ignored rather than taking the + empty string value. This makes it possible for scripts to clear + variables if they can't unset them. + + .. versionchanged:: 2.0 + Changed signature for parameter callback to also be passed the + parameter. The old callback format will still work, but it will + raise a warning to give you a chance to migrate the code easier. + """ + + param_type_name = "parameter" + + def __init__( + self, + param_decls: t.Optional[t.Sequence[str]] = None, + type: t.Optional[t.Union[types.ParamType, t.Any]] = None, + required: bool = False, + default: t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]] = None, + callback: t.Optional[t.Callable[[Context, "Parameter", t.Any], t.Any]] = None, + nargs: t.Optional[int] = None, + multiple: bool = False, + metavar: t.Optional[str] = None, + expose_value: bool = True, + is_eager: bool = False, + envvar: t.Optional[t.Union[str, t.Sequence[str]]] = None, + shell_complete: t.Optional[ + t.Callable[ + [Context, "Parameter", str], + t.Union[t.List["CompletionItem"], t.List[str]], + ] + ] = None, + ) -> None: + self.name: t.Optional[str] + self.opts: t.List[str] + self.secondary_opts: t.List[str] + self.name, self.opts, self.secondary_opts = self._parse_decls( + param_decls or (), expose_value + ) + self.type: types.ParamType = types.convert_type(type, default) + + # Default nargs to what the type tells us if we have that + # information available. + if nargs is None: + if self.type.is_composite: + nargs = self.type.arity + else: + nargs = 1 + + self.required = required + self.callback = callback + self.nargs = nargs + self.multiple = multiple + self.expose_value = expose_value + self.default = default + self.is_eager = is_eager + self.metavar = metavar + self.envvar = envvar + self._custom_shell_complete = shell_complete + + if __debug__: + if self.type.is_composite and nargs != self.type.arity: + raise ValueError( + f"'nargs' must be {self.type.arity} (or None) for" + f" type {self.type!r}, but it was {nargs}." + ) + + # Skip no default or callable default. + check_default = default if not callable(default) else None + + if check_default is not None: + if multiple: + try: + # Only check the first value against nargs. + check_default = next(_check_iter(check_default), None) + except TypeError: + raise ValueError( + "'default' must be a list when 'multiple' is true." + ) from None + + # Can be None for multiple with empty default. + if nargs != 1 and check_default is not None: + try: + _check_iter(check_default) + except TypeError: + if multiple: + message = ( + "'default' must be a list of lists when 'multiple' is" + " true and 'nargs' != 1." + ) + else: + message = "'default' must be a list when 'nargs' != 1." + + raise ValueError(message) from None + + if nargs > 1 and len(check_default) != nargs: + subject = "item length" if multiple else "length" + raise ValueError( + f"'default' {subject} must match nargs={nargs}." + ) + + def to_info_dict(self) -> t.Dict[str, t.Any]: + """Gather information that could be useful for a tool generating + user-facing documentation. + + Use :meth:`click.Context.to_info_dict` to traverse the entire + CLI structure. + + .. versionadded:: 8.0 + """ + return { + "name": self.name, + "param_type_name": self.param_type_name, + "opts": self.opts, + "secondary_opts": self.secondary_opts, + "type": self.type.to_info_dict(), + "required": self.required, + "nargs": self.nargs, + "multiple": self.multiple, + "default": self.default, + "envvar": self.envvar, + } + + def __repr__(self) -> str: + return f"<{self.__class__.__name__} {self.name}>" + + def _parse_decls( + self, decls: t.Sequence[str], expose_value: bool + ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: + raise NotImplementedError() + + @property + def human_readable_name(self) -> str: + """Returns the human readable name of this parameter. This is the + same as the name for options, but the metavar for arguments. + """ + return self.name # type: ignore + + def make_metavar(self) -> str: + if self.metavar is not None: + return self.metavar + + metavar = self.type.get_metavar(self) + + if metavar is None: + metavar = self.type.name.upper() + + if self.nargs != 1: + metavar += "..." + + return metavar + + @t.overload + def get_default( + self, ctx: Context, call: "te.Literal[True]" = True + ) -> t.Optional[t.Any]: + ... + + @t.overload + def get_default( + self, ctx: Context, call: bool = ... + ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: + ... + + def get_default( + self, ctx: Context, call: bool = True + ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: + """Get the default for the parameter. Tries + :meth:`Context.lookup_default` first, then the local default. + + :param ctx: Current context. + :param call: If the default is a callable, call it. Disable to + return the callable instead. + + .. versionchanged:: 8.0.2 + Type casting is no longer performed when getting a default. + + .. versionchanged:: 8.0.1 + Type casting can fail in resilient parsing mode. Invalid + defaults will not prevent showing help text. + + .. versionchanged:: 8.0 + Looks at ``ctx.default_map`` first. + + .. versionchanged:: 8.0 + Added the ``call`` parameter. + """ + value = ctx.lookup_default(self.name, call=False) # type: ignore + + if value is None: + value = self.default + + if call and callable(value): + value = value() + + return value + + def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: + raise NotImplementedError() + + def consume_value( + self, ctx: Context, opts: t.Mapping[str, t.Any] + ) -> t.Tuple[t.Any, ParameterSource]: + value = opts.get(self.name) # type: ignore + source = ParameterSource.COMMANDLINE + + if value is None: + value = self.value_from_envvar(ctx) + source = ParameterSource.ENVIRONMENT + + if value is None: + value = ctx.lookup_default(self.name) # type: ignore + source = ParameterSource.DEFAULT_MAP + + if value is None: + value = self.get_default(ctx) + source = ParameterSource.DEFAULT + + return value, source + + def type_cast_value(self, ctx: Context, value: t.Any) -> t.Any: + """Convert and validate a value against the option's + :attr:`type`, :attr:`multiple`, and :attr:`nargs`. + """ + if value is None: + return () if self.multiple or self.nargs == -1 else None + + def check_iter(value: t.Any) -> t.Iterator[t.Any]: + try: + return _check_iter(value) + except TypeError: + # This should only happen when passing in args manually, + # the parser should construct an iterable when parsing + # the command line. + raise BadParameter( + _("Value must be an iterable."), ctx=ctx, param=self + ) from None + + if self.nargs == 1 or self.type.is_composite: + + def convert(value: t.Any) -> t.Any: + return self.type(value, param=self, ctx=ctx) + + elif self.nargs == -1: + + def convert(value: t.Any) -> t.Any: # t.Tuple[t.Any, ...] + return tuple(self.type(x, self, ctx) for x in check_iter(value)) + + else: # nargs > 1 + + def convert(value: t.Any) -> t.Any: # t.Tuple[t.Any, ...] + value = tuple(check_iter(value)) + + if len(value) != self.nargs: + raise BadParameter( + ngettext( + "Takes {nargs} values but 1 was given.", + "Takes {nargs} values but {len} were given.", + len(value), + ).format(nargs=self.nargs, len=len(value)), + ctx=ctx, + param=self, + ) + + return tuple(self.type(x, self, ctx) for x in value) + + if self.multiple: + return tuple(convert(x) for x in check_iter(value)) + + return convert(value) + + def value_is_missing(self, value: t.Any) -> bool: + if value is None: + return True + + if (self.nargs != 1 or self.multiple) and value == (): + return True + + return False + + def process_value(self, ctx: Context, value: t.Any) -> t.Any: + value = self.type_cast_value(ctx, value) + + if self.required and self.value_is_missing(value): + raise MissingParameter(ctx=ctx, param=self) + + if self.callback is not None: + value = self.callback(ctx, self, value) + + return value + + def resolve_envvar_value(self, ctx: Context) -> t.Optional[str]: + if self.envvar is None: + return None + + if isinstance(self.envvar, str): + rv = os.environ.get(self.envvar) + + if rv: + return rv + else: + for envvar in self.envvar: + rv = os.environ.get(envvar) + + if rv: + return rv + + return None + + def value_from_envvar(self, ctx: Context) -> t.Optional[t.Any]: + rv: t.Optional[t.Any] = self.resolve_envvar_value(ctx) + + if rv is not None and self.nargs != 1: + rv = self.type.split_envvar_value(rv) + + return rv + + def handle_parse_result( + self, ctx: Context, opts: t.Mapping[str, t.Any], args: t.List[str] + ) -> t.Tuple[t.Any, t.List[str]]: + with augment_usage_errors(ctx, param=self): + value, source = self.consume_value(ctx, opts) + ctx.set_parameter_source(self.name, source) # type: ignore + + try: + value = self.process_value(ctx, value) + except Exception: + if not ctx.resilient_parsing: + raise + + value = None + + if self.expose_value: + ctx.params[self.name] = value # type: ignore + + return value, args + + def get_help_record(self, ctx: Context) -> t.Optional[t.Tuple[str, str]]: + pass + + def get_usage_pieces(self, ctx: Context) -> t.List[str]: + return [] + + def get_error_hint(self, ctx: Context) -> str: + """Get a stringified version of the param for use in error messages to + indicate which param caused the error. + """ + hint_list = self.opts or [self.human_readable_name] + return " / ".join(f"'{x}'" for x in hint_list) + + def shell_complete(self, ctx: Context, incomplete: str) -> t.List["CompletionItem"]: + """Return a list of completions for the incomplete value. If a + ``shell_complete`` function was given during init, it is used. + Otherwise, the :attr:`type` + :meth:`~click.types.ParamType.shell_complete` function is used. + + :param ctx: Invocation context for this command. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + if self._custom_shell_complete is not None: + results = self._custom_shell_complete(ctx, self, incomplete) + + if results and isinstance(results[0], str): + from click.shell_completion import CompletionItem + + results = [CompletionItem(c) for c in results] + + return t.cast(t.List["CompletionItem"], results) + + return self.type.shell_complete(ctx, self, incomplete) + + +class Option(Parameter): + """Options are usually optional values on the command line and + have some extra features that arguments don't have. + + All other parameters are passed onwards to the parameter constructor. + + :param show_default: Show the default value for this option in its + help text. Values are not shown by default, unless + :attr:`Context.show_default` is ``True``. If this value is a + string, it shows that string in parentheses instead of the + actual value. This is particularly useful for dynamic options. + For single option boolean flags, the default remains hidden if + its value is ``False``. + :param show_envvar: Controls if an environment variable should be + shown on the help page. Normally, environment variables are not + shown. + :param prompt: If set to ``True`` or a non empty string then the + user will be prompted for input. If set to ``True`` the prompt + will be the option name capitalized. + :param confirmation_prompt: Prompt a second time to confirm the + value if it was prompted for. Can be set to a string instead of + ``True`` to customize the message. + :param prompt_required: If set to ``False``, the user will be + prompted for input only when the option was specified as a flag + without a value. + :param hide_input: If this is ``True`` then the input on the prompt + will be hidden from the user. This is useful for password input. + :param is_flag: forces this option to act as a flag. The default is + auto detection. + :param flag_value: which value should be used for this flag if it's + enabled. This is set to a boolean automatically if + the option string contains a slash to mark two options. + :param multiple: if this is set to `True` then the argument is accepted + multiple times and recorded. This is similar to ``nargs`` + in how it works but supports arbitrary number of + arguments. + :param count: this flag makes an option increment an integer. + :param allow_from_autoenv: if this is enabled then the value of this + parameter will be pulled from an environment + variable in case a prefix is defined on the + context. + :param help: the help string. + :param hidden: hide this option from help outputs. + :param attrs: Other command arguments described in :class:`Parameter`. + + .. versionchanged:: 8.1.0 + Help text indentation is cleaned here instead of only in the + ``@option`` decorator. + + .. versionchanged:: 8.1.0 + The ``show_default`` parameter overrides + ``Context.show_default``. + + .. versionchanged:: 8.1.0 + The default of a single option boolean flag is not shown if the + default value is ``False``. + + .. versionchanged:: 8.0.1 + ``type`` is detected from ``flag_value`` if given. + """ + + param_type_name = "option" + + def __init__( + self, + param_decls: t.Optional[t.Sequence[str]] = None, + show_default: t.Union[bool, str, None] = None, + prompt: t.Union[bool, str] = False, + confirmation_prompt: t.Union[bool, str] = False, + prompt_required: bool = True, + hide_input: bool = False, + is_flag: t.Optional[bool] = None, + flag_value: t.Optional[t.Any] = None, + multiple: bool = False, + count: bool = False, + allow_from_autoenv: bool = True, + type: t.Optional[t.Union[types.ParamType, t.Any]] = None, + help: t.Optional[str] = None, + hidden: bool = False, + show_choices: bool = True, + show_envvar: bool = False, + **attrs: t.Any, + ) -> None: + if help: + help = inspect.cleandoc(help) + + default_is_missing = "default" not in attrs + super().__init__(param_decls, type=type, multiple=multiple, **attrs) + + if prompt is True: + if self.name is None: + raise TypeError("'name' is required with 'prompt=True'.") + + prompt_text: t.Optional[str] = self.name.replace("_", " ").capitalize() + elif prompt is False: + prompt_text = None + else: + prompt_text = prompt + + self.prompt = prompt_text + self.confirmation_prompt = confirmation_prompt + self.prompt_required = prompt_required + self.hide_input = hide_input + self.hidden = hidden + + # If prompt is enabled but not required, then the option can be + # used as a flag to indicate using prompt or flag_value. + self._flag_needs_value = self.prompt is not None and not self.prompt_required + + if is_flag is None: + if flag_value is not None: + # Implicitly a flag because flag_value was set. + is_flag = True + elif self._flag_needs_value: + # Not a flag, but when used as a flag it shows a prompt. + is_flag = False + else: + # Implicitly a flag because flag options were given. + is_flag = bool(self.secondary_opts) + elif is_flag is False and not self._flag_needs_value: + # Not a flag, and prompt is not enabled, can be used as a + # flag if flag_value is set. + self._flag_needs_value = flag_value is not None + + self.default: t.Union[t.Any, t.Callable[[], t.Any]] + + if is_flag and default_is_missing and not self.required: + if multiple: + self.default = () + else: + self.default = False + + if flag_value is None: + flag_value = not self.default + + self.type: types.ParamType + if is_flag and type is None: + # Re-guess the type from the flag value instead of the + # default. + self.type = types.convert_type(None, flag_value) + + self.is_flag: bool = is_flag + self.is_bool_flag: bool = is_flag and isinstance(self.type, types.BoolParamType) + self.flag_value: t.Any = flag_value + + # Counting + self.count = count + if count: + if type is None: + self.type = types.IntRange(min=0) + if default_is_missing: + self.default = 0 + + self.allow_from_autoenv = allow_from_autoenv + self.help = help + self.show_default = show_default + self.show_choices = show_choices + self.show_envvar = show_envvar + + if __debug__: + if self.nargs == -1: + raise TypeError("nargs=-1 is not supported for options.") + + if self.prompt and self.is_flag and not self.is_bool_flag: + raise TypeError("'prompt' is not valid for non-boolean flag.") + + if not self.is_bool_flag and self.secondary_opts: + raise TypeError("Secondary flag is not valid for non-boolean flag.") + + if self.is_bool_flag and self.hide_input and self.prompt is not None: + raise TypeError( + "'prompt' with 'hide_input' is not valid for boolean flag." + ) + + if self.count: + if self.multiple: + raise TypeError("'count' is not valid with 'multiple'.") + + if self.is_flag: + raise TypeError("'count' is not valid with 'is_flag'.") + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict.update( + help=self.help, + prompt=self.prompt, + is_flag=self.is_flag, + flag_value=self.flag_value, + count=self.count, + hidden=self.hidden, + ) + return info_dict + + def _parse_decls( + self, decls: t.Sequence[str], expose_value: bool + ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: + opts = [] + secondary_opts = [] + name = None + possible_names = [] + + for decl in decls: + if decl.isidentifier(): + if name is not None: + raise TypeError(f"Name '{name}' defined twice") + name = decl + else: + split_char = ";" if decl[:1] == "/" else "/" + if split_char in decl: + first, second = decl.split(split_char, 1) + first = first.rstrip() + if first: + possible_names.append(split_opt(first)) + opts.append(first) + second = second.lstrip() + if second: + secondary_opts.append(second.lstrip()) + if first == second: + raise ValueError( + f"Boolean option {decl!r} cannot use the" + " same flag for true/false." + ) + else: + possible_names.append(split_opt(decl)) + opts.append(decl) + + if name is None and possible_names: + possible_names.sort(key=lambda x: -len(x[0])) # group long options first + name = possible_names[0][1].replace("-", "_").lower() + if not name.isidentifier(): + name = None + + if name is None: + if not expose_value: + return None, opts, secondary_opts + raise TypeError("Could not determine name for option") + + if not opts and not secondary_opts: + raise TypeError( + f"No options defined but a name was passed ({name})." + " Did you mean to declare an argument instead? Did" + f" you mean to pass '--{name}'?" + ) + + return name, opts, secondary_opts + + def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: + if self.multiple: + action = "append" + elif self.count: + action = "count" + else: + action = "store" + + if self.is_flag: + action = f"{action}_const" + + if self.is_bool_flag and self.secondary_opts: + parser.add_option( + obj=self, opts=self.opts, dest=self.name, action=action, const=True + ) + parser.add_option( + obj=self, + opts=self.secondary_opts, + dest=self.name, + action=action, + const=False, + ) + else: + parser.add_option( + obj=self, + opts=self.opts, + dest=self.name, + action=action, + const=self.flag_value, + ) + else: + parser.add_option( + obj=self, + opts=self.opts, + dest=self.name, + action=action, + nargs=self.nargs, + ) + + def get_help_record(self, ctx: Context) -> t.Optional[t.Tuple[str, str]]: + if self.hidden: + return None + + any_prefix_is_slash = False + + def _write_opts(opts: t.Sequence[str]) -> str: + nonlocal any_prefix_is_slash + + rv, any_slashes = join_options(opts) + + if any_slashes: + any_prefix_is_slash = True + + if not self.is_flag and not self.count: + rv += f" {self.make_metavar()}" + + return rv + + rv = [_write_opts(self.opts)] + + if self.secondary_opts: + rv.append(_write_opts(self.secondary_opts)) + + help = self.help or "" + extra = [] + + if self.show_envvar: + envvar = self.envvar + + if envvar is None: + if ( + self.allow_from_autoenv + and ctx.auto_envvar_prefix is not None + and self.name is not None + ): + envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" + + if envvar is not None: + var_str = ( + envvar + if isinstance(envvar, str) + else ", ".join(str(d) for d in envvar) + ) + extra.append(_("env var: {var}").format(var=var_str)) + + # Temporarily enable resilient parsing to avoid type casting + # failing for the default. Might be possible to extend this to + # help formatting in general. + resilient = ctx.resilient_parsing + ctx.resilient_parsing = True + + try: + default_value = self.get_default(ctx, call=False) + finally: + ctx.resilient_parsing = resilient + + show_default = False + show_default_is_str = False + + if self.show_default is not None: + if isinstance(self.show_default, str): + show_default_is_str = show_default = True + else: + show_default = self.show_default + elif ctx.show_default is not None: + show_default = ctx.show_default + + if show_default_is_str or (show_default and (default_value is not None)): + if show_default_is_str: + default_string = f"({self.show_default})" + elif isinstance(default_value, (list, tuple)): + default_string = ", ".join(str(d) for d in default_value) + elif inspect.isfunction(default_value): + default_string = _("(dynamic)") + elif self.is_bool_flag and self.secondary_opts: + # For boolean flags that have distinct True/False opts, + # use the opt without prefix instead of the value. + default_string = split_opt( + (self.opts if self.default else self.secondary_opts)[0] + )[1] + elif self.is_bool_flag and not self.secondary_opts and not default_value: + default_string = "" + else: + default_string = str(default_value) + + if default_string: + extra.append(_("default: {default}").format(default=default_string)) + + if ( + isinstance(self.type, types._NumberRangeBase) + # skip count with default range type + and not (self.count and self.type.min == 0 and self.type.max is None) + ): + range_str = self.type._describe_range() + + if range_str: + extra.append(range_str) + + if self.required: + extra.append(_("required")) + + if extra: + extra_str = "; ".join(extra) + help = f"{help} [{extra_str}]" if help else f"[{extra_str}]" + + return ("; " if any_prefix_is_slash else " / ").join(rv), help + + @t.overload + def get_default( + self, ctx: Context, call: "te.Literal[True]" = True + ) -> t.Optional[t.Any]: + ... + + @t.overload + def get_default( + self, ctx: Context, call: bool = ... + ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: + ... + + def get_default( + self, ctx: Context, call: bool = True + ) -> t.Optional[t.Union[t.Any, t.Callable[[], t.Any]]]: + # If we're a non boolean flag our default is more complex because + # we need to look at all flags in the same group to figure out + # if we're the default one in which case we return the flag + # value as default. + if self.is_flag and not self.is_bool_flag: + for param in ctx.command.params: + if param.name == self.name and param.default: + return t.cast(Option, param).flag_value + + return None + + return super().get_default(ctx, call=call) + + def prompt_for_value(self, ctx: Context) -> t.Any: + """This is an alternative flow that can be activated in the full + value processing if a value does not exist. It will prompt the + user until a valid value exists and then returns the processed + value as result. + """ + assert self.prompt is not None + + # Calculate the default before prompting anything to be stable. + default = self.get_default(ctx) + + # If this is a prompt for a flag we need to handle this + # differently. + if self.is_bool_flag: + return confirm(self.prompt, default) + + return prompt( + self.prompt, + default=default, + type=self.type, + hide_input=self.hide_input, + show_choices=self.show_choices, + confirmation_prompt=self.confirmation_prompt, + value_proc=lambda x: self.process_value(ctx, x), + ) + + def resolve_envvar_value(self, ctx: Context) -> t.Optional[str]: + rv = super().resolve_envvar_value(ctx) + + if rv is not None: + return rv + + if ( + self.allow_from_autoenv + and ctx.auto_envvar_prefix is not None + and self.name is not None + ): + envvar = f"{ctx.auto_envvar_prefix}_{self.name.upper()}" + rv = os.environ.get(envvar) + + if rv: + return rv + + return None + + def value_from_envvar(self, ctx: Context) -> t.Optional[t.Any]: + rv: t.Optional[t.Any] = self.resolve_envvar_value(ctx) + + if rv is None: + return None + + value_depth = (self.nargs != 1) + bool(self.multiple) + + if value_depth > 0: + rv = self.type.split_envvar_value(rv) + + if self.multiple and self.nargs != 1: + rv = batch(rv, self.nargs) + + return rv + + def consume_value( + self, ctx: Context, opts: t.Mapping[str, "Parameter"] + ) -> t.Tuple[t.Any, ParameterSource]: + value, source = super().consume_value(ctx, opts) + + # The parser will emit a sentinel value if the option can be + # given as a flag without a value. This is different from None + # to distinguish from the flag not being given at all. + if value is _flag_needs_value: + if self.prompt is not None and not ctx.resilient_parsing: + value = self.prompt_for_value(ctx) + source = ParameterSource.PROMPT + else: + value = self.flag_value + source = ParameterSource.COMMANDLINE + + elif ( + self.multiple + and value is not None + and any(v is _flag_needs_value for v in value) + ): + value = [self.flag_value if v is _flag_needs_value else v for v in value] + source = ParameterSource.COMMANDLINE + + # The value wasn't set, or used the param's default, prompt if + # prompting is enabled. + elif ( + source in {None, ParameterSource.DEFAULT} + and self.prompt is not None + and (self.required or self.prompt_required) + and not ctx.resilient_parsing + ): + value = self.prompt_for_value(ctx) + source = ParameterSource.PROMPT + + return value, source + + +class Argument(Parameter): + """Arguments are positional parameters to a command. They generally + provide fewer features than options but can have infinite ``nargs`` + and are required by default. + + All parameters are passed onwards to the constructor of :class:`Parameter`. + """ + + param_type_name = "argument" + + def __init__( + self, + param_decls: t.Sequence[str], + required: t.Optional[bool] = None, + **attrs: t.Any, + ) -> None: + if required is None: + if attrs.get("default") is not None: + required = False + else: + required = attrs.get("nargs", 1) > 0 + + if "multiple" in attrs: + raise TypeError("__init__() got an unexpected keyword argument 'multiple'.") + + super().__init__(param_decls, required=required, **attrs) + + if __debug__: + if self.default is not None and self.nargs == -1: + raise TypeError("'default' is not supported for nargs=-1.") + + @property + def human_readable_name(self) -> str: + if self.metavar is not None: + return self.metavar + return self.name.upper() # type: ignore + + def make_metavar(self) -> str: + if self.metavar is not None: + return self.metavar + var = self.type.get_metavar(self) + if not var: + var = self.name.upper() # type: ignore + if not self.required: + var = f"[{var}]" + if self.nargs != 1: + var += "..." + return var + + def _parse_decls( + self, decls: t.Sequence[str], expose_value: bool + ) -> t.Tuple[t.Optional[str], t.List[str], t.List[str]]: + if not decls: + if not expose_value: + return None, [], [] + raise TypeError("Could not determine name for argument") + if len(decls) == 1: + name = arg = decls[0] + name = name.replace("-", "_").lower() + else: + raise TypeError( + "Arguments take exactly one parameter declaration, got" + f" {len(decls)}." + ) + return name, [arg], [] + + def get_usage_pieces(self, ctx: Context) -> t.List[str]: + return [self.make_metavar()] + + def get_error_hint(self, ctx: Context) -> str: + return f"'{self.make_metavar()}'" + + def add_to_parser(self, parser: OptionParser, ctx: Context) -> None: + parser.add_argument(dest=self.name, nargs=self.nargs, obj=self) diff --git a/venv/lib/python3.12/site-packages/click/decorators.py b/venv/lib/python3.12/site-packages/click/decorators.py new file mode 100644 index 0000000..d9bba95 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/decorators.py @@ -0,0 +1,561 @@ +import inspect +import types +import typing as t +from functools import update_wrapper +from gettext import gettext as _ + +from .core import Argument +from .core import Command +from .core import Context +from .core import Group +from .core import Option +from .core import Parameter +from .globals import get_current_context +from .utils import echo + +if t.TYPE_CHECKING: + import typing_extensions as te + + P = te.ParamSpec("P") + +R = t.TypeVar("R") +T = t.TypeVar("T") +_AnyCallable = t.Callable[..., t.Any] +FC = t.TypeVar("FC", bound=t.Union[_AnyCallable, Command]) + + +def pass_context(f: "t.Callable[te.Concatenate[Context, P], R]") -> "t.Callable[P, R]": + """Marks a callback as wanting to receive the current context + object as first argument. + """ + + def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": + return f(get_current_context(), *args, **kwargs) + + return update_wrapper(new_func, f) + + +def pass_obj(f: "t.Callable[te.Concatenate[t.Any, P], R]") -> "t.Callable[P, R]": + """Similar to :func:`pass_context`, but only pass the object on the + context onwards (:attr:`Context.obj`). This is useful if that object + represents the state of a nested system. + """ + + def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": + return f(get_current_context().obj, *args, **kwargs) + + return update_wrapper(new_func, f) + + +def make_pass_decorator( + object_type: t.Type[T], ensure: bool = False +) -> t.Callable[["t.Callable[te.Concatenate[T, P], R]"], "t.Callable[P, R]"]: + """Given an object type this creates a decorator that will work + similar to :func:`pass_obj` but instead of passing the object of the + current context, it will find the innermost context of type + :func:`object_type`. + + This generates a decorator that works roughly like this:: + + from functools import update_wrapper + + def decorator(f): + @pass_context + def new_func(ctx, *args, **kwargs): + obj = ctx.find_object(object_type) + return ctx.invoke(f, obj, *args, **kwargs) + return update_wrapper(new_func, f) + return decorator + + :param object_type: the type of the object to pass. + :param ensure: if set to `True`, a new object will be created and + remembered on the context if it's not there yet. + """ + + def decorator(f: "t.Callable[te.Concatenate[T, P], R]") -> "t.Callable[P, R]": + def new_func(*args: "P.args", **kwargs: "P.kwargs") -> "R": + ctx = get_current_context() + + obj: t.Optional[T] + if ensure: + obj = ctx.ensure_object(object_type) + else: + obj = ctx.find_object(object_type) + + if obj is None: + raise RuntimeError( + "Managed to invoke callback without a context" + f" object of type {object_type.__name__!r}" + " existing." + ) + + return ctx.invoke(f, obj, *args, **kwargs) + + return update_wrapper(new_func, f) + + return decorator # type: ignore[return-value] + + +def pass_meta_key( + key: str, *, doc_description: t.Optional[str] = None +) -> "t.Callable[[t.Callable[te.Concatenate[t.Any, P], R]], t.Callable[P, R]]": + """Create a decorator that passes a key from + :attr:`click.Context.meta` as the first argument to the decorated + function. + + :param key: Key in ``Context.meta`` to pass. + :param doc_description: Description of the object being passed, + inserted into the decorator's docstring. Defaults to "the 'key' + key from Context.meta". + + .. versionadded:: 8.0 + """ + + def decorator(f: "t.Callable[te.Concatenate[t.Any, P], R]") -> "t.Callable[P, R]": + def new_func(*args: "P.args", **kwargs: "P.kwargs") -> R: + ctx = get_current_context() + obj = ctx.meta[key] + return ctx.invoke(f, obj, *args, **kwargs) + + return update_wrapper(new_func, f) + + if doc_description is None: + doc_description = f"the {key!r} key from :attr:`click.Context.meta`" + + decorator.__doc__ = ( + f"Decorator that passes {doc_description} as the first argument" + " to the decorated function." + ) + return decorator # type: ignore[return-value] + + +CmdType = t.TypeVar("CmdType", bound=Command) + + +# variant: no call, directly as decorator for a function. +@t.overload +def command(name: _AnyCallable) -> Command: + ... + + +# variant: with positional name and with positional or keyword cls argument: +# @command(namearg, CommandCls, ...) or @command(namearg, cls=CommandCls, ...) +@t.overload +def command( + name: t.Optional[str], + cls: t.Type[CmdType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], CmdType]: + ... + + +# variant: name omitted, cls _must_ be a keyword argument, @command(cls=CommandCls, ...) +@t.overload +def command( + name: None = None, + *, + cls: t.Type[CmdType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], CmdType]: + ... + + +# variant: with optional string name, no cls argument provided. +@t.overload +def command( + name: t.Optional[str] = ..., cls: None = None, **attrs: t.Any +) -> t.Callable[[_AnyCallable], Command]: + ... + + +def command( + name: t.Union[t.Optional[str], _AnyCallable] = None, + cls: t.Optional[t.Type[CmdType]] = None, + **attrs: t.Any, +) -> t.Union[Command, t.Callable[[_AnyCallable], t.Union[Command, CmdType]]]: + r"""Creates a new :class:`Command` and uses the decorated function as + callback. This will also automatically attach all decorated + :func:`option`\s and :func:`argument`\s as parameters to the command. + + The name of the command defaults to the name of the function with + underscores replaced by dashes. If you want to change that, you can + pass the intended name as the first argument. + + All keyword arguments are forwarded to the underlying command class. + For the ``params`` argument, any decorated params are appended to + the end of the list. + + Once decorated the function turns into a :class:`Command` instance + that can be invoked as a command line utility or be attached to a + command :class:`Group`. + + :param name: the name of the command. This defaults to the function + name with underscores replaced by dashes. + :param cls: the command class to instantiate. This defaults to + :class:`Command`. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + + .. versionchanged:: 8.1 + The ``params`` argument can be used. Decorated params are + appended to the end of the list. + """ + + func: t.Optional[t.Callable[[_AnyCallable], t.Any]] = None + + if callable(name): + func = name + name = None + assert cls is None, "Use 'command(cls=cls)(callable)' to specify a class." + assert not attrs, "Use 'command(**kwargs)(callable)' to provide arguments." + + if cls is None: + cls = t.cast(t.Type[CmdType], Command) + + def decorator(f: _AnyCallable) -> CmdType: + if isinstance(f, Command): + raise TypeError("Attempted to convert a callback into a command twice.") + + attr_params = attrs.pop("params", None) + params = attr_params if attr_params is not None else [] + + try: + decorator_params = f.__click_params__ # type: ignore + except AttributeError: + pass + else: + del f.__click_params__ # type: ignore + params.extend(reversed(decorator_params)) + + if attrs.get("help") is None: + attrs["help"] = f.__doc__ + + if t.TYPE_CHECKING: + assert cls is not None + assert not callable(name) + + cmd = cls( + name=name or f.__name__.lower().replace("_", "-"), + callback=f, + params=params, + **attrs, + ) + cmd.__doc__ = f.__doc__ + return cmd + + if func is not None: + return decorator(func) + + return decorator + + +GrpType = t.TypeVar("GrpType", bound=Group) + + +# variant: no call, directly as decorator for a function. +@t.overload +def group(name: _AnyCallable) -> Group: + ... + + +# variant: with positional name and with positional or keyword cls argument: +# @group(namearg, GroupCls, ...) or @group(namearg, cls=GroupCls, ...) +@t.overload +def group( + name: t.Optional[str], + cls: t.Type[GrpType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], GrpType]: + ... + + +# variant: name omitted, cls _must_ be a keyword argument, @group(cmd=GroupCls, ...) +@t.overload +def group( + name: None = None, + *, + cls: t.Type[GrpType], + **attrs: t.Any, +) -> t.Callable[[_AnyCallable], GrpType]: + ... + + +# variant: with optional string name, no cls argument provided. +@t.overload +def group( + name: t.Optional[str] = ..., cls: None = None, **attrs: t.Any +) -> t.Callable[[_AnyCallable], Group]: + ... + + +def group( + name: t.Union[str, _AnyCallable, None] = None, + cls: t.Optional[t.Type[GrpType]] = None, + **attrs: t.Any, +) -> t.Union[Group, t.Callable[[_AnyCallable], t.Union[Group, GrpType]]]: + """Creates a new :class:`Group` with a function as callback. This + works otherwise the same as :func:`command` just that the `cls` + parameter is set to :class:`Group`. + + .. versionchanged:: 8.1 + This decorator can be applied without parentheses. + """ + if cls is None: + cls = t.cast(t.Type[GrpType], Group) + + if callable(name): + return command(cls=cls, **attrs)(name) + + return command(name, cls, **attrs) + + +def _param_memo(f: t.Callable[..., t.Any], param: Parameter) -> None: + if isinstance(f, Command): + f.params.append(param) + else: + if not hasattr(f, "__click_params__"): + f.__click_params__ = [] # type: ignore + + f.__click_params__.append(param) # type: ignore + + +def argument( + *param_decls: str, cls: t.Optional[t.Type[Argument]] = None, **attrs: t.Any +) -> t.Callable[[FC], FC]: + """Attaches an argument to the command. All positional arguments are + passed as parameter declarations to :class:`Argument`; all keyword + arguments are forwarded unchanged (except ``cls``). + This is equivalent to creating an :class:`Argument` instance manually + and attaching it to the :attr:`Command.params` list. + + For the default argument class, refer to :class:`Argument` and + :class:`Parameter` for descriptions of parameters. + + :param cls: the argument class to instantiate. This defaults to + :class:`Argument`. + :param param_decls: Passed as positional arguments to the constructor of + ``cls``. + :param attrs: Passed as keyword arguments to the constructor of ``cls``. + """ + if cls is None: + cls = Argument + + def decorator(f: FC) -> FC: + _param_memo(f, cls(param_decls, **attrs)) + return f + + return decorator + + +def option( + *param_decls: str, cls: t.Optional[t.Type[Option]] = None, **attrs: t.Any +) -> t.Callable[[FC], FC]: + """Attaches an option to the command. All positional arguments are + passed as parameter declarations to :class:`Option`; all keyword + arguments are forwarded unchanged (except ``cls``). + This is equivalent to creating an :class:`Option` instance manually + and attaching it to the :attr:`Command.params` list. + + For the default option class, refer to :class:`Option` and + :class:`Parameter` for descriptions of parameters. + + :param cls: the option class to instantiate. This defaults to + :class:`Option`. + :param param_decls: Passed as positional arguments to the constructor of + ``cls``. + :param attrs: Passed as keyword arguments to the constructor of ``cls``. + """ + if cls is None: + cls = Option + + def decorator(f: FC) -> FC: + _param_memo(f, cls(param_decls, **attrs)) + return f + + return decorator + + +def confirmation_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: + """Add a ``--yes`` option which shows a prompt before continuing if + not passed. If the prompt is declined, the program will exit. + + :param param_decls: One or more option names. Defaults to the single + value ``"--yes"``. + :param kwargs: Extra arguments are passed to :func:`option`. + """ + + def callback(ctx: Context, param: Parameter, value: bool) -> None: + if not value: + ctx.abort() + + if not param_decls: + param_decls = ("--yes",) + + kwargs.setdefault("is_flag", True) + kwargs.setdefault("callback", callback) + kwargs.setdefault("expose_value", False) + kwargs.setdefault("prompt", "Do you want to continue?") + kwargs.setdefault("help", "Confirm the action without prompting.") + return option(*param_decls, **kwargs) + + +def password_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: + """Add a ``--password`` option which prompts for a password, hiding + input and asking to enter the value again for confirmation. + + :param param_decls: One or more option names. Defaults to the single + value ``"--password"``. + :param kwargs: Extra arguments are passed to :func:`option`. + """ + if not param_decls: + param_decls = ("--password",) + + kwargs.setdefault("prompt", True) + kwargs.setdefault("confirmation_prompt", True) + kwargs.setdefault("hide_input", True) + return option(*param_decls, **kwargs) + + +def version_option( + version: t.Optional[str] = None, + *param_decls: str, + package_name: t.Optional[str] = None, + prog_name: t.Optional[str] = None, + message: t.Optional[str] = None, + **kwargs: t.Any, +) -> t.Callable[[FC], FC]: + """Add a ``--version`` option which immediately prints the version + number and exits the program. + + If ``version`` is not provided, Click will try to detect it using + :func:`importlib.metadata.version` to get the version for the + ``package_name``. On Python < 3.8, the ``importlib_metadata`` + backport must be installed. + + If ``package_name`` is not provided, Click will try to detect it by + inspecting the stack frames. This will be used to detect the + version, so it must match the name of the installed package. + + :param version: The version number to show. If not provided, Click + will try to detect it. + :param param_decls: One or more option names. Defaults to the single + value ``"--version"``. + :param package_name: The package name to detect the version from. If + not provided, Click will try to detect it. + :param prog_name: The name of the CLI to show in the message. If not + provided, it will be detected from the command. + :param message: The message to show. The values ``%(prog)s``, + ``%(package)s``, and ``%(version)s`` are available. Defaults to + ``"%(prog)s, version %(version)s"``. + :param kwargs: Extra arguments are passed to :func:`option`. + :raise RuntimeError: ``version`` could not be detected. + + .. versionchanged:: 8.0 + Add the ``package_name`` parameter, and the ``%(package)s`` + value for messages. + + .. versionchanged:: 8.0 + Use :mod:`importlib.metadata` instead of ``pkg_resources``. The + version is detected based on the package name, not the entry + point name. The Python package name must match the installed + package name, or be passed with ``package_name=``. + """ + if message is None: + message = _("%(prog)s, version %(version)s") + + if version is None and package_name is None: + frame = inspect.currentframe() + f_back = frame.f_back if frame is not None else None + f_globals = f_back.f_globals if f_back is not None else None + # break reference cycle + # https://docs.python.org/3/library/inspect.html#the-interpreter-stack + del frame + + if f_globals is not None: + package_name = f_globals.get("__name__") + + if package_name == "__main__": + package_name = f_globals.get("__package__") + + if package_name: + package_name = package_name.partition(".")[0] + + def callback(ctx: Context, param: Parameter, value: bool) -> None: + if not value or ctx.resilient_parsing: + return + + nonlocal prog_name + nonlocal version + + if prog_name is None: + prog_name = ctx.find_root().info_name + + if version is None and package_name is not None: + metadata: t.Optional[types.ModuleType] + + try: + from importlib import metadata # type: ignore + except ImportError: + # Python < 3.8 + import importlib_metadata as metadata # type: ignore + + try: + version = metadata.version(package_name) # type: ignore + except metadata.PackageNotFoundError: # type: ignore + raise RuntimeError( + f"{package_name!r} is not installed. Try passing" + " 'package_name' instead." + ) from None + + if version is None: + raise RuntimeError( + f"Could not determine the version for {package_name!r} automatically." + ) + + echo( + message % {"prog": prog_name, "package": package_name, "version": version}, + color=ctx.color, + ) + ctx.exit() + + if not param_decls: + param_decls = ("--version",) + + kwargs.setdefault("is_flag", True) + kwargs.setdefault("expose_value", False) + kwargs.setdefault("is_eager", True) + kwargs.setdefault("help", _("Show the version and exit.")) + kwargs["callback"] = callback + return option(*param_decls, **kwargs) + + +def help_option(*param_decls: str, **kwargs: t.Any) -> t.Callable[[FC], FC]: + """Add a ``--help`` option which immediately prints the help page + and exits the program. + + This is usually unnecessary, as the ``--help`` option is added to + each command automatically unless ``add_help_option=False`` is + passed. + + :param param_decls: One or more option names. Defaults to the single + value ``"--help"``. + :param kwargs: Extra arguments are passed to :func:`option`. + """ + + def callback(ctx: Context, param: Parameter, value: bool) -> None: + if not value or ctx.resilient_parsing: + return + + echo(ctx.get_help(), color=ctx.color) + ctx.exit() + + if not param_decls: + param_decls = ("--help",) + + kwargs.setdefault("is_flag", True) + kwargs.setdefault("expose_value", False) + kwargs.setdefault("is_eager", True) + kwargs.setdefault("help", _("Show this message and exit.")) + kwargs["callback"] = callback + return option(*param_decls, **kwargs) diff --git a/venv/lib/python3.12/site-packages/click/exceptions.py b/venv/lib/python3.12/site-packages/click/exceptions.py new file mode 100644 index 0000000..fe68a36 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/exceptions.py @@ -0,0 +1,288 @@ +import typing as t +from gettext import gettext as _ +from gettext import ngettext + +from ._compat import get_text_stderr +from .utils import echo +from .utils import format_filename + +if t.TYPE_CHECKING: + from .core import Command + from .core import Context + from .core import Parameter + + +def _join_param_hints( + param_hint: t.Optional[t.Union[t.Sequence[str], str]] +) -> t.Optional[str]: + if param_hint is not None and not isinstance(param_hint, str): + return " / ".join(repr(x) for x in param_hint) + + return param_hint + + +class ClickException(Exception): + """An exception that Click can handle and show to the user.""" + + #: The exit code for this exception. + exit_code = 1 + + def __init__(self, message: str) -> None: + super().__init__(message) + self.message = message + + def format_message(self) -> str: + return self.message + + def __str__(self) -> str: + return self.message + + def show(self, file: t.Optional[t.IO[t.Any]] = None) -> None: + if file is None: + file = get_text_stderr() + + echo(_("Error: {message}").format(message=self.format_message()), file=file) + + +class UsageError(ClickException): + """An internal exception that signals a usage error. This typically + aborts any further handling. + + :param message: the error message to display. + :param ctx: optionally the context that caused this error. Click will + fill in the context automatically in some situations. + """ + + exit_code = 2 + + def __init__(self, message: str, ctx: t.Optional["Context"] = None) -> None: + super().__init__(message) + self.ctx = ctx + self.cmd: t.Optional["Command"] = self.ctx.command if self.ctx else None + + def show(self, file: t.Optional[t.IO[t.Any]] = None) -> None: + if file is None: + file = get_text_stderr() + color = None + hint = "" + if ( + self.ctx is not None + and self.ctx.command.get_help_option(self.ctx) is not None + ): + hint = _("Try '{command} {option}' for help.").format( + command=self.ctx.command_path, option=self.ctx.help_option_names[0] + ) + hint = f"{hint}\n" + if self.ctx is not None: + color = self.ctx.color + echo(f"{self.ctx.get_usage()}\n{hint}", file=file, color=color) + echo( + _("Error: {message}").format(message=self.format_message()), + file=file, + color=color, + ) + + +class BadParameter(UsageError): + """An exception that formats out a standardized error message for a + bad parameter. This is useful when thrown from a callback or type as + Click will attach contextual information to it (for instance, which + parameter it is). + + .. versionadded:: 2.0 + + :param param: the parameter object that caused this error. This can + be left out, and Click will attach this info itself + if possible. + :param param_hint: a string that shows up as parameter name. This + can be used as alternative to `param` in cases + where custom validation should happen. If it is + a string it's used as such, if it's a list then + each item is quoted and separated. + """ + + def __init__( + self, + message: str, + ctx: t.Optional["Context"] = None, + param: t.Optional["Parameter"] = None, + param_hint: t.Optional[str] = None, + ) -> None: + super().__init__(message, ctx) + self.param = param + self.param_hint = param_hint + + def format_message(self) -> str: + if self.param_hint is not None: + param_hint = self.param_hint + elif self.param is not None: + param_hint = self.param.get_error_hint(self.ctx) # type: ignore + else: + return _("Invalid value: {message}").format(message=self.message) + + return _("Invalid value for {param_hint}: {message}").format( + param_hint=_join_param_hints(param_hint), message=self.message + ) + + +class MissingParameter(BadParameter): + """Raised if click required an option or argument but it was not + provided when invoking the script. + + .. versionadded:: 4.0 + + :param param_type: a string that indicates the type of the parameter. + The default is to inherit the parameter type from + the given `param`. Valid values are ``'parameter'``, + ``'option'`` or ``'argument'``. + """ + + def __init__( + self, + message: t.Optional[str] = None, + ctx: t.Optional["Context"] = None, + param: t.Optional["Parameter"] = None, + param_hint: t.Optional[str] = None, + param_type: t.Optional[str] = None, + ) -> None: + super().__init__(message or "", ctx, param, param_hint) + self.param_type = param_type + + def format_message(self) -> str: + if self.param_hint is not None: + param_hint: t.Optional[str] = self.param_hint + elif self.param is not None: + param_hint = self.param.get_error_hint(self.ctx) # type: ignore + else: + param_hint = None + + param_hint = _join_param_hints(param_hint) + param_hint = f" {param_hint}" if param_hint else "" + + param_type = self.param_type + if param_type is None and self.param is not None: + param_type = self.param.param_type_name + + msg = self.message + if self.param is not None: + msg_extra = self.param.type.get_missing_message(self.param) + if msg_extra: + if msg: + msg += f". {msg_extra}" + else: + msg = msg_extra + + msg = f" {msg}" if msg else "" + + # Translate param_type for known types. + if param_type == "argument": + missing = _("Missing argument") + elif param_type == "option": + missing = _("Missing option") + elif param_type == "parameter": + missing = _("Missing parameter") + else: + missing = _("Missing {param_type}").format(param_type=param_type) + + return f"{missing}{param_hint}.{msg}" + + def __str__(self) -> str: + if not self.message: + param_name = self.param.name if self.param else None + return _("Missing parameter: {param_name}").format(param_name=param_name) + else: + return self.message + + +class NoSuchOption(UsageError): + """Raised if click attempted to handle an option that does not + exist. + + .. versionadded:: 4.0 + """ + + def __init__( + self, + option_name: str, + message: t.Optional[str] = None, + possibilities: t.Optional[t.Sequence[str]] = None, + ctx: t.Optional["Context"] = None, + ) -> None: + if message is None: + message = _("No such option: {name}").format(name=option_name) + + super().__init__(message, ctx) + self.option_name = option_name + self.possibilities = possibilities + + def format_message(self) -> str: + if not self.possibilities: + return self.message + + possibility_str = ", ".join(sorted(self.possibilities)) + suggest = ngettext( + "Did you mean {possibility}?", + "(Possible options: {possibilities})", + len(self.possibilities), + ).format(possibility=possibility_str, possibilities=possibility_str) + return f"{self.message} {suggest}" + + +class BadOptionUsage(UsageError): + """Raised if an option is generally supplied but the use of the option + was incorrect. This is for instance raised if the number of arguments + for an option is not correct. + + .. versionadded:: 4.0 + + :param option_name: the name of the option being used incorrectly. + """ + + def __init__( + self, option_name: str, message: str, ctx: t.Optional["Context"] = None + ) -> None: + super().__init__(message, ctx) + self.option_name = option_name + + +class BadArgumentUsage(UsageError): + """Raised if an argument is generally supplied but the use of the argument + was incorrect. This is for instance raised if the number of values + for an argument is not correct. + + .. versionadded:: 6.0 + """ + + +class FileError(ClickException): + """Raised if a file cannot be opened.""" + + def __init__(self, filename: str, hint: t.Optional[str] = None) -> None: + if hint is None: + hint = _("unknown error") + + super().__init__(hint) + self.ui_filename: str = format_filename(filename) + self.filename = filename + + def format_message(self) -> str: + return _("Could not open file {filename!r}: {message}").format( + filename=self.ui_filename, message=self.message + ) + + +class Abort(RuntimeError): + """An internal signalling exception that signals Click to abort.""" + + +class Exit(RuntimeError): + """An exception that indicates that the application should exit with some + status code. + + :param code: the status code to exit with. + """ + + __slots__ = ("exit_code",) + + def __init__(self, code: int = 0) -> None: + self.exit_code: int = code diff --git a/venv/lib/python3.12/site-packages/click/formatting.py b/venv/lib/python3.12/site-packages/click/formatting.py new file mode 100644 index 0000000..ddd2a2f --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/formatting.py @@ -0,0 +1,301 @@ +import typing as t +from contextlib import contextmanager +from gettext import gettext as _ + +from ._compat import term_len +from .parser import split_opt + +# Can force a width. This is used by the test system +FORCED_WIDTH: t.Optional[int] = None + + +def measure_table(rows: t.Iterable[t.Tuple[str, str]]) -> t.Tuple[int, ...]: + widths: t.Dict[int, int] = {} + + for row in rows: + for idx, col in enumerate(row): + widths[idx] = max(widths.get(idx, 0), term_len(col)) + + return tuple(y for x, y in sorted(widths.items())) + + +def iter_rows( + rows: t.Iterable[t.Tuple[str, str]], col_count: int +) -> t.Iterator[t.Tuple[str, ...]]: + for row in rows: + yield row + ("",) * (col_count - len(row)) + + +def wrap_text( + text: str, + width: int = 78, + initial_indent: str = "", + subsequent_indent: str = "", + preserve_paragraphs: bool = False, +) -> str: + """A helper function that intelligently wraps text. By default, it + assumes that it operates on a single paragraph of text but if the + `preserve_paragraphs` parameter is provided it will intelligently + handle paragraphs (defined by two empty lines). + + If paragraphs are handled, a paragraph can be prefixed with an empty + line containing the ``\\b`` character (``\\x08``) to indicate that + no rewrapping should happen in that block. + + :param text: the text that should be rewrapped. + :param width: the maximum width for the text. + :param initial_indent: the initial indent that should be placed on the + first line as a string. + :param subsequent_indent: the indent string that should be placed on + each consecutive line. + :param preserve_paragraphs: if this flag is set then the wrapping will + intelligently handle paragraphs. + """ + from ._textwrap import TextWrapper + + text = text.expandtabs() + wrapper = TextWrapper( + width, + initial_indent=initial_indent, + subsequent_indent=subsequent_indent, + replace_whitespace=False, + ) + if not preserve_paragraphs: + return wrapper.fill(text) + + p: t.List[t.Tuple[int, bool, str]] = [] + buf: t.List[str] = [] + indent = None + + def _flush_par() -> None: + if not buf: + return + if buf[0].strip() == "\b": + p.append((indent or 0, True, "\n".join(buf[1:]))) + else: + p.append((indent or 0, False, " ".join(buf))) + del buf[:] + + for line in text.splitlines(): + if not line: + _flush_par() + indent = None + else: + if indent is None: + orig_len = term_len(line) + line = line.lstrip() + indent = orig_len - term_len(line) + buf.append(line) + _flush_par() + + rv = [] + for indent, raw, text in p: + with wrapper.extra_indent(" " * indent): + if raw: + rv.append(wrapper.indent_only(text)) + else: + rv.append(wrapper.fill(text)) + + return "\n\n".join(rv) + + +class HelpFormatter: + """This class helps with formatting text-based help pages. It's + usually just needed for very special internal cases, but it's also + exposed so that developers can write their own fancy outputs. + + At present, it always writes into memory. + + :param indent_increment: the additional increment for each level. + :param width: the width for the text. This defaults to the terminal + width clamped to a maximum of 78. + """ + + def __init__( + self, + indent_increment: int = 2, + width: t.Optional[int] = None, + max_width: t.Optional[int] = None, + ) -> None: + import shutil + + self.indent_increment = indent_increment + if max_width is None: + max_width = 80 + if width is None: + width = FORCED_WIDTH + if width is None: + width = max(min(shutil.get_terminal_size().columns, max_width) - 2, 50) + self.width = width + self.current_indent = 0 + self.buffer: t.List[str] = [] + + def write(self, string: str) -> None: + """Writes a unicode string into the internal buffer.""" + self.buffer.append(string) + + def indent(self) -> None: + """Increases the indentation.""" + self.current_indent += self.indent_increment + + def dedent(self) -> None: + """Decreases the indentation.""" + self.current_indent -= self.indent_increment + + def write_usage( + self, prog: str, args: str = "", prefix: t.Optional[str] = None + ) -> None: + """Writes a usage line into the buffer. + + :param prog: the program name. + :param args: whitespace separated list of arguments. + :param prefix: The prefix for the first line. Defaults to + ``"Usage: "``. + """ + if prefix is None: + prefix = f"{_('Usage:')} " + + usage_prefix = f"{prefix:>{self.current_indent}}{prog} " + text_width = self.width - self.current_indent + + if text_width >= (term_len(usage_prefix) + 20): + # The arguments will fit to the right of the prefix. + indent = " " * term_len(usage_prefix) + self.write( + wrap_text( + args, + text_width, + initial_indent=usage_prefix, + subsequent_indent=indent, + ) + ) + else: + # The prefix is too long, put the arguments on the next line. + self.write(usage_prefix) + self.write("\n") + indent = " " * (max(self.current_indent, term_len(prefix)) + 4) + self.write( + wrap_text( + args, text_width, initial_indent=indent, subsequent_indent=indent + ) + ) + + self.write("\n") + + def write_heading(self, heading: str) -> None: + """Writes a heading into the buffer.""" + self.write(f"{'':>{self.current_indent}}{heading}:\n") + + def write_paragraph(self) -> None: + """Writes a paragraph into the buffer.""" + if self.buffer: + self.write("\n") + + def write_text(self, text: str) -> None: + """Writes re-indented text into the buffer. This rewraps and + preserves paragraphs. + """ + indent = " " * self.current_indent + self.write( + wrap_text( + text, + self.width, + initial_indent=indent, + subsequent_indent=indent, + preserve_paragraphs=True, + ) + ) + self.write("\n") + + def write_dl( + self, + rows: t.Sequence[t.Tuple[str, str]], + col_max: int = 30, + col_spacing: int = 2, + ) -> None: + """Writes a definition list into the buffer. This is how options + and commands are usually formatted. + + :param rows: a list of two item tuples for the terms and values. + :param col_max: the maximum width of the first column. + :param col_spacing: the number of spaces between the first and + second column. + """ + rows = list(rows) + widths = measure_table(rows) + if len(widths) != 2: + raise TypeError("Expected two columns for definition list") + + first_col = min(widths[0], col_max) + col_spacing + + for first, second in iter_rows(rows, len(widths)): + self.write(f"{'':>{self.current_indent}}{first}") + if not second: + self.write("\n") + continue + if term_len(first) <= first_col - col_spacing: + self.write(" " * (first_col - term_len(first))) + else: + self.write("\n") + self.write(" " * (first_col + self.current_indent)) + + text_width = max(self.width - first_col - 2, 10) + wrapped_text = wrap_text(second, text_width, preserve_paragraphs=True) + lines = wrapped_text.splitlines() + + if lines: + self.write(f"{lines[0]}\n") + + for line in lines[1:]: + self.write(f"{'':>{first_col + self.current_indent}}{line}\n") + else: + self.write("\n") + + @contextmanager + def section(self, name: str) -> t.Iterator[None]: + """Helpful context manager that writes a paragraph, a heading, + and the indents. + + :param name: the section name that is written as heading. + """ + self.write_paragraph() + self.write_heading(name) + self.indent() + try: + yield + finally: + self.dedent() + + @contextmanager + def indentation(self) -> t.Iterator[None]: + """A context manager that increases the indentation.""" + self.indent() + try: + yield + finally: + self.dedent() + + def getvalue(self) -> str: + """Returns the buffer contents.""" + return "".join(self.buffer) + + +def join_options(options: t.Sequence[str]) -> t.Tuple[str, bool]: + """Given a list of option strings this joins them in the most appropriate + way and returns them in the form ``(formatted_string, + any_prefix_is_slash)`` where the second item in the tuple is a flag that + indicates if any of the option prefixes was a slash. + """ + rv = [] + any_prefix_is_slash = False + + for opt in options: + prefix = split_opt(opt)[0] + + if prefix == "/": + any_prefix_is_slash = True + + rv.append((len(prefix), opt)) + + rv.sort(key=lambda x: x[0]) + return ", ".join(x[1] for x in rv), any_prefix_is_slash diff --git a/venv/lib/python3.12/site-packages/click/globals.py b/venv/lib/python3.12/site-packages/click/globals.py new file mode 100644 index 0000000..480058f --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/globals.py @@ -0,0 +1,68 @@ +import typing as t +from threading import local + +if t.TYPE_CHECKING: + import typing_extensions as te + from .core import Context + +_local = local() + + +@t.overload +def get_current_context(silent: "te.Literal[False]" = False) -> "Context": + ... + + +@t.overload +def get_current_context(silent: bool = ...) -> t.Optional["Context"]: + ... + + +def get_current_context(silent: bool = False) -> t.Optional["Context"]: + """Returns the current click context. This can be used as a way to + access the current context object from anywhere. This is a more implicit + alternative to the :func:`pass_context` decorator. This function is + primarily useful for helpers such as :func:`echo` which might be + interested in changing its behavior based on the current context. + + To push the current context, :meth:`Context.scope` can be used. + + .. versionadded:: 5.0 + + :param silent: if set to `True` the return value is `None` if no context + is available. The default behavior is to raise a + :exc:`RuntimeError`. + """ + try: + return t.cast("Context", _local.stack[-1]) + except (AttributeError, IndexError) as e: + if not silent: + raise RuntimeError("There is no active click context.") from e + + return None + + +def push_context(ctx: "Context") -> None: + """Pushes a new context to the current stack.""" + _local.__dict__.setdefault("stack", []).append(ctx) + + +def pop_context() -> None: + """Removes the top level from the stack.""" + _local.stack.pop() + + +def resolve_color_default(color: t.Optional[bool] = None) -> t.Optional[bool]: + """Internal helper to get the default value of the color flag. If a + value is passed it's returned unchanged, otherwise it's looked up from + the current context. + """ + if color is not None: + return color + + ctx = get_current_context(silent=True) + + if ctx is not None: + return ctx.color + + return None diff --git a/venv/lib/python3.12/site-packages/click/parser.py b/venv/lib/python3.12/site-packages/click/parser.py new file mode 100644 index 0000000..5fa7adf --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/parser.py @@ -0,0 +1,529 @@ +""" +This module started out as largely a copy paste from the stdlib's +optparse module with the features removed that we do not need from +optparse because we implement them in Click on a higher level (for +instance type handling, help formatting and a lot more). + +The plan is to remove more and more from here over time. + +The reason this is a different module and not optparse from the stdlib +is that there are differences in 2.x and 3.x about the error messages +generated and optparse in the stdlib uses gettext for no good reason +and might cause us issues. + +Click uses parts of optparse written by Gregory P. Ward and maintained +by the Python Software Foundation. This is limited to code in parser.py. + +Copyright 2001-2006 Gregory P. Ward. All rights reserved. +Copyright 2002-2006 Python Software Foundation. All rights reserved. +""" +# This code uses parts of optparse written by Gregory P. Ward and +# maintained by the Python Software Foundation. +# Copyright 2001-2006 Gregory P. Ward +# Copyright 2002-2006 Python Software Foundation +import typing as t +from collections import deque +from gettext import gettext as _ +from gettext import ngettext + +from .exceptions import BadArgumentUsage +from .exceptions import BadOptionUsage +from .exceptions import NoSuchOption +from .exceptions import UsageError + +if t.TYPE_CHECKING: + import typing_extensions as te + from .core import Argument as CoreArgument + from .core import Context + from .core import Option as CoreOption + from .core import Parameter as CoreParameter + +V = t.TypeVar("V") + +# Sentinel value that indicates an option was passed as a flag without a +# value but is not a flag option. Option.consume_value uses this to +# prompt or use the flag_value. +_flag_needs_value = object() + + +def _unpack_args( + args: t.Sequence[str], nargs_spec: t.Sequence[int] +) -> t.Tuple[t.Sequence[t.Union[str, t.Sequence[t.Optional[str]], None]], t.List[str]]: + """Given an iterable of arguments and an iterable of nargs specifications, + it returns a tuple with all the unpacked arguments at the first index + and all remaining arguments as the second. + + The nargs specification is the number of arguments that should be consumed + or `-1` to indicate that this position should eat up all the remainders. + + Missing items are filled with `None`. + """ + args = deque(args) + nargs_spec = deque(nargs_spec) + rv: t.List[t.Union[str, t.Tuple[t.Optional[str], ...], None]] = [] + spos: t.Optional[int] = None + + def _fetch(c: "te.Deque[V]") -> t.Optional[V]: + try: + if spos is None: + return c.popleft() + else: + return c.pop() + except IndexError: + return None + + while nargs_spec: + nargs = _fetch(nargs_spec) + + if nargs is None: + continue + + if nargs == 1: + rv.append(_fetch(args)) + elif nargs > 1: + x = [_fetch(args) for _ in range(nargs)] + + # If we're reversed, we're pulling in the arguments in reverse, + # so we need to turn them around. + if spos is not None: + x.reverse() + + rv.append(tuple(x)) + elif nargs < 0: + if spos is not None: + raise TypeError("Cannot have two nargs < 0") + + spos = len(rv) + rv.append(None) + + # spos is the position of the wildcard (star). If it's not `None`, + # we fill it with the remainder. + if spos is not None: + rv[spos] = tuple(args) + args = [] + rv[spos + 1 :] = reversed(rv[spos + 1 :]) + + return tuple(rv), list(args) + + +def split_opt(opt: str) -> t.Tuple[str, str]: + first = opt[:1] + if first.isalnum(): + return "", opt + if opt[1:2] == first: + return opt[:2], opt[2:] + return first, opt[1:] + + +def normalize_opt(opt: str, ctx: t.Optional["Context"]) -> str: + if ctx is None or ctx.token_normalize_func is None: + return opt + prefix, opt = split_opt(opt) + return f"{prefix}{ctx.token_normalize_func(opt)}" + + +def split_arg_string(string: str) -> t.List[str]: + """Split an argument string as with :func:`shlex.split`, but don't + fail if the string is incomplete. Ignores a missing closing quote or + incomplete escape sequence and uses the partial token as-is. + + .. code-block:: python + + split_arg_string("example 'my file") + ["example", "my file"] + + split_arg_string("example my\\") + ["example", "my"] + + :param string: String to split. + """ + import shlex + + lex = shlex.shlex(string, posix=True) + lex.whitespace_split = True + lex.commenters = "" + out = [] + + try: + for token in lex: + out.append(token) + except ValueError: + # Raised when end-of-string is reached in an invalid state. Use + # the partial token as-is. The quote or escape character is in + # lex.state, not lex.token. + out.append(lex.token) + + return out + + +class Option: + def __init__( + self, + obj: "CoreOption", + opts: t.Sequence[str], + dest: t.Optional[str], + action: t.Optional[str] = None, + nargs: int = 1, + const: t.Optional[t.Any] = None, + ): + self._short_opts = [] + self._long_opts = [] + self.prefixes: t.Set[str] = set() + + for opt in opts: + prefix, value = split_opt(opt) + if not prefix: + raise ValueError(f"Invalid start character for option ({opt})") + self.prefixes.add(prefix[0]) + if len(prefix) == 1 and len(value) == 1: + self._short_opts.append(opt) + else: + self._long_opts.append(opt) + self.prefixes.add(prefix) + + if action is None: + action = "store" + + self.dest = dest + self.action = action + self.nargs = nargs + self.const = const + self.obj = obj + + @property + def takes_value(self) -> bool: + return self.action in ("store", "append") + + def process(self, value: t.Any, state: "ParsingState") -> None: + if self.action == "store": + state.opts[self.dest] = value # type: ignore + elif self.action == "store_const": + state.opts[self.dest] = self.const # type: ignore + elif self.action == "append": + state.opts.setdefault(self.dest, []).append(value) # type: ignore + elif self.action == "append_const": + state.opts.setdefault(self.dest, []).append(self.const) # type: ignore + elif self.action == "count": + state.opts[self.dest] = state.opts.get(self.dest, 0) + 1 # type: ignore + else: + raise ValueError(f"unknown action '{self.action}'") + state.order.append(self.obj) + + +class Argument: + def __init__(self, obj: "CoreArgument", dest: t.Optional[str], nargs: int = 1): + self.dest = dest + self.nargs = nargs + self.obj = obj + + def process( + self, + value: t.Union[t.Optional[str], t.Sequence[t.Optional[str]]], + state: "ParsingState", + ) -> None: + if self.nargs > 1: + assert value is not None + holes = sum(1 for x in value if x is None) + if holes == len(value): + value = None + elif holes != 0: + raise BadArgumentUsage( + _("Argument {name!r} takes {nargs} values.").format( + name=self.dest, nargs=self.nargs + ) + ) + + if self.nargs == -1 and self.obj.envvar is not None and value == (): + # Replace empty tuple with None so that a value from the + # environment may be tried. + value = None + + state.opts[self.dest] = value # type: ignore + state.order.append(self.obj) + + +class ParsingState: + def __init__(self, rargs: t.List[str]) -> None: + self.opts: t.Dict[str, t.Any] = {} + self.largs: t.List[str] = [] + self.rargs = rargs + self.order: t.List["CoreParameter"] = [] + + +class OptionParser: + """The option parser is an internal class that is ultimately used to + parse options and arguments. It's modelled after optparse and brings + a similar but vastly simplified API. It should generally not be used + directly as the high level Click classes wrap it for you. + + It's not nearly as extensible as optparse or argparse as it does not + implement features that are implemented on a higher level (such as + types or defaults). + + :param ctx: optionally the :class:`~click.Context` where this parser + should go with. + """ + + def __init__(self, ctx: t.Optional["Context"] = None) -> None: + #: The :class:`~click.Context` for this parser. This might be + #: `None` for some advanced use cases. + self.ctx = ctx + #: This controls how the parser deals with interspersed arguments. + #: If this is set to `False`, the parser will stop on the first + #: non-option. Click uses this to implement nested subcommands + #: safely. + self.allow_interspersed_args: bool = True + #: This tells the parser how to deal with unknown options. By + #: default it will error out (which is sensible), but there is a + #: second mode where it will ignore it and continue processing + #: after shifting all the unknown options into the resulting args. + self.ignore_unknown_options: bool = False + + if ctx is not None: + self.allow_interspersed_args = ctx.allow_interspersed_args + self.ignore_unknown_options = ctx.ignore_unknown_options + + self._short_opt: t.Dict[str, Option] = {} + self._long_opt: t.Dict[str, Option] = {} + self._opt_prefixes = {"-", "--"} + self._args: t.List[Argument] = [] + + def add_option( + self, + obj: "CoreOption", + opts: t.Sequence[str], + dest: t.Optional[str], + action: t.Optional[str] = None, + nargs: int = 1, + const: t.Optional[t.Any] = None, + ) -> None: + """Adds a new option named `dest` to the parser. The destination + is not inferred (unlike with optparse) and needs to be explicitly + provided. Action can be any of ``store``, ``store_const``, + ``append``, ``append_const`` or ``count``. + + The `obj` can be used to identify the option in the order list + that is returned from the parser. + """ + opts = [normalize_opt(opt, self.ctx) for opt in opts] + option = Option(obj, opts, dest, action=action, nargs=nargs, const=const) + self._opt_prefixes.update(option.prefixes) + for opt in option._short_opts: + self._short_opt[opt] = option + for opt in option._long_opts: + self._long_opt[opt] = option + + def add_argument( + self, obj: "CoreArgument", dest: t.Optional[str], nargs: int = 1 + ) -> None: + """Adds a positional argument named `dest` to the parser. + + The `obj` can be used to identify the option in the order list + that is returned from the parser. + """ + self._args.append(Argument(obj, dest=dest, nargs=nargs)) + + def parse_args( + self, args: t.List[str] + ) -> t.Tuple[t.Dict[str, t.Any], t.List[str], t.List["CoreParameter"]]: + """Parses positional arguments and returns ``(values, args, order)`` + for the parsed options and arguments as well as the leftover + arguments if there are any. The order is a list of objects as they + appear on the command line. If arguments appear multiple times they + will be memorized multiple times as well. + """ + state = ParsingState(args) + try: + self._process_args_for_options(state) + self._process_args_for_args(state) + except UsageError: + if self.ctx is None or not self.ctx.resilient_parsing: + raise + return state.opts, state.largs, state.order + + def _process_args_for_args(self, state: ParsingState) -> None: + pargs, args = _unpack_args( + state.largs + state.rargs, [x.nargs for x in self._args] + ) + + for idx, arg in enumerate(self._args): + arg.process(pargs[idx], state) + + state.largs = args + state.rargs = [] + + def _process_args_for_options(self, state: ParsingState) -> None: + while state.rargs: + arg = state.rargs.pop(0) + arglen = len(arg) + # Double dashes always handled explicitly regardless of what + # prefixes are valid. + if arg == "--": + return + elif arg[:1] in self._opt_prefixes and arglen > 1: + self._process_opts(arg, state) + elif self.allow_interspersed_args: + state.largs.append(arg) + else: + state.rargs.insert(0, arg) + return + + # Say this is the original argument list: + # [arg0, arg1, ..., arg(i-1), arg(i), arg(i+1), ..., arg(N-1)] + # ^ + # (we are about to process arg(i)). + # + # Then rargs is [arg(i), ..., arg(N-1)] and largs is a *subset* of + # [arg0, ..., arg(i-1)] (any options and their arguments will have + # been removed from largs). + # + # The while loop will usually consume 1 or more arguments per pass. + # If it consumes 1 (eg. arg is an option that takes no arguments), + # then after _process_arg() is done the situation is: + # + # largs = subset of [arg0, ..., arg(i)] + # rargs = [arg(i+1), ..., arg(N-1)] + # + # If allow_interspersed_args is false, largs will always be + # *empty* -- still a subset of [arg0, ..., arg(i-1)], but + # not a very interesting subset! + + def _match_long_opt( + self, opt: str, explicit_value: t.Optional[str], state: ParsingState + ) -> None: + if opt not in self._long_opt: + from difflib import get_close_matches + + possibilities = get_close_matches(opt, self._long_opt) + raise NoSuchOption(opt, possibilities=possibilities, ctx=self.ctx) + + option = self._long_opt[opt] + if option.takes_value: + # At this point it's safe to modify rargs by injecting the + # explicit value, because no exception is raised in this + # branch. This means that the inserted value will be fully + # consumed. + if explicit_value is not None: + state.rargs.insert(0, explicit_value) + + value = self._get_value_from_state(opt, option, state) + + elif explicit_value is not None: + raise BadOptionUsage( + opt, _("Option {name!r} does not take a value.").format(name=opt) + ) + + else: + value = None + + option.process(value, state) + + def _match_short_opt(self, arg: str, state: ParsingState) -> None: + stop = False + i = 1 + prefix = arg[0] + unknown_options = [] + + for ch in arg[1:]: + opt = normalize_opt(f"{prefix}{ch}", self.ctx) + option = self._short_opt.get(opt) + i += 1 + + if not option: + if self.ignore_unknown_options: + unknown_options.append(ch) + continue + raise NoSuchOption(opt, ctx=self.ctx) + if option.takes_value: + # Any characters left in arg? Pretend they're the + # next arg, and stop consuming characters of arg. + if i < len(arg): + state.rargs.insert(0, arg[i:]) + stop = True + + value = self._get_value_from_state(opt, option, state) + + else: + value = None + + option.process(value, state) + + if stop: + break + + # If we got any unknown options we recombine the string of the + # remaining options and re-attach the prefix, then report that + # to the state as new larg. This way there is basic combinatorics + # that can be achieved while still ignoring unknown arguments. + if self.ignore_unknown_options and unknown_options: + state.largs.append(f"{prefix}{''.join(unknown_options)}") + + def _get_value_from_state( + self, option_name: str, option: Option, state: ParsingState + ) -> t.Any: + nargs = option.nargs + + if len(state.rargs) < nargs: + if option.obj._flag_needs_value: + # Option allows omitting the value. + value = _flag_needs_value + else: + raise BadOptionUsage( + option_name, + ngettext( + "Option {name!r} requires an argument.", + "Option {name!r} requires {nargs} arguments.", + nargs, + ).format(name=option_name, nargs=nargs), + ) + elif nargs == 1: + next_rarg = state.rargs[0] + + if ( + option.obj._flag_needs_value + and isinstance(next_rarg, str) + and next_rarg[:1] in self._opt_prefixes + and len(next_rarg) > 1 + ): + # The next arg looks like the start of an option, don't + # use it as the value if omitting the value is allowed. + value = _flag_needs_value + else: + value = state.rargs.pop(0) + else: + value = tuple(state.rargs[:nargs]) + del state.rargs[:nargs] + + return value + + def _process_opts(self, arg: str, state: ParsingState) -> None: + explicit_value = None + # Long option handling happens in two parts. The first part is + # supporting explicitly attached values. In any case, we will try + # to long match the option first. + if "=" in arg: + long_opt, explicit_value = arg.split("=", 1) + else: + long_opt = arg + norm_long_opt = normalize_opt(long_opt, self.ctx) + + # At this point we will match the (assumed) long option through + # the long option matching code. Note that this allows options + # like "-foo" to be matched as long options. + try: + self._match_long_opt(norm_long_opt, explicit_value, state) + except NoSuchOption: + # At this point the long option matching failed, and we need + # to try with short options. However there is a special rule + # which says, that if we have a two character options prefix + # (applies to "--foo" for instance), we do not dispatch to the + # short option code and will instead raise the no option + # error. + if arg[:2] not in self._opt_prefixes: + self._match_short_opt(arg, state) + return + + if not self.ignore_unknown_options: + raise + + state.largs.append(arg) diff --git a/venv/lib/python3.12/site-packages/click/py.typed b/venv/lib/python3.12/site-packages/click/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/click/shell_completion.py b/venv/lib/python3.12/site-packages/click/shell_completion.py new file mode 100644 index 0000000..dc9e00b --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/shell_completion.py @@ -0,0 +1,596 @@ +import os +import re +import typing as t +from gettext import gettext as _ + +from .core import Argument +from .core import BaseCommand +from .core import Context +from .core import MultiCommand +from .core import Option +from .core import Parameter +from .core import ParameterSource +from .parser import split_arg_string +from .utils import echo + + +def shell_complete( + cli: BaseCommand, + ctx_args: t.MutableMapping[str, t.Any], + prog_name: str, + complete_var: str, + instruction: str, +) -> int: + """Perform shell completion for the given CLI program. + + :param cli: Command being called. + :param ctx_args: Extra arguments to pass to + ``cli.make_context``. + :param prog_name: Name of the executable in the shell. + :param complete_var: Name of the environment variable that holds + the completion instruction. + :param instruction: Value of ``complete_var`` with the completion + instruction and shell, in the form ``instruction_shell``. + :return: Status code to exit with. + """ + shell, _, instruction = instruction.partition("_") + comp_cls = get_completion_class(shell) + + if comp_cls is None: + return 1 + + comp = comp_cls(cli, ctx_args, prog_name, complete_var) + + if instruction == "source": + echo(comp.source()) + return 0 + + if instruction == "complete": + echo(comp.complete()) + return 0 + + return 1 + + +class CompletionItem: + """Represents a completion value and metadata about the value. The + default metadata is ``type`` to indicate special shell handling, + and ``help`` if a shell supports showing a help string next to the + value. + + Arbitrary parameters can be passed when creating the object, and + accessed using ``item.attr``. If an attribute wasn't passed, + accessing it returns ``None``. + + :param value: The completion suggestion. + :param type: Tells the shell script to provide special completion + support for the type. Click uses ``"dir"`` and ``"file"``. + :param help: String shown next to the value if supported. + :param kwargs: Arbitrary metadata. The built-in implementations + don't use this, but custom type completions paired with custom + shell support could use it. + """ + + __slots__ = ("value", "type", "help", "_info") + + def __init__( + self, + value: t.Any, + type: str = "plain", + help: t.Optional[str] = None, + **kwargs: t.Any, + ) -> None: + self.value: t.Any = value + self.type: str = type + self.help: t.Optional[str] = help + self._info = kwargs + + def __getattr__(self, name: str) -> t.Any: + return self._info.get(name) + + +# Only Bash >= 4.4 has the nosort option. +_SOURCE_BASH = """\ +%(complete_func)s() { + local IFS=$'\\n' + local response + + response=$(env COMP_WORDS="${COMP_WORDS[*]}" COMP_CWORD=$COMP_CWORD \ +%(complete_var)s=bash_complete $1) + + for completion in $response; do + IFS=',' read type value <<< "$completion" + + if [[ $type == 'dir' ]]; then + COMPREPLY=() + compopt -o dirnames + elif [[ $type == 'file' ]]; then + COMPREPLY=() + compopt -o default + elif [[ $type == 'plain' ]]; then + COMPREPLY+=($value) + fi + done + + return 0 +} + +%(complete_func)s_setup() { + complete -o nosort -F %(complete_func)s %(prog_name)s +} + +%(complete_func)s_setup; +""" + +_SOURCE_ZSH = """\ +#compdef %(prog_name)s + +%(complete_func)s() { + local -a completions + local -a completions_with_descriptions + local -a response + (( ! $+commands[%(prog_name)s] )) && return 1 + + response=("${(@f)$(env COMP_WORDS="${words[*]}" COMP_CWORD=$((CURRENT-1)) \ +%(complete_var)s=zsh_complete %(prog_name)s)}") + + for type key descr in ${response}; do + if [[ "$type" == "plain" ]]; then + if [[ "$descr" == "_" ]]; then + completions+=("$key") + else + completions_with_descriptions+=("$key":"$descr") + fi + elif [[ "$type" == "dir" ]]; then + _path_files -/ + elif [[ "$type" == "file" ]]; then + _path_files -f + fi + done + + if [ -n "$completions_with_descriptions" ]; then + _describe -V unsorted completions_with_descriptions -U + fi + + if [ -n "$completions" ]; then + compadd -U -V unsorted -a completions + fi +} + +if [[ $zsh_eval_context[-1] == loadautofunc ]]; then + # autoload from fpath, call function directly + %(complete_func)s "$@" +else + # eval/source/. command, register function for later + compdef %(complete_func)s %(prog_name)s +fi +""" + +_SOURCE_FISH = """\ +function %(complete_func)s; + set -l response (env %(complete_var)s=fish_complete COMP_WORDS=(commandline -cp) \ +COMP_CWORD=(commandline -t) %(prog_name)s); + + for completion in $response; + set -l metadata (string split "," $completion); + + if test $metadata[1] = "dir"; + __fish_complete_directories $metadata[2]; + else if test $metadata[1] = "file"; + __fish_complete_path $metadata[2]; + else if test $metadata[1] = "plain"; + echo $metadata[2]; + end; + end; +end; + +complete --no-files --command %(prog_name)s --arguments \ +"(%(complete_func)s)"; +""" + + +class ShellComplete: + """Base class for providing shell completion support. A subclass for + a given shell will override attributes and methods to implement the + completion instructions (``source`` and ``complete``). + + :param cli: Command being called. + :param prog_name: Name of the executable in the shell. + :param complete_var: Name of the environment variable that holds + the completion instruction. + + .. versionadded:: 8.0 + """ + + name: t.ClassVar[str] + """Name to register the shell as with :func:`add_completion_class`. + This is used in completion instructions (``{name}_source`` and + ``{name}_complete``). + """ + + source_template: t.ClassVar[str] + """Completion script template formatted by :meth:`source`. This must + be provided by subclasses. + """ + + def __init__( + self, + cli: BaseCommand, + ctx_args: t.MutableMapping[str, t.Any], + prog_name: str, + complete_var: str, + ) -> None: + self.cli = cli + self.ctx_args = ctx_args + self.prog_name = prog_name + self.complete_var = complete_var + + @property + def func_name(self) -> str: + """The name of the shell function defined by the completion + script. + """ + safe_name = re.sub(r"\W*", "", self.prog_name.replace("-", "_"), flags=re.ASCII) + return f"_{safe_name}_completion" + + def source_vars(self) -> t.Dict[str, t.Any]: + """Vars for formatting :attr:`source_template`. + + By default this provides ``complete_func``, ``complete_var``, + and ``prog_name``. + """ + return { + "complete_func": self.func_name, + "complete_var": self.complete_var, + "prog_name": self.prog_name, + } + + def source(self) -> str: + """Produce the shell script that defines the completion + function. By default this ``%``-style formats + :attr:`source_template` with the dict returned by + :meth:`source_vars`. + """ + return self.source_template % self.source_vars() + + def get_completion_args(self) -> t.Tuple[t.List[str], str]: + """Use the env vars defined by the shell script to return a + tuple of ``args, incomplete``. This must be implemented by + subclasses. + """ + raise NotImplementedError + + def get_completions( + self, args: t.List[str], incomplete: str + ) -> t.List[CompletionItem]: + """Determine the context and last complete command or parameter + from the complete args. Call that object's ``shell_complete`` + method to get the completions for the incomplete value. + + :param args: List of complete args before the incomplete value. + :param incomplete: Value being completed. May be empty. + """ + ctx = _resolve_context(self.cli, self.ctx_args, self.prog_name, args) + obj, incomplete = _resolve_incomplete(ctx, args, incomplete) + return obj.shell_complete(ctx, incomplete) + + def format_completion(self, item: CompletionItem) -> str: + """Format a completion item into the form recognized by the + shell script. This must be implemented by subclasses. + + :param item: Completion item to format. + """ + raise NotImplementedError + + def complete(self) -> str: + """Produce the completion data to send back to the shell. + + By default this calls :meth:`get_completion_args`, gets the + completions, then calls :meth:`format_completion` for each + completion. + """ + args, incomplete = self.get_completion_args() + completions = self.get_completions(args, incomplete) + out = [self.format_completion(item) for item in completions] + return "\n".join(out) + + +class BashComplete(ShellComplete): + """Shell completion for Bash.""" + + name = "bash" + source_template = _SOURCE_BASH + + @staticmethod + def _check_version() -> None: + import subprocess + + output = subprocess.run( + ["bash", "-c", 'echo "${BASH_VERSION}"'], stdout=subprocess.PIPE + ) + match = re.search(r"^(\d+)\.(\d+)\.\d+", output.stdout.decode()) + + if match is not None: + major, minor = match.groups() + + if major < "4" or major == "4" and minor < "4": + echo( + _( + "Shell completion is not supported for Bash" + " versions older than 4.4." + ), + err=True, + ) + else: + echo( + _("Couldn't detect Bash version, shell completion is not supported."), + err=True, + ) + + def source(self) -> str: + self._check_version() + return super().source() + + def get_completion_args(self) -> t.Tuple[t.List[str], str]: + cwords = split_arg_string(os.environ["COMP_WORDS"]) + cword = int(os.environ["COMP_CWORD"]) + args = cwords[1:cword] + + try: + incomplete = cwords[cword] + except IndexError: + incomplete = "" + + return args, incomplete + + def format_completion(self, item: CompletionItem) -> str: + return f"{item.type},{item.value}" + + +class ZshComplete(ShellComplete): + """Shell completion for Zsh.""" + + name = "zsh" + source_template = _SOURCE_ZSH + + def get_completion_args(self) -> t.Tuple[t.List[str], str]: + cwords = split_arg_string(os.environ["COMP_WORDS"]) + cword = int(os.environ["COMP_CWORD"]) + args = cwords[1:cword] + + try: + incomplete = cwords[cword] + except IndexError: + incomplete = "" + + return args, incomplete + + def format_completion(self, item: CompletionItem) -> str: + return f"{item.type}\n{item.value}\n{item.help if item.help else '_'}" + + +class FishComplete(ShellComplete): + """Shell completion for Fish.""" + + name = "fish" + source_template = _SOURCE_FISH + + def get_completion_args(self) -> t.Tuple[t.List[str], str]: + cwords = split_arg_string(os.environ["COMP_WORDS"]) + incomplete = os.environ["COMP_CWORD"] + args = cwords[1:] + + # Fish stores the partial word in both COMP_WORDS and + # COMP_CWORD, remove it from complete args. + if incomplete and args and args[-1] == incomplete: + args.pop() + + return args, incomplete + + def format_completion(self, item: CompletionItem) -> str: + if item.help: + return f"{item.type},{item.value}\t{item.help}" + + return f"{item.type},{item.value}" + + +ShellCompleteType = t.TypeVar("ShellCompleteType", bound=t.Type[ShellComplete]) + + +_available_shells: t.Dict[str, t.Type[ShellComplete]] = { + "bash": BashComplete, + "fish": FishComplete, + "zsh": ZshComplete, +} + + +def add_completion_class( + cls: ShellCompleteType, name: t.Optional[str] = None +) -> ShellCompleteType: + """Register a :class:`ShellComplete` subclass under the given name. + The name will be provided by the completion instruction environment + variable during completion. + + :param cls: The completion class that will handle completion for the + shell. + :param name: Name to register the class under. Defaults to the + class's ``name`` attribute. + """ + if name is None: + name = cls.name + + _available_shells[name] = cls + + return cls + + +def get_completion_class(shell: str) -> t.Optional[t.Type[ShellComplete]]: + """Look up a registered :class:`ShellComplete` subclass by the name + provided by the completion instruction environment variable. If the + name isn't registered, returns ``None``. + + :param shell: Name the class is registered under. + """ + return _available_shells.get(shell) + + +def _is_incomplete_argument(ctx: Context, param: Parameter) -> bool: + """Determine if the given parameter is an argument that can still + accept values. + + :param ctx: Invocation context for the command represented by the + parsed complete args. + :param param: Argument object being checked. + """ + if not isinstance(param, Argument): + return False + + assert param.name is not None + # Will be None if expose_value is False. + value = ctx.params.get(param.name) + return ( + param.nargs == -1 + or ctx.get_parameter_source(param.name) is not ParameterSource.COMMANDLINE + or ( + param.nargs > 1 + and isinstance(value, (tuple, list)) + and len(value) < param.nargs + ) + ) + + +def _start_of_option(ctx: Context, value: str) -> bool: + """Check if the value looks like the start of an option.""" + if not value: + return False + + c = value[0] + return c in ctx._opt_prefixes + + +def _is_incomplete_option(ctx: Context, args: t.List[str], param: Parameter) -> bool: + """Determine if the given parameter is an option that needs a value. + + :param args: List of complete args before the incomplete value. + :param param: Option object being checked. + """ + if not isinstance(param, Option): + return False + + if param.is_flag or param.count: + return False + + last_option = None + + for index, arg in enumerate(reversed(args)): + if index + 1 > param.nargs: + break + + if _start_of_option(ctx, arg): + last_option = arg + + return last_option is not None and last_option in param.opts + + +def _resolve_context( + cli: BaseCommand, + ctx_args: t.MutableMapping[str, t.Any], + prog_name: str, + args: t.List[str], +) -> Context: + """Produce the context hierarchy starting with the command and + traversing the complete arguments. This only follows the commands, + it doesn't trigger input prompts or callbacks. + + :param cli: Command being called. + :param prog_name: Name of the executable in the shell. + :param args: List of complete args before the incomplete value. + """ + ctx_args["resilient_parsing"] = True + ctx = cli.make_context(prog_name, args.copy(), **ctx_args) + args = ctx.protected_args + ctx.args + + while args: + command = ctx.command + + if isinstance(command, MultiCommand): + if not command.chain: + name, cmd, args = command.resolve_command(ctx, args) + + if cmd is None: + return ctx + + ctx = cmd.make_context(name, args, parent=ctx, resilient_parsing=True) + args = ctx.protected_args + ctx.args + else: + sub_ctx = ctx + + while args: + name, cmd, args = command.resolve_command(ctx, args) + + if cmd is None: + return ctx + + sub_ctx = cmd.make_context( + name, + args, + parent=ctx, + allow_extra_args=True, + allow_interspersed_args=False, + resilient_parsing=True, + ) + args = sub_ctx.args + + ctx = sub_ctx + args = [*sub_ctx.protected_args, *sub_ctx.args] + else: + break + + return ctx + + +def _resolve_incomplete( + ctx: Context, args: t.List[str], incomplete: str +) -> t.Tuple[t.Union[BaseCommand, Parameter], str]: + """Find the Click object that will handle the completion of the + incomplete value. Return the object and the incomplete value. + + :param ctx: Invocation context for the command represented by + the parsed complete args. + :param args: List of complete args before the incomplete value. + :param incomplete: Value being completed. May be empty. + """ + # Different shells treat an "=" between a long option name and + # value differently. Might keep the value joined, return the "=" + # as a separate item, or return the split name and value. Always + # split and discard the "=" to make completion easier. + if incomplete == "=": + incomplete = "" + elif "=" in incomplete and _start_of_option(ctx, incomplete): + name, _, incomplete = incomplete.partition("=") + args.append(name) + + # The "--" marker tells Click to stop treating values as options + # even if they start with the option character. If it hasn't been + # given and the incomplete arg looks like an option, the current + # command will provide option name completions. + if "--" not in args and _start_of_option(ctx, incomplete): + return ctx.command, incomplete + + params = ctx.command.get_params(ctx) + + # If the last complete arg is an option name with an incomplete + # value, the option will provide value completions. + for param in params: + if _is_incomplete_option(ctx, args, param): + return param, incomplete + + # It's not an option name or value. The first argument without a + # parsed value will provide value completions. + for param in params: + if _is_incomplete_argument(ctx, param): + return param, incomplete + + # There were no unparsed arguments, the command may be a group that + # will provide command name completions. + return ctx.command, incomplete diff --git a/venv/lib/python3.12/site-packages/click/termui.py b/venv/lib/python3.12/site-packages/click/termui.py new file mode 100644 index 0000000..db7a4b2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/termui.py @@ -0,0 +1,784 @@ +import inspect +import io +import itertools +import sys +import typing as t +from gettext import gettext as _ + +from ._compat import isatty +from ._compat import strip_ansi +from .exceptions import Abort +from .exceptions import UsageError +from .globals import resolve_color_default +from .types import Choice +from .types import convert_type +from .types import ParamType +from .utils import echo +from .utils import LazyFile + +if t.TYPE_CHECKING: + from ._termui_impl import ProgressBar + +V = t.TypeVar("V") + +# The prompt functions to use. The doc tools currently override these +# functions to customize how they work. +visible_prompt_func: t.Callable[[str], str] = input + +_ansi_colors = { + "black": 30, + "red": 31, + "green": 32, + "yellow": 33, + "blue": 34, + "magenta": 35, + "cyan": 36, + "white": 37, + "reset": 39, + "bright_black": 90, + "bright_red": 91, + "bright_green": 92, + "bright_yellow": 93, + "bright_blue": 94, + "bright_magenta": 95, + "bright_cyan": 96, + "bright_white": 97, +} +_ansi_reset_all = "\033[0m" + + +def hidden_prompt_func(prompt: str) -> str: + import getpass + + return getpass.getpass(prompt) + + +def _build_prompt( + text: str, + suffix: str, + show_default: bool = False, + default: t.Optional[t.Any] = None, + show_choices: bool = True, + type: t.Optional[ParamType] = None, +) -> str: + prompt = text + if type is not None and show_choices and isinstance(type, Choice): + prompt += f" ({', '.join(map(str, type.choices))})" + if default is not None and show_default: + prompt = f"{prompt} [{_format_default(default)}]" + return f"{prompt}{suffix}" + + +def _format_default(default: t.Any) -> t.Any: + if isinstance(default, (io.IOBase, LazyFile)) and hasattr(default, "name"): + return default.name + + return default + + +def prompt( + text: str, + default: t.Optional[t.Any] = None, + hide_input: bool = False, + confirmation_prompt: t.Union[bool, str] = False, + type: t.Optional[t.Union[ParamType, t.Any]] = None, + value_proc: t.Optional[t.Callable[[str], t.Any]] = None, + prompt_suffix: str = ": ", + show_default: bool = True, + err: bool = False, + show_choices: bool = True, +) -> t.Any: + """Prompts a user for input. This is a convenience function that can + be used to prompt a user for input later. + + If the user aborts the input by sending an interrupt signal, this + function will catch it and raise a :exc:`Abort` exception. + + :param text: the text to show for the prompt. + :param default: the default value to use if no input happens. If this + is not given it will prompt until it's aborted. + :param hide_input: if this is set to true then the input value will + be hidden. + :param confirmation_prompt: Prompt a second time to confirm the + value. Can be set to a string instead of ``True`` to customize + the message. + :param type: the type to use to check the value against. + :param value_proc: if this parameter is provided it's a function that + is invoked instead of the type conversion to + convert a value. + :param prompt_suffix: a suffix that should be added to the prompt. + :param show_default: shows or hides the default value in the prompt. + :param err: if set to true the file defaults to ``stderr`` instead of + ``stdout``, the same as with echo. + :param show_choices: Show or hide choices if the passed type is a Choice. + For example if type is a Choice of either day or week, + show_choices is true and text is "Group by" then the + prompt will be "Group by (day, week): ". + + .. versionadded:: 8.0 + ``confirmation_prompt`` can be a custom string. + + .. versionadded:: 7.0 + Added the ``show_choices`` parameter. + + .. versionadded:: 6.0 + Added unicode support for cmd.exe on Windows. + + .. versionadded:: 4.0 + Added the `err` parameter. + + """ + + def prompt_func(text: str) -> str: + f = hidden_prompt_func if hide_input else visible_prompt_func + try: + # Write the prompt separately so that we get nice + # coloring through colorama on Windows + echo(text.rstrip(" "), nl=False, err=err) + # Echo a space to stdout to work around an issue where + # readline causes backspace to clear the whole line. + return f(" ") + except (KeyboardInterrupt, EOFError): + # getpass doesn't print a newline if the user aborts input with ^C. + # Allegedly this behavior is inherited from getpass(3). + # A doc bug has been filed at https://bugs.python.org/issue24711 + if hide_input: + echo(None, err=err) + raise Abort() from None + + if value_proc is None: + value_proc = convert_type(type, default) + + prompt = _build_prompt( + text, prompt_suffix, show_default, default, show_choices, type + ) + + if confirmation_prompt: + if confirmation_prompt is True: + confirmation_prompt = _("Repeat for confirmation") + + confirmation_prompt = _build_prompt(confirmation_prompt, prompt_suffix) + + while True: + while True: + value = prompt_func(prompt) + if value: + break + elif default is not None: + value = default + break + try: + result = value_proc(value) + except UsageError as e: + if hide_input: + echo(_("Error: The value you entered was invalid."), err=err) + else: + echo(_("Error: {e.message}").format(e=e), err=err) # noqa: B306 + continue + if not confirmation_prompt: + return result + while True: + value2 = prompt_func(confirmation_prompt) + is_empty = not value and not value2 + if value2 or is_empty: + break + if value == value2: + return result + echo(_("Error: The two entered values do not match."), err=err) + + +def confirm( + text: str, + default: t.Optional[bool] = False, + abort: bool = False, + prompt_suffix: str = ": ", + show_default: bool = True, + err: bool = False, +) -> bool: + """Prompts for confirmation (yes/no question). + + If the user aborts the input by sending a interrupt signal this + function will catch it and raise a :exc:`Abort` exception. + + :param text: the question to ask. + :param default: The default value to use when no input is given. If + ``None``, repeat until input is given. + :param abort: if this is set to `True` a negative answer aborts the + exception by raising :exc:`Abort`. + :param prompt_suffix: a suffix that should be added to the prompt. + :param show_default: shows or hides the default value in the prompt. + :param err: if set to true the file defaults to ``stderr`` instead of + ``stdout``, the same as with echo. + + .. versionchanged:: 8.0 + Repeat until input is given if ``default`` is ``None``. + + .. versionadded:: 4.0 + Added the ``err`` parameter. + """ + prompt = _build_prompt( + text, + prompt_suffix, + show_default, + "y/n" if default is None else ("Y/n" if default else "y/N"), + ) + + while True: + try: + # Write the prompt separately so that we get nice + # coloring through colorama on Windows + echo(prompt.rstrip(" "), nl=False, err=err) + # Echo a space to stdout to work around an issue where + # readline causes backspace to clear the whole line. + value = visible_prompt_func(" ").lower().strip() + except (KeyboardInterrupt, EOFError): + raise Abort() from None + if value in ("y", "yes"): + rv = True + elif value in ("n", "no"): + rv = False + elif default is not None and value == "": + rv = default + else: + echo(_("Error: invalid input"), err=err) + continue + break + if abort and not rv: + raise Abort() + return rv + + +def echo_via_pager( + text_or_generator: t.Union[t.Iterable[str], t.Callable[[], t.Iterable[str]], str], + color: t.Optional[bool] = None, +) -> None: + """This function takes a text and shows it via an environment specific + pager on stdout. + + .. versionchanged:: 3.0 + Added the `color` flag. + + :param text_or_generator: the text to page, or alternatively, a + generator emitting the text to page. + :param color: controls if the pager supports ANSI colors or not. The + default is autodetection. + """ + color = resolve_color_default(color) + + if inspect.isgeneratorfunction(text_or_generator): + i = t.cast(t.Callable[[], t.Iterable[str]], text_or_generator)() + elif isinstance(text_or_generator, str): + i = [text_or_generator] + else: + i = iter(t.cast(t.Iterable[str], text_or_generator)) + + # convert every element of i to a text type if necessary + text_generator = (el if isinstance(el, str) else str(el) for el in i) + + from ._termui_impl import pager + + return pager(itertools.chain(text_generator, "\n"), color) + + +def progressbar( + iterable: t.Optional[t.Iterable[V]] = None, + length: t.Optional[int] = None, + label: t.Optional[str] = None, + show_eta: bool = True, + show_percent: t.Optional[bool] = None, + show_pos: bool = False, + item_show_func: t.Optional[t.Callable[[t.Optional[V]], t.Optional[str]]] = None, + fill_char: str = "#", + empty_char: str = "-", + bar_template: str = "%(label)s [%(bar)s] %(info)s", + info_sep: str = " ", + width: int = 36, + file: t.Optional[t.TextIO] = None, + color: t.Optional[bool] = None, + update_min_steps: int = 1, +) -> "ProgressBar[V]": + """This function creates an iterable context manager that can be used + to iterate over something while showing a progress bar. It will + either iterate over the `iterable` or `length` items (that are counted + up). While iteration happens, this function will print a rendered + progress bar to the given `file` (defaults to stdout) and will attempt + to calculate remaining time and more. By default, this progress bar + will not be rendered if the file is not a terminal. + + The context manager creates the progress bar. When the context + manager is entered the progress bar is already created. With every + iteration over the progress bar, the iterable passed to the bar is + advanced and the bar is updated. When the context manager exits, + a newline is printed and the progress bar is finalized on screen. + + Note: The progress bar is currently designed for use cases where the + total progress can be expected to take at least several seconds. + Because of this, the ProgressBar class object won't display + progress that is considered too fast, and progress where the time + between steps is less than a second. + + No printing must happen or the progress bar will be unintentionally + destroyed. + + Example usage:: + + with progressbar(items) as bar: + for item in bar: + do_something_with(item) + + Alternatively, if no iterable is specified, one can manually update the + progress bar through the `update()` method instead of directly + iterating over the progress bar. The update method accepts the number + of steps to increment the bar with:: + + with progressbar(length=chunks.total_bytes) as bar: + for chunk in chunks: + process_chunk(chunk) + bar.update(chunks.bytes) + + The ``update()`` method also takes an optional value specifying the + ``current_item`` at the new position. This is useful when used + together with ``item_show_func`` to customize the output for each + manual step:: + + with click.progressbar( + length=total_size, + label='Unzipping archive', + item_show_func=lambda a: a.filename + ) as bar: + for archive in zip_file: + archive.extract() + bar.update(archive.size, archive) + + :param iterable: an iterable to iterate over. If not provided the length + is required. + :param length: the number of items to iterate over. By default the + progressbar will attempt to ask the iterator about its + length, which might or might not work. If an iterable is + also provided this parameter can be used to override the + length. If an iterable is not provided the progress bar + will iterate over a range of that length. + :param label: the label to show next to the progress bar. + :param show_eta: enables or disables the estimated time display. This is + automatically disabled if the length cannot be + determined. + :param show_percent: enables or disables the percentage display. The + default is `True` if the iterable has a length or + `False` if not. + :param show_pos: enables or disables the absolute position display. The + default is `False`. + :param item_show_func: A function called with the current item which + can return a string to show next to the progress bar. If the + function returns ``None`` nothing is shown. The current item can + be ``None``, such as when entering and exiting the bar. + :param fill_char: the character to use to show the filled part of the + progress bar. + :param empty_char: the character to use to show the non-filled part of + the progress bar. + :param bar_template: the format string to use as template for the bar. + The parameters in it are ``label`` for the label, + ``bar`` for the progress bar and ``info`` for the + info section. + :param info_sep: the separator between multiple info items (eta etc.) + :param width: the width of the progress bar in characters, 0 means full + terminal width + :param file: The file to write to. If this is not a terminal then + only the label is printed. + :param color: controls if the terminal supports ANSI colors or not. The + default is autodetection. This is only needed if ANSI + codes are included anywhere in the progress bar output + which is not the case by default. + :param update_min_steps: Render only when this many updates have + completed. This allows tuning for very fast iterators. + + .. versionchanged:: 8.0 + Output is shown even if execution time is less than 0.5 seconds. + + .. versionchanged:: 8.0 + ``item_show_func`` shows the current item, not the previous one. + + .. versionchanged:: 8.0 + Labels are echoed if the output is not a TTY. Reverts a change + in 7.0 that removed all output. + + .. versionadded:: 8.0 + Added the ``update_min_steps`` parameter. + + .. versionchanged:: 4.0 + Added the ``color`` parameter. Added the ``update`` method to + the object. + + .. versionadded:: 2.0 + """ + from ._termui_impl import ProgressBar + + color = resolve_color_default(color) + return ProgressBar( + iterable=iterable, + length=length, + show_eta=show_eta, + show_percent=show_percent, + show_pos=show_pos, + item_show_func=item_show_func, + fill_char=fill_char, + empty_char=empty_char, + bar_template=bar_template, + info_sep=info_sep, + file=file, + label=label, + width=width, + color=color, + update_min_steps=update_min_steps, + ) + + +def clear() -> None: + """Clears the terminal screen. This will have the effect of clearing + the whole visible space of the terminal and moving the cursor to the + top left. This does not do anything if not connected to a terminal. + + .. versionadded:: 2.0 + """ + if not isatty(sys.stdout): + return + + # ANSI escape \033[2J clears the screen, \033[1;1H moves the cursor + echo("\033[2J\033[1;1H", nl=False) + + +def _interpret_color( + color: t.Union[int, t.Tuple[int, int, int], str], offset: int = 0 +) -> str: + if isinstance(color, int): + return f"{38 + offset};5;{color:d}" + + if isinstance(color, (tuple, list)): + r, g, b = color + return f"{38 + offset};2;{r:d};{g:d};{b:d}" + + return str(_ansi_colors[color] + offset) + + +def style( + text: t.Any, + fg: t.Optional[t.Union[int, t.Tuple[int, int, int], str]] = None, + bg: t.Optional[t.Union[int, t.Tuple[int, int, int], str]] = None, + bold: t.Optional[bool] = None, + dim: t.Optional[bool] = None, + underline: t.Optional[bool] = None, + overline: t.Optional[bool] = None, + italic: t.Optional[bool] = None, + blink: t.Optional[bool] = None, + reverse: t.Optional[bool] = None, + strikethrough: t.Optional[bool] = None, + reset: bool = True, +) -> str: + """Styles a text with ANSI styles and returns the new string. By + default the styling is self contained which means that at the end + of the string a reset code is issued. This can be prevented by + passing ``reset=False``. + + Examples:: + + click.echo(click.style('Hello World!', fg='green')) + click.echo(click.style('ATTENTION!', blink=True)) + click.echo(click.style('Some things', reverse=True, fg='cyan')) + click.echo(click.style('More colors', fg=(255, 12, 128), bg=117)) + + Supported color names: + + * ``black`` (might be a gray) + * ``red`` + * ``green`` + * ``yellow`` (might be an orange) + * ``blue`` + * ``magenta`` + * ``cyan`` + * ``white`` (might be light gray) + * ``bright_black`` + * ``bright_red`` + * ``bright_green`` + * ``bright_yellow`` + * ``bright_blue`` + * ``bright_magenta`` + * ``bright_cyan`` + * ``bright_white`` + * ``reset`` (reset the color code only) + + If the terminal supports it, color may also be specified as: + + - An integer in the interval [0, 255]. The terminal must support + 8-bit/256-color mode. + - An RGB tuple of three integers in [0, 255]. The terminal must + support 24-bit/true-color mode. + + See https://en.wikipedia.org/wiki/ANSI_color and + https://gist.github.com/XVilka/8346728 for more information. + + :param text: the string to style with ansi codes. + :param fg: if provided this will become the foreground color. + :param bg: if provided this will become the background color. + :param bold: if provided this will enable or disable bold mode. + :param dim: if provided this will enable or disable dim mode. This is + badly supported. + :param underline: if provided this will enable or disable underline. + :param overline: if provided this will enable or disable overline. + :param italic: if provided this will enable or disable italic. + :param blink: if provided this will enable or disable blinking. + :param reverse: if provided this will enable or disable inverse + rendering (foreground becomes background and the + other way round). + :param strikethrough: if provided this will enable or disable + striking through text. + :param reset: by default a reset-all code is added at the end of the + string which means that styles do not carry over. This + can be disabled to compose styles. + + .. versionchanged:: 8.0 + A non-string ``message`` is converted to a string. + + .. versionchanged:: 8.0 + Added support for 256 and RGB color codes. + + .. versionchanged:: 8.0 + Added the ``strikethrough``, ``italic``, and ``overline`` + parameters. + + .. versionchanged:: 7.0 + Added support for bright colors. + + .. versionadded:: 2.0 + """ + if not isinstance(text, str): + text = str(text) + + bits = [] + + if fg: + try: + bits.append(f"\033[{_interpret_color(fg)}m") + except KeyError: + raise TypeError(f"Unknown color {fg!r}") from None + + if bg: + try: + bits.append(f"\033[{_interpret_color(bg, 10)}m") + except KeyError: + raise TypeError(f"Unknown color {bg!r}") from None + + if bold is not None: + bits.append(f"\033[{1 if bold else 22}m") + if dim is not None: + bits.append(f"\033[{2 if dim else 22}m") + if underline is not None: + bits.append(f"\033[{4 if underline else 24}m") + if overline is not None: + bits.append(f"\033[{53 if overline else 55}m") + if italic is not None: + bits.append(f"\033[{3 if italic else 23}m") + if blink is not None: + bits.append(f"\033[{5 if blink else 25}m") + if reverse is not None: + bits.append(f"\033[{7 if reverse else 27}m") + if strikethrough is not None: + bits.append(f"\033[{9 if strikethrough else 29}m") + bits.append(text) + if reset: + bits.append(_ansi_reset_all) + return "".join(bits) + + +def unstyle(text: str) -> str: + """Removes ANSI styling information from a string. Usually it's not + necessary to use this function as Click's echo function will + automatically remove styling if necessary. + + .. versionadded:: 2.0 + + :param text: the text to remove style information from. + """ + return strip_ansi(text) + + +def secho( + message: t.Optional[t.Any] = None, + file: t.Optional[t.IO[t.AnyStr]] = None, + nl: bool = True, + err: bool = False, + color: t.Optional[bool] = None, + **styles: t.Any, +) -> None: + """This function combines :func:`echo` and :func:`style` into one + call. As such the following two calls are the same:: + + click.secho('Hello World!', fg='green') + click.echo(click.style('Hello World!', fg='green')) + + All keyword arguments are forwarded to the underlying functions + depending on which one they go with. + + Non-string types will be converted to :class:`str`. However, + :class:`bytes` are passed directly to :meth:`echo` without applying + style. If you want to style bytes that represent text, call + :meth:`bytes.decode` first. + + .. versionchanged:: 8.0 + A non-string ``message`` is converted to a string. Bytes are + passed through without style applied. + + .. versionadded:: 2.0 + """ + if message is not None and not isinstance(message, (bytes, bytearray)): + message = style(message, **styles) + + return echo(message, file=file, nl=nl, err=err, color=color) + + +def edit( + text: t.Optional[t.AnyStr] = None, + editor: t.Optional[str] = None, + env: t.Optional[t.Mapping[str, str]] = None, + require_save: bool = True, + extension: str = ".txt", + filename: t.Optional[str] = None, +) -> t.Optional[t.AnyStr]: + r"""Edits the given text in the defined editor. If an editor is given + (should be the full path to the executable but the regular operating + system search path is used for finding the executable) it overrides + the detected editor. Optionally, some environment variables can be + used. If the editor is closed without changes, `None` is returned. In + case a file is edited directly the return value is always `None` and + `require_save` and `extension` are ignored. + + If the editor cannot be opened a :exc:`UsageError` is raised. + + Note for Windows: to simplify cross-platform usage, the newlines are + automatically converted from POSIX to Windows and vice versa. As such, + the message here will have ``\n`` as newline markers. + + :param text: the text to edit. + :param editor: optionally the editor to use. Defaults to automatic + detection. + :param env: environment variables to forward to the editor. + :param require_save: if this is true, then not saving in the editor + will make the return value become `None`. + :param extension: the extension to tell the editor about. This defaults + to `.txt` but changing this might change syntax + highlighting. + :param filename: if provided it will edit this file instead of the + provided text contents. It will not use a temporary + file as an indirection in that case. + """ + from ._termui_impl import Editor + + ed = Editor(editor=editor, env=env, require_save=require_save, extension=extension) + + if filename is None: + return ed.edit(text) + + ed.edit_file(filename) + return None + + +def launch(url: str, wait: bool = False, locate: bool = False) -> int: + """This function launches the given URL (or filename) in the default + viewer application for this file type. If this is an executable, it + might launch the executable in a new session. The return value is + the exit code of the launched application. Usually, ``0`` indicates + success. + + Examples:: + + click.launch('https://click.palletsprojects.com/') + click.launch('/my/downloaded/file', locate=True) + + .. versionadded:: 2.0 + + :param url: URL or filename of the thing to launch. + :param wait: Wait for the program to exit before returning. This + only works if the launched program blocks. In particular, + ``xdg-open`` on Linux does not block. + :param locate: if this is set to `True` then instead of launching the + application associated with the URL it will attempt to + launch a file manager with the file located. This + might have weird effects if the URL does not point to + the filesystem. + """ + from ._termui_impl import open_url + + return open_url(url, wait=wait, locate=locate) + + +# If this is provided, getchar() calls into this instead. This is used +# for unittesting purposes. +_getchar: t.Optional[t.Callable[[bool], str]] = None + + +def getchar(echo: bool = False) -> str: + """Fetches a single character from the terminal and returns it. This + will always return a unicode character and under certain rare + circumstances this might return more than one character. The + situations which more than one character is returned is when for + whatever reason multiple characters end up in the terminal buffer or + standard input was not actually a terminal. + + Note that this will always read from the terminal, even if something + is piped into the standard input. + + Note for Windows: in rare cases when typing non-ASCII characters, this + function might wait for a second character and then return both at once. + This is because certain Unicode characters look like special-key markers. + + .. versionadded:: 2.0 + + :param echo: if set to `True`, the character read will also show up on + the terminal. The default is to not show it. + """ + global _getchar + + if _getchar is None: + from ._termui_impl import getchar as f + + _getchar = f + + return _getchar(echo) + + +def raw_terminal() -> t.ContextManager[int]: + from ._termui_impl import raw_terminal as f + + return f() + + +def pause(info: t.Optional[str] = None, err: bool = False) -> None: + """This command stops execution and waits for the user to press any + key to continue. This is similar to the Windows batch "pause" + command. If the program is not run through a terminal, this command + will instead do nothing. + + .. versionadded:: 2.0 + + .. versionadded:: 4.0 + Added the `err` parameter. + + :param info: The message to print before pausing. Defaults to + ``"Press any key to continue..."``. + :param err: if set to message goes to ``stderr`` instead of + ``stdout``, the same as with echo. + """ + if not isatty(sys.stdin) or not isatty(sys.stdout): + return + + if info is None: + info = _("Press any key to continue...") + + try: + if info: + echo(info, nl=False, err=err) + try: + getchar() + except (KeyboardInterrupt, EOFError): + pass + finally: + if info: + echo(err=err) diff --git a/venv/lib/python3.12/site-packages/click/testing.py b/venv/lib/python3.12/site-packages/click/testing.py new file mode 100644 index 0000000..e0df0d2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/testing.py @@ -0,0 +1,479 @@ +import contextlib +import io +import os +import shlex +import shutil +import sys +import tempfile +import typing as t +from types import TracebackType + +from . import formatting +from . import termui +from . import utils +from ._compat import _find_binary_reader + +if t.TYPE_CHECKING: + from .core import BaseCommand + + +class EchoingStdin: + def __init__(self, input: t.BinaryIO, output: t.BinaryIO) -> None: + self._input = input + self._output = output + self._paused = False + + def __getattr__(self, x: str) -> t.Any: + return getattr(self._input, x) + + def _echo(self, rv: bytes) -> bytes: + if not self._paused: + self._output.write(rv) + + return rv + + def read(self, n: int = -1) -> bytes: + return self._echo(self._input.read(n)) + + def read1(self, n: int = -1) -> bytes: + return self._echo(self._input.read1(n)) # type: ignore + + def readline(self, n: int = -1) -> bytes: + return self._echo(self._input.readline(n)) + + def readlines(self) -> t.List[bytes]: + return [self._echo(x) for x in self._input.readlines()] + + def __iter__(self) -> t.Iterator[bytes]: + return iter(self._echo(x) for x in self._input) + + def __repr__(self) -> str: + return repr(self._input) + + +@contextlib.contextmanager +def _pause_echo(stream: t.Optional[EchoingStdin]) -> t.Iterator[None]: + if stream is None: + yield + else: + stream._paused = True + yield + stream._paused = False + + +class _NamedTextIOWrapper(io.TextIOWrapper): + def __init__( + self, buffer: t.BinaryIO, name: str, mode: str, **kwargs: t.Any + ) -> None: + super().__init__(buffer, **kwargs) + self._name = name + self._mode = mode + + @property + def name(self) -> str: + return self._name + + @property + def mode(self) -> str: + return self._mode + + +def make_input_stream( + input: t.Optional[t.Union[str, bytes, t.IO[t.Any]]], charset: str +) -> t.BinaryIO: + # Is already an input stream. + if hasattr(input, "read"): + rv = _find_binary_reader(t.cast(t.IO[t.Any], input)) + + if rv is not None: + return rv + + raise TypeError("Could not find binary reader for input stream.") + + if input is None: + input = b"" + elif isinstance(input, str): + input = input.encode(charset) + + return io.BytesIO(input) + + +class Result: + """Holds the captured result of an invoked CLI script.""" + + def __init__( + self, + runner: "CliRunner", + stdout_bytes: bytes, + stderr_bytes: t.Optional[bytes], + return_value: t.Any, + exit_code: int, + exception: t.Optional[BaseException], + exc_info: t.Optional[ + t.Tuple[t.Type[BaseException], BaseException, TracebackType] + ] = None, + ): + #: The runner that created the result + self.runner = runner + #: The standard output as bytes. + self.stdout_bytes = stdout_bytes + #: The standard error as bytes, or None if not available + self.stderr_bytes = stderr_bytes + #: The value returned from the invoked command. + #: + #: .. versionadded:: 8.0 + self.return_value = return_value + #: The exit code as integer. + self.exit_code = exit_code + #: The exception that happened if one did. + self.exception = exception + #: The traceback + self.exc_info = exc_info + + @property + def output(self) -> str: + """The (standard) output as unicode string.""" + return self.stdout + + @property + def stdout(self) -> str: + """The standard output as unicode string.""" + return self.stdout_bytes.decode(self.runner.charset, "replace").replace( + "\r\n", "\n" + ) + + @property + def stderr(self) -> str: + """The standard error as unicode string.""" + if self.stderr_bytes is None: + raise ValueError("stderr not separately captured") + return self.stderr_bytes.decode(self.runner.charset, "replace").replace( + "\r\n", "\n" + ) + + def __repr__(self) -> str: + exc_str = repr(self.exception) if self.exception else "okay" + return f"<{type(self).__name__} {exc_str}>" + + +class CliRunner: + """The CLI runner provides functionality to invoke a Click command line + script for unittesting purposes in a isolated environment. This only + works in single-threaded systems without any concurrency as it changes the + global interpreter state. + + :param charset: the character set for the input and output data. + :param env: a dictionary with environment variables for overriding. + :param echo_stdin: if this is set to `True`, then reading from stdin writes + to stdout. This is useful for showing examples in + some circumstances. Note that regular prompts + will automatically echo the input. + :param mix_stderr: if this is set to `False`, then stdout and stderr are + preserved as independent streams. This is useful for + Unix-philosophy apps that have predictable stdout and + noisy stderr, such that each may be measured + independently + """ + + def __init__( + self, + charset: str = "utf-8", + env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, + echo_stdin: bool = False, + mix_stderr: bool = True, + ) -> None: + self.charset = charset + self.env: t.Mapping[str, t.Optional[str]] = env or {} + self.echo_stdin = echo_stdin + self.mix_stderr = mix_stderr + + def get_default_prog_name(self, cli: "BaseCommand") -> str: + """Given a command object it will return the default program name + for it. The default is the `name` attribute or ``"root"`` if not + set. + """ + return cli.name or "root" + + def make_env( + self, overrides: t.Optional[t.Mapping[str, t.Optional[str]]] = None + ) -> t.Mapping[str, t.Optional[str]]: + """Returns the environment overrides for invoking a script.""" + rv = dict(self.env) + if overrides: + rv.update(overrides) + return rv + + @contextlib.contextmanager + def isolation( + self, + input: t.Optional[t.Union[str, bytes, t.IO[t.Any]]] = None, + env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, + color: bool = False, + ) -> t.Iterator[t.Tuple[io.BytesIO, t.Optional[io.BytesIO]]]: + """A context manager that sets up the isolation for invoking of a + command line tool. This sets up stdin with the given input data + and `os.environ` with the overrides from the given dictionary. + This also rebinds some internals in Click to be mocked (like the + prompt functionality). + + This is automatically done in the :meth:`invoke` method. + + :param input: the input stream to put into sys.stdin. + :param env: the environment overrides as dictionary. + :param color: whether the output should contain color codes. The + application can still override this explicitly. + + .. versionchanged:: 8.0 + ``stderr`` is opened with ``errors="backslashreplace"`` + instead of the default ``"strict"``. + + .. versionchanged:: 4.0 + Added the ``color`` parameter. + """ + bytes_input = make_input_stream(input, self.charset) + echo_input = None + + old_stdin = sys.stdin + old_stdout = sys.stdout + old_stderr = sys.stderr + old_forced_width = formatting.FORCED_WIDTH + formatting.FORCED_WIDTH = 80 + + env = self.make_env(env) + + bytes_output = io.BytesIO() + + if self.echo_stdin: + bytes_input = echo_input = t.cast( + t.BinaryIO, EchoingStdin(bytes_input, bytes_output) + ) + + sys.stdin = text_input = _NamedTextIOWrapper( + bytes_input, encoding=self.charset, name="", mode="r" + ) + + if self.echo_stdin: + # Force unbuffered reads, otherwise TextIOWrapper reads a + # large chunk which is echoed early. + text_input._CHUNK_SIZE = 1 # type: ignore + + sys.stdout = _NamedTextIOWrapper( + bytes_output, encoding=self.charset, name="", mode="w" + ) + + bytes_error = None + if self.mix_stderr: + sys.stderr = sys.stdout + else: + bytes_error = io.BytesIO() + sys.stderr = _NamedTextIOWrapper( + bytes_error, + encoding=self.charset, + name="", + mode="w", + errors="backslashreplace", + ) + + @_pause_echo(echo_input) # type: ignore + def visible_input(prompt: t.Optional[str] = None) -> str: + sys.stdout.write(prompt or "") + val = text_input.readline().rstrip("\r\n") + sys.stdout.write(f"{val}\n") + sys.stdout.flush() + return val + + @_pause_echo(echo_input) # type: ignore + def hidden_input(prompt: t.Optional[str] = None) -> str: + sys.stdout.write(f"{prompt or ''}\n") + sys.stdout.flush() + return text_input.readline().rstrip("\r\n") + + @_pause_echo(echo_input) # type: ignore + def _getchar(echo: bool) -> str: + char = sys.stdin.read(1) + + if echo: + sys.stdout.write(char) + + sys.stdout.flush() + return char + + default_color = color + + def should_strip_ansi( + stream: t.Optional[t.IO[t.Any]] = None, color: t.Optional[bool] = None + ) -> bool: + if color is None: + return not default_color + return not color + + old_visible_prompt_func = termui.visible_prompt_func + old_hidden_prompt_func = termui.hidden_prompt_func + old__getchar_func = termui._getchar + old_should_strip_ansi = utils.should_strip_ansi # type: ignore + termui.visible_prompt_func = visible_input + termui.hidden_prompt_func = hidden_input + termui._getchar = _getchar + utils.should_strip_ansi = should_strip_ansi # type: ignore + + old_env = {} + try: + for key, value in env.items(): + old_env[key] = os.environ.get(key) + if value is None: + try: + del os.environ[key] + except Exception: + pass + else: + os.environ[key] = value + yield (bytes_output, bytes_error) + finally: + for key, value in old_env.items(): + if value is None: + try: + del os.environ[key] + except Exception: + pass + else: + os.environ[key] = value + sys.stdout = old_stdout + sys.stderr = old_stderr + sys.stdin = old_stdin + termui.visible_prompt_func = old_visible_prompt_func + termui.hidden_prompt_func = old_hidden_prompt_func + termui._getchar = old__getchar_func + utils.should_strip_ansi = old_should_strip_ansi # type: ignore + formatting.FORCED_WIDTH = old_forced_width + + def invoke( + self, + cli: "BaseCommand", + args: t.Optional[t.Union[str, t.Sequence[str]]] = None, + input: t.Optional[t.Union[str, bytes, t.IO[t.Any]]] = None, + env: t.Optional[t.Mapping[str, t.Optional[str]]] = None, + catch_exceptions: bool = True, + color: bool = False, + **extra: t.Any, + ) -> Result: + """Invokes a command in an isolated environment. The arguments are + forwarded directly to the command line script, the `extra` keyword + arguments are passed to the :meth:`~clickpkg.Command.main` function of + the command. + + This returns a :class:`Result` object. + + :param cli: the command to invoke + :param args: the arguments to invoke. It may be given as an iterable + or a string. When given as string it will be interpreted + as a Unix shell command. More details at + :func:`shlex.split`. + :param input: the input data for `sys.stdin`. + :param env: the environment overrides. + :param catch_exceptions: Whether to catch any other exceptions than + ``SystemExit``. + :param extra: the keyword arguments to pass to :meth:`main`. + :param color: whether the output should contain color codes. The + application can still override this explicitly. + + .. versionchanged:: 8.0 + The result object has the ``return_value`` attribute with + the value returned from the invoked command. + + .. versionchanged:: 4.0 + Added the ``color`` parameter. + + .. versionchanged:: 3.0 + Added the ``catch_exceptions`` parameter. + + .. versionchanged:: 3.0 + The result object has the ``exc_info`` attribute with the + traceback if available. + """ + exc_info = None + with self.isolation(input=input, env=env, color=color) as outstreams: + return_value = None + exception: t.Optional[BaseException] = None + exit_code = 0 + + if isinstance(args, str): + args = shlex.split(args) + + try: + prog_name = extra.pop("prog_name") + except KeyError: + prog_name = self.get_default_prog_name(cli) + + try: + return_value = cli.main(args=args or (), prog_name=prog_name, **extra) + except SystemExit as e: + exc_info = sys.exc_info() + e_code = t.cast(t.Optional[t.Union[int, t.Any]], e.code) + + if e_code is None: + e_code = 0 + + if e_code != 0: + exception = e + + if not isinstance(e_code, int): + sys.stdout.write(str(e_code)) + sys.stdout.write("\n") + e_code = 1 + + exit_code = e_code + + except Exception as e: + if not catch_exceptions: + raise + exception = e + exit_code = 1 + exc_info = sys.exc_info() + finally: + sys.stdout.flush() + stdout = outstreams[0].getvalue() + if self.mix_stderr: + stderr = None + else: + stderr = outstreams[1].getvalue() # type: ignore + + return Result( + runner=self, + stdout_bytes=stdout, + stderr_bytes=stderr, + return_value=return_value, + exit_code=exit_code, + exception=exception, + exc_info=exc_info, # type: ignore + ) + + @contextlib.contextmanager + def isolated_filesystem( + self, temp_dir: t.Optional[t.Union[str, "os.PathLike[str]"]] = None + ) -> t.Iterator[str]: + """A context manager that creates a temporary directory and + changes the current working directory to it. This isolates tests + that affect the contents of the CWD to prevent them from + interfering with each other. + + :param temp_dir: Create the temporary directory under this + directory. If given, the created directory is not removed + when exiting. + + .. versionchanged:: 8.0 + Added the ``temp_dir`` parameter. + """ + cwd = os.getcwd() + dt = tempfile.mkdtemp(dir=temp_dir) + os.chdir(dt) + + try: + yield dt + finally: + os.chdir(cwd) + + if temp_dir is None: + try: + shutil.rmtree(dt) + except OSError: # noqa: B014 + pass diff --git a/venv/lib/python3.12/site-packages/click/types.py b/venv/lib/python3.12/site-packages/click/types.py new file mode 100644 index 0000000..2b1d179 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/types.py @@ -0,0 +1,1089 @@ +import os +import stat +import sys +import typing as t +from datetime import datetime +from gettext import gettext as _ +from gettext import ngettext + +from ._compat import _get_argv_encoding +from ._compat import open_stream +from .exceptions import BadParameter +from .utils import format_filename +from .utils import LazyFile +from .utils import safecall + +if t.TYPE_CHECKING: + import typing_extensions as te + from .core import Context + from .core import Parameter + from .shell_completion import CompletionItem + + +class ParamType: + """Represents the type of a parameter. Validates and converts values + from the command line or Python into the correct type. + + To implement a custom type, subclass and implement at least the + following: + + - The :attr:`name` class attribute must be set. + - Calling an instance of the type with ``None`` must return + ``None``. This is already implemented by default. + - :meth:`convert` must convert string values to the correct type. + - :meth:`convert` must accept values that are already the correct + type. + - It must be able to convert a value if the ``ctx`` and ``param`` + arguments are ``None``. This can occur when converting prompt + input. + """ + + is_composite: t.ClassVar[bool] = False + arity: t.ClassVar[int] = 1 + + #: the descriptive name of this type + name: str + + #: if a list of this type is expected and the value is pulled from a + #: string environment variable, this is what splits it up. `None` + #: means any whitespace. For all parameters the general rule is that + #: whitespace splits them up. The exception are paths and files which + #: are split by ``os.path.pathsep`` by default (":" on Unix and ";" on + #: Windows). + envvar_list_splitter: t.ClassVar[t.Optional[str]] = None + + def to_info_dict(self) -> t.Dict[str, t.Any]: + """Gather information that could be useful for a tool generating + user-facing documentation. + + Use :meth:`click.Context.to_info_dict` to traverse the entire + CLI structure. + + .. versionadded:: 8.0 + """ + # The class name without the "ParamType" suffix. + param_type = type(self).__name__.partition("ParamType")[0] + param_type = param_type.partition("ParameterType")[0] + + # Custom subclasses might not remember to set a name. + if hasattr(self, "name"): + name = self.name + else: + name = param_type + + return {"param_type": param_type, "name": name} + + def __call__( + self, + value: t.Any, + param: t.Optional["Parameter"] = None, + ctx: t.Optional["Context"] = None, + ) -> t.Any: + if value is not None: + return self.convert(value, param, ctx) + + def get_metavar(self, param: "Parameter") -> t.Optional[str]: + """Returns the metavar default for this param if it provides one.""" + + def get_missing_message(self, param: "Parameter") -> t.Optional[str]: + """Optionally might return extra information about a missing + parameter. + + .. versionadded:: 2.0 + """ + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + """Convert the value to the correct type. This is not called if + the value is ``None`` (the missing value). + + This must accept string values from the command line, as well as + values that are already the correct type. It may also convert + other compatible types. + + The ``param`` and ``ctx`` arguments may be ``None`` in certain + situations, such as when converting prompt input. + + If the value cannot be converted, call :meth:`fail` with a + descriptive message. + + :param value: The value to convert. + :param param: The parameter that is using this type to convert + its value. May be ``None``. + :param ctx: The current context that arrived at this value. May + be ``None``. + """ + return value + + def split_envvar_value(self, rv: str) -> t.Sequence[str]: + """Given a value from an environment variable this splits it up + into small chunks depending on the defined envvar list splitter. + + If the splitter is set to `None`, which means that whitespace splits, + then leading and trailing whitespace is ignored. Otherwise, leading + and trailing splitters usually lead to empty items being included. + """ + return (rv or "").split(self.envvar_list_splitter) + + def fail( + self, + message: str, + param: t.Optional["Parameter"] = None, + ctx: t.Optional["Context"] = None, + ) -> "t.NoReturn": + """Helper method to fail with an invalid value message.""" + raise BadParameter(message, ctx=ctx, param=param) + + def shell_complete( + self, ctx: "Context", param: "Parameter", incomplete: str + ) -> t.List["CompletionItem"]: + """Return a list of + :class:`~click.shell_completion.CompletionItem` objects for the + incomplete value. Most types do not provide completions, but + some do, and this allows custom types to provide custom + completions as well. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + return [] + + +class CompositeParamType(ParamType): + is_composite = True + + @property + def arity(self) -> int: # type: ignore + raise NotImplementedError() + + +class FuncParamType(ParamType): + def __init__(self, func: t.Callable[[t.Any], t.Any]) -> None: + self.name: str = func.__name__ + self.func = func + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict["func"] = self.func + return info_dict + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + try: + return self.func(value) + except ValueError: + try: + value = str(value) + except UnicodeError: + value = value.decode("utf-8", "replace") + + self.fail(value, param, ctx) + + +class UnprocessedParamType(ParamType): + name = "text" + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + return value + + def __repr__(self) -> str: + return "UNPROCESSED" + + +class StringParamType(ParamType): + name = "text" + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + if isinstance(value, bytes): + enc = _get_argv_encoding() + try: + value = value.decode(enc) + except UnicodeError: + fs_enc = sys.getfilesystemencoding() + if fs_enc != enc: + try: + value = value.decode(fs_enc) + except UnicodeError: + value = value.decode("utf-8", "replace") + else: + value = value.decode("utf-8", "replace") + return value + return str(value) + + def __repr__(self) -> str: + return "STRING" + + +class Choice(ParamType): + """The choice type allows a value to be checked against a fixed set + of supported values. All of these values have to be strings. + + You should only pass a list or tuple of choices. Other iterables + (like generators) may lead to surprising results. + + The resulting value will always be one of the originally passed choices + regardless of ``case_sensitive`` or any ``ctx.token_normalize_func`` + being specified. + + See :ref:`choice-opts` for an example. + + :param case_sensitive: Set to false to make choices case + insensitive. Defaults to true. + """ + + name = "choice" + + def __init__(self, choices: t.Sequence[str], case_sensitive: bool = True) -> None: + self.choices = choices + self.case_sensitive = case_sensitive + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict["choices"] = self.choices + info_dict["case_sensitive"] = self.case_sensitive + return info_dict + + def get_metavar(self, param: "Parameter") -> str: + choices_str = "|".join(self.choices) + + # Use curly braces to indicate a required argument. + if param.required and param.param_type_name == "argument": + return f"{{{choices_str}}}" + + # Use square braces to indicate an option or optional argument. + return f"[{choices_str}]" + + def get_missing_message(self, param: "Parameter") -> str: + return _("Choose from:\n\t{choices}").format(choices=",\n\t".join(self.choices)) + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + # Match through normalization and case sensitivity + # first do token_normalize_func, then lowercase + # preserve original `value` to produce an accurate message in + # `self.fail` + normed_value = value + normed_choices = {choice: choice for choice in self.choices} + + if ctx is not None and ctx.token_normalize_func is not None: + normed_value = ctx.token_normalize_func(value) + normed_choices = { + ctx.token_normalize_func(normed_choice): original + for normed_choice, original in normed_choices.items() + } + + if not self.case_sensitive: + normed_value = normed_value.casefold() + normed_choices = { + normed_choice.casefold(): original + for normed_choice, original in normed_choices.items() + } + + if normed_value in normed_choices: + return normed_choices[normed_value] + + choices_str = ", ".join(map(repr, self.choices)) + self.fail( + ngettext( + "{value!r} is not {choice}.", + "{value!r} is not one of {choices}.", + len(self.choices), + ).format(value=value, choice=choices_str, choices=choices_str), + param, + ctx, + ) + + def __repr__(self) -> str: + return f"Choice({list(self.choices)})" + + def shell_complete( + self, ctx: "Context", param: "Parameter", incomplete: str + ) -> t.List["CompletionItem"]: + """Complete choices that start with the incomplete value. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + str_choices = map(str, self.choices) + + if self.case_sensitive: + matched = (c for c in str_choices if c.startswith(incomplete)) + else: + incomplete = incomplete.lower() + matched = (c for c in str_choices if c.lower().startswith(incomplete)) + + return [CompletionItem(c) for c in matched] + + +class DateTime(ParamType): + """The DateTime type converts date strings into `datetime` objects. + + The format strings which are checked are configurable, but default to some + common (non-timezone aware) ISO 8601 formats. + + When specifying *DateTime* formats, you should only pass a list or a tuple. + Other iterables, like generators, may lead to surprising results. + + The format strings are processed using ``datetime.strptime``, and this + consequently defines the format strings which are allowed. + + Parsing is tried using each format, in order, and the first format which + parses successfully is used. + + :param formats: A list or tuple of date format strings, in the order in + which they should be tried. Defaults to + ``'%Y-%m-%d'``, ``'%Y-%m-%dT%H:%M:%S'``, + ``'%Y-%m-%d %H:%M:%S'``. + """ + + name = "datetime" + + def __init__(self, formats: t.Optional[t.Sequence[str]] = None): + self.formats: t.Sequence[str] = formats or [ + "%Y-%m-%d", + "%Y-%m-%dT%H:%M:%S", + "%Y-%m-%d %H:%M:%S", + ] + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict["formats"] = self.formats + return info_dict + + def get_metavar(self, param: "Parameter") -> str: + return f"[{'|'.join(self.formats)}]" + + def _try_to_convert_date(self, value: t.Any, format: str) -> t.Optional[datetime]: + try: + return datetime.strptime(value, format) + except ValueError: + return None + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + if isinstance(value, datetime): + return value + + for format in self.formats: + converted = self._try_to_convert_date(value, format) + + if converted is not None: + return converted + + formats_str = ", ".join(map(repr, self.formats)) + self.fail( + ngettext( + "{value!r} does not match the format {format}.", + "{value!r} does not match the formats {formats}.", + len(self.formats), + ).format(value=value, format=formats_str, formats=formats_str), + param, + ctx, + ) + + def __repr__(self) -> str: + return "DateTime" + + +class _NumberParamTypeBase(ParamType): + _number_class: t.ClassVar[t.Type[t.Any]] + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + try: + return self._number_class(value) + except ValueError: + self.fail( + _("{value!r} is not a valid {number_type}.").format( + value=value, number_type=self.name + ), + param, + ctx, + ) + + +class _NumberRangeBase(_NumberParamTypeBase): + def __init__( + self, + min: t.Optional[float] = None, + max: t.Optional[float] = None, + min_open: bool = False, + max_open: bool = False, + clamp: bool = False, + ) -> None: + self.min = min + self.max = max + self.min_open = min_open + self.max_open = max_open + self.clamp = clamp + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict.update( + min=self.min, + max=self.max, + min_open=self.min_open, + max_open=self.max_open, + clamp=self.clamp, + ) + return info_dict + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + import operator + + rv = super().convert(value, param, ctx) + lt_min: bool = self.min is not None and ( + operator.le if self.min_open else operator.lt + )(rv, self.min) + gt_max: bool = self.max is not None and ( + operator.ge if self.max_open else operator.gt + )(rv, self.max) + + if self.clamp: + if lt_min: + return self._clamp(self.min, 1, self.min_open) # type: ignore + + if gt_max: + return self._clamp(self.max, -1, self.max_open) # type: ignore + + if lt_min or gt_max: + self.fail( + _("{value} is not in the range {range}.").format( + value=rv, range=self._describe_range() + ), + param, + ctx, + ) + + return rv + + def _clamp(self, bound: float, dir: "te.Literal[1, -1]", open: bool) -> float: + """Find the valid value to clamp to bound in the given + direction. + + :param bound: The boundary value. + :param dir: 1 or -1 indicating the direction to move. + :param open: If true, the range does not include the bound. + """ + raise NotImplementedError + + def _describe_range(self) -> str: + """Describe the range for use in help text.""" + if self.min is None: + op = "<" if self.max_open else "<=" + return f"x{op}{self.max}" + + if self.max is None: + op = ">" if self.min_open else ">=" + return f"x{op}{self.min}" + + lop = "<" if self.min_open else "<=" + rop = "<" if self.max_open else "<=" + return f"{self.min}{lop}x{rop}{self.max}" + + def __repr__(self) -> str: + clamp = " clamped" if self.clamp else "" + return f"<{type(self).__name__} {self._describe_range()}{clamp}>" + + +class IntParamType(_NumberParamTypeBase): + name = "integer" + _number_class = int + + def __repr__(self) -> str: + return "INT" + + +class IntRange(_NumberRangeBase, IntParamType): + """Restrict an :data:`click.INT` value to a range of accepted + values. See :ref:`ranges`. + + If ``min`` or ``max`` are not passed, any value is accepted in that + direction. If ``min_open`` or ``max_open`` are enabled, the + corresponding boundary is not included in the range. + + If ``clamp`` is enabled, a value outside the range is clamped to the + boundary instead of failing. + + .. versionchanged:: 8.0 + Added the ``min_open`` and ``max_open`` parameters. + """ + + name = "integer range" + + def _clamp( # type: ignore + self, bound: int, dir: "te.Literal[1, -1]", open: bool + ) -> int: + if not open: + return bound + + return bound + dir + + +class FloatParamType(_NumberParamTypeBase): + name = "float" + _number_class = float + + def __repr__(self) -> str: + return "FLOAT" + + +class FloatRange(_NumberRangeBase, FloatParamType): + """Restrict a :data:`click.FLOAT` value to a range of accepted + values. See :ref:`ranges`. + + If ``min`` or ``max`` are not passed, any value is accepted in that + direction. If ``min_open`` or ``max_open`` are enabled, the + corresponding boundary is not included in the range. + + If ``clamp`` is enabled, a value outside the range is clamped to the + boundary instead of failing. This is not supported if either + boundary is marked ``open``. + + .. versionchanged:: 8.0 + Added the ``min_open`` and ``max_open`` parameters. + """ + + name = "float range" + + def __init__( + self, + min: t.Optional[float] = None, + max: t.Optional[float] = None, + min_open: bool = False, + max_open: bool = False, + clamp: bool = False, + ) -> None: + super().__init__( + min=min, max=max, min_open=min_open, max_open=max_open, clamp=clamp + ) + + if (min_open or max_open) and clamp: + raise TypeError("Clamping is not supported for open bounds.") + + def _clamp(self, bound: float, dir: "te.Literal[1, -1]", open: bool) -> float: + if not open: + return bound + + # Could use Python 3.9's math.nextafter here, but clamping an + # open float range doesn't seem to be particularly useful. It's + # left up to the user to write a callback to do it if needed. + raise RuntimeError("Clamping is not supported for open bounds.") + + +class BoolParamType(ParamType): + name = "boolean" + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + if value in {False, True}: + return bool(value) + + norm = value.strip().lower() + + if norm in {"1", "true", "t", "yes", "y", "on"}: + return True + + if norm in {"0", "false", "f", "no", "n", "off"}: + return False + + self.fail( + _("{value!r} is not a valid boolean.").format(value=value), param, ctx + ) + + def __repr__(self) -> str: + return "BOOL" + + +class UUIDParameterType(ParamType): + name = "uuid" + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + import uuid + + if isinstance(value, uuid.UUID): + return value + + value = value.strip() + + try: + return uuid.UUID(value) + except ValueError: + self.fail( + _("{value!r} is not a valid UUID.").format(value=value), param, ctx + ) + + def __repr__(self) -> str: + return "UUID" + + +class File(ParamType): + """Declares a parameter to be a file for reading or writing. The file + is automatically closed once the context tears down (after the command + finished working). + + Files can be opened for reading or writing. The special value ``-`` + indicates stdin or stdout depending on the mode. + + By default, the file is opened for reading text data, but it can also be + opened in binary mode or for writing. The encoding parameter can be used + to force a specific encoding. + + The `lazy` flag controls if the file should be opened immediately or upon + first IO. The default is to be non-lazy for standard input and output + streams as well as files opened for reading, `lazy` otherwise. When opening a + file lazily for reading, it is still opened temporarily for validation, but + will not be held open until first IO. lazy is mainly useful when opening + for writing to avoid creating the file until it is needed. + + Starting with Click 2.0, files can also be opened atomically in which + case all writes go into a separate file in the same folder and upon + completion the file will be moved over to the original location. This + is useful if a file regularly read by other users is modified. + + See :ref:`file-args` for more information. + """ + + name = "filename" + envvar_list_splitter: t.ClassVar[str] = os.path.pathsep + + def __init__( + self, + mode: str = "r", + encoding: t.Optional[str] = None, + errors: t.Optional[str] = "strict", + lazy: t.Optional[bool] = None, + atomic: bool = False, + ) -> None: + self.mode = mode + self.encoding = encoding + self.errors = errors + self.lazy = lazy + self.atomic = atomic + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict.update(mode=self.mode, encoding=self.encoding) + return info_dict + + def resolve_lazy_flag(self, value: "t.Union[str, os.PathLike[str]]") -> bool: + if self.lazy is not None: + return self.lazy + if os.fspath(value) == "-": + return False + elif "w" in self.mode: + return True + return False + + def convert( + self, + value: t.Union[str, "os.PathLike[str]", t.IO[t.Any]], + param: t.Optional["Parameter"], + ctx: t.Optional["Context"], + ) -> t.IO[t.Any]: + if _is_file_like(value): + return value + + value = t.cast("t.Union[str, os.PathLike[str]]", value) + + try: + lazy = self.resolve_lazy_flag(value) + + if lazy: + lf = LazyFile( + value, self.mode, self.encoding, self.errors, atomic=self.atomic + ) + + if ctx is not None: + ctx.call_on_close(lf.close_intelligently) + + return t.cast(t.IO[t.Any], lf) + + f, should_close = open_stream( + value, self.mode, self.encoding, self.errors, atomic=self.atomic + ) + + # If a context is provided, we automatically close the file + # at the end of the context execution (or flush out). If a + # context does not exist, it's the caller's responsibility to + # properly close the file. This for instance happens when the + # type is used with prompts. + if ctx is not None: + if should_close: + ctx.call_on_close(safecall(f.close)) + else: + ctx.call_on_close(safecall(f.flush)) + + return f + except OSError as e: # noqa: B014 + self.fail(f"'{format_filename(value)}': {e.strerror}", param, ctx) + + def shell_complete( + self, ctx: "Context", param: "Parameter", incomplete: str + ) -> t.List["CompletionItem"]: + """Return a special completion marker that tells the completion + system to use the shell to provide file path completions. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + return [CompletionItem(incomplete, type="file")] + + +def _is_file_like(value: t.Any) -> "te.TypeGuard[t.IO[t.Any]]": + return hasattr(value, "read") or hasattr(value, "write") + + +class Path(ParamType): + """The ``Path`` type is similar to the :class:`File` type, but + returns the filename instead of an open file. Various checks can be + enabled to validate the type of file and permissions. + + :param exists: The file or directory needs to exist for the value to + be valid. If this is not set to ``True``, and the file does not + exist, then all further checks are silently skipped. + :param file_okay: Allow a file as a value. + :param dir_okay: Allow a directory as a value. + :param readable: if true, a readable check is performed. + :param writable: if true, a writable check is performed. + :param executable: if true, an executable check is performed. + :param resolve_path: Make the value absolute and resolve any + symlinks. A ``~`` is not expanded, as this is supposed to be + done by the shell only. + :param allow_dash: Allow a single dash as a value, which indicates + a standard stream (but does not open it). Use + :func:`~click.open_file` to handle opening this value. + :param path_type: Convert the incoming path value to this type. If + ``None``, keep Python's default, which is ``str``. Useful to + convert to :class:`pathlib.Path`. + + .. versionchanged:: 8.1 + Added the ``executable`` parameter. + + .. versionchanged:: 8.0 + Allow passing ``path_type=pathlib.Path``. + + .. versionchanged:: 6.0 + Added the ``allow_dash`` parameter. + """ + + envvar_list_splitter: t.ClassVar[str] = os.path.pathsep + + def __init__( + self, + exists: bool = False, + file_okay: bool = True, + dir_okay: bool = True, + writable: bool = False, + readable: bool = True, + resolve_path: bool = False, + allow_dash: bool = False, + path_type: t.Optional[t.Type[t.Any]] = None, + executable: bool = False, + ): + self.exists = exists + self.file_okay = file_okay + self.dir_okay = dir_okay + self.readable = readable + self.writable = writable + self.executable = executable + self.resolve_path = resolve_path + self.allow_dash = allow_dash + self.type = path_type + + if self.file_okay and not self.dir_okay: + self.name: str = _("file") + elif self.dir_okay and not self.file_okay: + self.name = _("directory") + else: + self.name = _("path") + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict.update( + exists=self.exists, + file_okay=self.file_okay, + dir_okay=self.dir_okay, + writable=self.writable, + readable=self.readable, + allow_dash=self.allow_dash, + ) + return info_dict + + def coerce_path_result( + self, value: "t.Union[str, os.PathLike[str]]" + ) -> "t.Union[str, bytes, os.PathLike[str]]": + if self.type is not None and not isinstance(value, self.type): + if self.type is str: + return os.fsdecode(value) + elif self.type is bytes: + return os.fsencode(value) + else: + return t.cast("os.PathLike[str]", self.type(value)) + + return value + + def convert( + self, + value: "t.Union[str, os.PathLike[str]]", + param: t.Optional["Parameter"], + ctx: t.Optional["Context"], + ) -> "t.Union[str, bytes, os.PathLike[str]]": + rv = value + + is_dash = self.file_okay and self.allow_dash and rv in (b"-", "-") + + if not is_dash: + if self.resolve_path: + # os.path.realpath doesn't resolve symlinks on Windows + # until Python 3.8. Use pathlib for now. + import pathlib + + rv = os.fsdecode(pathlib.Path(rv).resolve()) + + try: + st = os.stat(rv) + except OSError: + if not self.exists: + return self.coerce_path_result(rv) + self.fail( + _("{name} {filename!r} does not exist.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if not self.file_okay and stat.S_ISREG(st.st_mode): + self.fail( + _("{name} {filename!r} is a file.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + if not self.dir_okay and stat.S_ISDIR(st.st_mode): + self.fail( + _("{name} '{filename}' is a directory.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if self.readable and not os.access(rv, os.R_OK): + self.fail( + _("{name} {filename!r} is not readable.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if self.writable and not os.access(rv, os.W_OK): + self.fail( + _("{name} {filename!r} is not writable.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + if self.executable and not os.access(value, os.X_OK): + self.fail( + _("{name} {filename!r} is not executable.").format( + name=self.name.title(), filename=format_filename(value) + ), + param, + ctx, + ) + + return self.coerce_path_result(rv) + + def shell_complete( + self, ctx: "Context", param: "Parameter", incomplete: str + ) -> t.List["CompletionItem"]: + """Return a special completion marker that tells the completion + system to use the shell to provide path completions for only + directories or any paths. + + :param ctx: Invocation context for this command. + :param param: The parameter that is requesting completion. + :param incomplete: Value being completed. May be empty. + + .. versionadded:: 8.0 + """ + from click.shell_completion import CompletionItem + + type = "dir" if self.dir_okay and not self.file_okay else "file" + return [CompletionItem(incomplete, type=type)] + + +class Tuple(CompositeParamType): + """The default behavior of Click is to apply a type on a value directly. + This works well in most cases, except for when `nargs` is set to a fixed + count and different types should be used for different items. In this + case the :class:`Tuple` type can be used. This type can only be used + if `nargs` is set to a fixed number. + + For more information see :ref:`tuple-type`. + + This can be selected by using a Python tuple literal as a type. + + :param types: a list of types that should be used for the tuple items. + """ + + def __init__(self, types: t.Sequence[t.Union[t.Type[t.Any], ParamType]]) -> None: + self.types: t.Sequence[ParamType] = [convert_type(ty) for ty in types] + + def to_info_dict(self) -> t.Dict[str, t.Any]: + info_dict = super().to_info_dict() + info_dict["types"] = [t.to_info_dict() for t in self.types] + return info_dict + + @property + def name(self) -> str: # type: ignore + return f"<{' '.join(ty.name for ty in self.types)}>" + + @property + def arity(self) -> int: # type: ignore + return len(self.types) + + def convert( + self, value: t.Any, param: t.Optional["Parameter"], ctx: t.Optional["Context"] + ) -> t.Any: + len_type = len(self.types) + len_value = len(value) + + if len_value != len_type: + self.fail( + ngettext( + "{len_type} values are required, but {len_value} was given.", + "{len_type} values are required, but {len_value} were given.", + len_value, + ).format(len_type=len_type, len_value=len_value), + param=param, + ctx=ctx, + ) + + return tuple(ty(x, param, ctx) for ty, x in zip(self.types, value)) + + +def convert_type(ty: t.Optional[t.Any], default: t.Optional[t.Any] = None) -> ParamType: + """Find the most appropriate :class:`ParamType` for the given Python + type. If the type isn't provided, it can be inferred from a default + value. + """ + guessed_type = False + + if ty is None and default is not None: + if isinstance(default, (tuple, list)): + # If the default is empty, ty will remain None and will + # return STRING. + if default: + item = default[0] + + # A tuple of tuples needs to detect the inner types. + # Can't call convert recursively because that would + # incorrectly unwind the tuple to a single type. + if isinstance(item, (tuple, list)): + ty = tuple(map(type, item)) + else: + ty = type(item) + else: + ty = type(default) + + guessed_type = True + + if isinstance(ty, tuple): + return Tuple(ty) + + if isinstance(ty, ParamType): + return ty + + if ty is str or ty is None: + return STRING + + if ty is int: + return INT + + if ty is float: + return FLOAT + + if ty is bool: + return BOOL + + if guessed_type: + return STRING + + if __debug__: + try: + if issubclass(ty, ParamType): + raise AssertionError( + f"Attempted to use an uninstantiated parameter type ({ty})." + ) + except TypeError: + # ty is an instance (correct), so issubclass fails. + pass + + return FuncParamType(ty) + + +#: A dummy parameter type that just does nothing. From a user's +#: perspective this appears to just be the same as `STRING` but +#: internally no string conversion takes place if the input was bytes. +#: This is usually useful when working with file paths as they can +#: appear in bytes and unicode. +#: +#: For path related uses the :class:`Path` type is a better choice but +#: there are situations where an unprocessed type is useful which is why +#: it is is provided. +#: +#: .. versionadded:: 4.0 +UNPROCESSED = UnprocessedParamType() + +#: A unicode string parameter type which is the implicit default. This +#: can also be selected by using ``str`` as type. +STRING = StringParamType() + +#: An integer parameter. This can also be selected by using ``int`` as +#: type. +INT = IntParamType() + +#: A floating point value parameter. This can also be selected by using +#: ``float`` as type. +FLOAT = FloatParamType() + +#: A boolean parameter. This is the default for boolean flags. This can +#: also be selected by using ``bool`` as a type. +BOOL = BoolParamType() + +#: A UUID parameter. +UUID = UUIDParameterType() diff --git a/venv/lib/python3.12/site-packages/click/utils.py b/venv/lib/python3.12/site-packages/click/utils.py new file mode 100644 index 0000000..d536434 --- /dev/null +++ b/venv/lib/python3.12/site-packages/click/utils.py @@ -0,0 +1,624 @@ +import os +import re +import sys +import typing as t +from functools import update_wrapper +from types import ModuleType +from types import TracebackType + +from ._compat import _default_text_stderr +from ._compat import _default_text_stdout +from ._compat import _find_binary_writer +from ._compat import auto_wrap_for_ansi +from ._compat import binary_streams +from ._compat import open_stream +from ._compat import should_strip_ansi +from ._compat import strip_ansi +from ._compat import text_streams +from ._compat import WIN +from .globals import resolve_color_default + +if t.TYPE_CHECKING: + import typing_extensions as te + + P = te.ParamSpec("P") + +R = t.TypeVar("R") + + +def _posixify(name: str) -> str: + return "-".join(name.split()).lower() + + +def safecall(func: "t.Callable[P, R]") -> "t.Callable[P, t.Optional[R]]": + """Wraps a function so that it swallows exceptions.""" + + def wrapper(*args: "P.args", **kwargs: "P.kwargs") -> t.Optional[R]: + try: + return func(*args, **kwargs) + except Exception: + pass + return None + + return update_wrapper(wrapper, func) + + +def make_str(value: t.Any) -> str: + """Converts a value into a valid string.""" + if isinstance(value, bytes): + try: + return value.decode(sys.getfilesystemencoding()) + except UnicodeError: + return value.decode("utf-8", "replace") + return str(value) + + +def make_default_short_help(help: str, max_length: int = 45) -> str: + """Returns a condensed version of help string.""" + # Consider only the first paragraph. + paragraph_end = help.find("\n\n") + + if paragraph_end != -1: + help = help[:paragraph_end] + + # Collapse newlines, tabs, and spaces. + words = help.split() + + if not words: + return "" + + # The first paragraph started with a "no rewrap" marker, ignore it. + if words[0] == "\b": + words = words[1:] + + total_length = 0 + last_index = len(words) - 1 + + for i, word in enumerate(words): + total_length += len(word) + (i > 0) + + if total_length > max_length: # too long, truncate + break + + if word[-1] == ".": # sentence end, truncate without "..." + return " ".join(words[: i + 1]) + + if total_length == max_length and i != last_index: + break # not at sentence end, truncate with "..." + else: + return " ".join(words) # no truncation needed + + # Account for the length of the suffix. + total_length += len("...") + + # remove words until the length is short enough + while i > 0: + total_length -= len(words[i]) + (i > 0) + + if total_length <= max_length: + break + + i -= 1 + + return " ".join(words[:i]) + "..." + + +class LazyFile: + """A lazy file works like a regular file but it does not fully open + the file but it does perform some basic checks early to see if the + filename parameter does make sense. This is useful for safely opening + files for writing. + """ + + def __init__( + self, + filename: t.Union[str, "os.PathLike[str]"], + mode: str = "r", + encoding: t.Optional[str] = None, + errors: t.Optional[str] = "strict", + atomic: bool = False, + ): + self.name: str = os.fspath(filename) + self.mode = mode + self.encoding = encoding + self.errors = errors + self.atomic = atomic + self._f: t.Optional[t.IO[t.Any]] + self.should_close: bool + + if self.name == "-": + self._f, self.should_close = open_stream(filename, mode, encoding, errors) + else: + if "r" in mode: + # Open and close the file in case we're opening it for + # reading so that we can catch at least some errors in + # some cases early. + open(filename, mode).close() + self._f = None + self.should_close = True + + def __getattr__(self, name: str) -> t.Any: + return getattr(self.open(), name) + + def __repr__(self) -> str: + if self._f is not None: + return repr(self._f) + return f"" + + def open(self) -> t.IO[t.Any]: + """Opens the file if it's not yet open. This call might fail with + a :exc:`FileError`. Not handling this error will produce an error + that Click shows. + """ + if self._f is not None: + return self._f + try: + rv, self.should_close = open_stream( + self.name, self.mode, self.encoding, self.errors, atomic=self.atomic + ) + except OSError as e: # noqa: E402 + from .exceptions import FileError + + raise FileError(self.name, hint=e.strerror) from e + self._f = rv + return rv + + def close(self) -> None: + """Closes the underlying file, no matter what.""" + if self._f is not None: + self._f.close() + + def close_intelligently(self) -> None: + """This function only closes the file if it was opened by the lazy + file wrapper. For instance this will never close stdin. + """ + if self.should_close: + self.close() + + def __enter__(self) -> "LazyFile": + return self + + def __exit__( + self, + exc_type: t.Optional[t.Type[BaseException]], + exc_value: t.Optional[BaseException], + tb: t.Optional[TracebackType], + ) -> None: + self.close_intelligently() + + def __iter__(self) -> t.Iterator[t.AnyStr]: + self.open() + return iter(self._f) # type: ignore + + +class KeepOpenFile: + def __init__(self, file: t.IO[t.Any]) -> None: + self._file: t.IO[t.Any] = file + + def __getattr__(self, name: str) -> t.Any: + return getattr(self._file, name) + + def __enter__(self) -> "KeepOpenFile": + return self + + def __exit__( + self, + exc_type: t.Optional[t.Type[BaseException]], + exc_value: t.Optional[BaseException], + tb: t.Optional[TracebackType], + ) -> None: + pass + + def __repr__(self) -> str: + return repr(self._file) + + def __iter__(self) -> t.Iterator[t.AnyStr]: + return iter(self._file) + + +def echo( + message: t.Optional[t.Any] = None, + file: t.Optional[t.IO[t.Any]] = None, + nl: bool = True, + err: bool = False, + color: t.Optional[bool] = None, +) -> None: + """Print a message and newline to stdout or a file. This should be + used instead of :func:`print` because it provides better support + for different data, files, and environments. + + Compared to :func:`print`, this does the following: + + - Ensures that the output encoding is not misconfigured on Linux. + - Supports Unicode in the Windows console. + - Supports writing to binary outputs, and supports writing bytes + to text outputs. + - Supports colors and styles on Windows. + - Removes ANSI color and style codes if the output does not look + like an interactive terminal. + - Always flushes the output. + + :param message: The string or bytes to output. Other objects are + converted to strings. + :param file: The file to write to. Defaults to ``stdout``. + :param err: Write to ``stderr`` instead of ``stdout``. + :param nl: Print a newline after the message. Enabled by default. + :param color: Force showing or hiding colors and other styles. By + default Click will remove color if the output does not look like + an interactive terminal. + + .. versionchanged:: 6.0 + Support Unicode output on the Windows console. Click does not + modify ``sys.stdout``, so ``sys.stdout.write()`` and ``print()`` + will still not support Unicode. + + .. versionchanged:: 4.0 + Added the ``color`` parameter. + + .. versionadded:: 3.0 + Added the ``err`` parameter. + + .. versionchanged:: 2.0 + Support colors on Windows if colorama is installed. + """ + if file is None: + if err: + file = _default_text_stderr() + else: + file = _default_text_stdout() + + # There are no standard streams attached to write to. For example, + # pythonw on Windows. + if file is None: + return + + # Convert non bytes/text into the native string type. + if message is not None and not isinstance(message, (str, bytes, bytearray)): + out: t.Optional[t.Union[str, bytes]] = str(message) + else: + out = message + + if nl: + out = out or "" + if isinstance(out, str): + out += "\n" + else: + out += b"\n" + + if not out: + file.flush() + return + + # If there is a message and the value looks like bytes, we manually + # need to find the binary stream and write the message in there. + # This is done separately so that most stream types will work as you + # would expect. Eg: you can write to StringIO for other cases. + if isinstance(out, (bytes, bytearray)): + binary_file = _find_binary_writer(file) + + if binary_file is not None: + file.flush() + binary_file.write(out) + binary_file.flush() + return + + # ANSI style code support. For no message or bytes, nothing happens. + # When outputting to a file instead of a terminal, strip codes. + else: + color = resolve_color_default(color) + + if should_strip_ansi(file, color): + out = strip_ansi(out) + elif WIN: + if auto_wrap_for_ansi is not None: + file = auto_wrap_for_ansi(file) # type: ignore + elif not color: + out = strip_ansi(out) + + file.write(out) # type: ignore + file.flush() + + +def get_binary_stream(name: "te.Literal['stdin', 'stdout', 'stderr']") -> t.BinaryIO: + """Returns a system stream for byte processing. + + :param name: the name of the stream to open. Valid names are ``'stdin'``, + ``'stdout'`` and ``'stderr'`` + """ + opener = binary_streams.get(name) + if opener is None: + raise TypeError(f"Unknown standard stream '{name}'") + return opener() + + +def get_text_stream( + name: "te.Literal['stdin', 'stdout', 'stderr']", + encoding: t.Optional[str] = None, + errors: t.Optional[str] = "strict", +) -> t.TextIO: + """Returns a system stream for text processing. This usually returns + a wrapped stream around a binary stream returned from + :func:`get_binary_stream` but it also can take shortcuts for already + correctly configured streams. + + :param name: the name of the stream to open. Valid names are ``'stdin'``, + ``'stdout'`` and ``'stderr'`` + :param encoding: overrides the detected default encoding. + :param errors: overrides the default error mode. + """ + opener = text_streams.get(name) + if opener is None: + raise TypeError(f"Unknown standard stream '{name}'") + return opener(encoding, errors) + + +def open_file( + filename: str, + mode: str = "r", + encoding: t.Optional[str] = None, + errors: t.Optional[str] = "strict", + lazy: bool = False, + atomic: bool = False, +) -> t.IO[t.Any]: + """Open a file, with extra behavior to handle ``'-'`` to indicate + a standard stream, lazy open on write, and atomic write. Similar to + the behavior of the :class:`~click.File` param type. + + If ``'-'`` is given to open ``stdout`` or ``stdin``, the stream is + wrapped so that using it in a context manager will not close it. + This makes it possible to use the function without accidentally + closing a standard stream: + + .. code-block:: python + + with open_file(filename) as f: + ... + + :param filename: The name of the file to open, or ``'-'`` for + ``stdin``/``stdout``. + :param mode: The mode in which to open the file. + :param encoding: The encoding to decode or encode a file opened in + text mode. + :param errors: The error handling mode. + :param lazy: Wait to open the file until it is accessed. For read + mode, the file is temporarily opened to raise access errors + early, then closed until it is read again. + :param atomic: Write to a temporary file and replace the given file + on close. + + .. versionadded:: 3.0 + """ + if lazy: + return t.cast( + t.IO[t.Any], LazyFile(filename, mode, encoding, errors, atomic=atomic) + ) + + f, should_close = open_stream(filename, mode, encoding, errors, atomic=atomic) + + if not should_close: + f = t.cast(t.IO[t.Any], KeepOpenFile(f)) + + return f + + +def format_filename( + filename: "t.Union[str, bytes, os.PathLike[str], os.PathLike[bytes]]", + shorten: bool = False, +) -> str: + """Format a filename as a string for display. Ensures the filename can be + displayed by replacing any invalid bytes or surrogate escapes in the name + with the replacement character ``�``. + + Invalid bytes or surrogate escapes will raise an error when written to a + stream with ``errors="strict". This will typically happen with ``stdout`` + when the locale is something like ``en_GB.UTF-8``. + + Many scenarios *are* safe to write surrogates though, due to PEP 538 and + PEP 540, including: + + - Writing to ``stderr``, which uses ``errors="backslashreplace"``. + - The system has ``LANG=C.UTF-8``, ``C``, or ``POSIX``. Python opens + stdout and stderr with ``errors="surrogateescape"``. + - None of ``LANG/LC_*`` are set. Python assumes ``LANG=C.UTF-8``. + - Python is started in UTF-8 mode with ``PYTHONUTF8=1`` or ``-X utf8``. + Python opens stdout and stderr with ``errors="surrogateescape"``. + + :param filename: formats a filename for UI display. This will also convert + the filename into unicode without failing. + :param shorten: this optionally shortens the filename to strip of the + path that leads up to it. + """ + if shorten: + filename = os.path.basename(filename) + else: + filename = os.fspath(filename) + + if isinstance(filename, bytes): + filename = filename.decode(sys.getfilesystemencoding(), "replace") + else: + filename = filename.encode("utf-8", "surrogateescape").decode( + "utf-8", "replace" + ) + + return filename + + +def get_app_dir(app_name: str, roaming: bool = True, force_posix: bool = False) -> str: + r"""Returns the config folder for the application. The default behavior + is to return whatever is most appropriate for the operating system. + + To give you an idea, for an app called ``"Foo Bar"``, something like + the following folders could be returned: + + Mac OS X: + ``~/Library/Application Support/Foo Bar`` + Mac OS X (POSIX): + ``~/.foo-bar`` + Unix: + ``~/.config/foo-bar`` + Unix (POSIX): + ``~/.foo-bar`` + Windows (roaming): + ``C:\Users\\AppData\Roaming\Foo Bar`` + Windows (not roaming): + ``C:\Users\\AppData\Local\Foo Bar`` + + .. versionadded:: 2.0 + + :param app_name: the application name. This should be properly capitalized + and can contain whitespace. + :param roaming: controls if the folder should be roaming or not on Windows. + Has no effect otherwise. + :param force_posix: if this is set to `True` then on any POSIX system the + folder will be stored in the home folder with a leading + dot instead of the XDG config home or darwin's + application support folder. + """ + if WIN: + key = "APPDATA" if roaming else "LOCALAPPDATA" + folder = os.environ.get(key) + if folder is None: + folder = os.path.expanduser("~") + return os.path.join(folder, app_name) + if force_posix: + return os.path.join(os.path.expanduser(f"~/.{_posixify(app_name)}")) + if sys.platform == "darwin": + return os.path.join( + os.path.expanduser("~/Library/Application Support"), app_name + ) + return os.path.join( + os.environ.get("XDG_CONFIG_HOME", os.path.expanduser("~/.config")), + _posixify(app_name), + ) + + +class PacifyFlushWrapper: + """This wrapper is used to catch and suppress BrokenPipeErrors resulting + from ``.flush()`` being called on broken pipe during the shutdown/final-GC + of the Python interpreter. Notably ``.flush()`` is always called on + ``sys.stdout`` and ``sys.stderr``. So as to have minimal impact on any + other cleanup code, and the case where the underlying file is not a broken + pipe, all calls and attributes are proxied. + """ + + def __init__(self, wrapped: t.IO[t.Any]) -> None: + self.wrapped = wrapped + + def flush(self) -> None: + try: + self.wrapped.flush() + except OSError as e: + import errno + + if e.errno != errno.EPIPE: + raise + + def __getattr__(self, attr: str) -> t.Any: + return getattr(self.wrapped, attr) + + +def _detect_program_name( + path: t.Optional[str] = None, _main: t.Optional[ModuleType] = None +) -> str: + """Determine the command used to run the program, for use in help + text. If a file or entry point was executed, the file name is + returned. If ``python -m`` was used to execute a module or package, + ``python -m name`` is returned. + + This doesn't try to be too precise, the goal is to give a concise + name for help text. Files are only shown as their name without the + path. ``python`` is only shown for modules, and the full path to + ``sys.executable`` is not shown. + + :param path: The Python file being executed. Python puts this in + ``sys.argv[0]``, which is used by default. + :param _main: The ``__main__`` module. This should only be passed + during internal testing. + + .. versionadded:: 8.0 + Based on command args detection in the Werkzeug reloader. + + :meta private: + """ + if _main is None: + _main = sys.modules["__main__"] + + if not path: + path = sys.argv[0] + + # The value of __package__ indicates how Python was called. It may + # not exist if a setuptools script is installed as an egg. It may be + # set incorrectly for entry points created with pip on Windows. + # It is set to "" inside a Shiv or PEX zipapp. + if getattr(_main, "__package__", None) in {None, ""} or ( + os.name == "nt" + and _main.__package__ == "" + and not os.path.exists(path) + and os.path.exists(f"{path}.exe") + ): + # Executed a file, like "python app.py". + return os.path.basename(path) + + # Executed a module, like "python -m example". + # Rewritten by Python from "-m script" to "/path/to/script.py". + # Need to look at main module to determine how it was executed. + py_module = t.cast(str, _main.__package__) + name = os.path.splitext(os.path.basename(path))[0] + + # A submodule like "example.cli". + if name != "__main__": + py_module = f"{py_module}.{name}" + + return f"python -m {py_module.lstrip('.')}" + + +def _expand_args( + args: t.Iterable[str], + *, + user: bool = True, + env: bool = True, + glob_recursive: bool = True, +) -> t.List[str]: + """Simulate Unix shell expansion with Python functions. + + See :func:`glob.glob`, :func:`os.path.expanduser`, and + :func:`os.path.expandvars`. + + This is intended for use on Windows, where the shell does not do any + expansion. It may not exactly match what a Unix shell would do. + + :param args: List of command line arguments to expand. + :param user: Expand user home directory. + :param env: Expand environment variables. + :param glob_recursive: ``**`` matches directories recursively. + + .. versionchanged:: 8.1 + Invalid glob patterns are treated as empty expansions rather + than raising an error. + + .. versionadded:: 8.0 + + :meta private: + """ + from glob import glob + + out = [] + + for arg in args: + if user: + arg = os.path.expanduser(arg) + + if env: + arg = os.path.expandvars(arg) + + try: + matches = glob(arg, recursive=glob_recursive) + except re.error: + matches = [] + + if not matches: + out.append(arg) + else: + out.extend(matches) + + return out diff --git a/venv/lib/python3.12/site-packages/dotenv/__init__.py b/venv/lib/python3.12/site-packages/dotenv/__init__.py new file mode 100644 index 0000000..7f4c631 --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/__init__.py @@ -0,0 +1,49 @@ +from typing import Any, Optional + +from .main import (dotenv_values, find_dotenv, get_key, load_dotenv, set_key, + unset_key) + + +def load_ipython_extension(ipython: Any) -> None: + from .ipython import load_ipython_extension + load_ipython_extension(ipython) + + +def get_cli_string( + path: Optional[str] = None, + action: Optional[str] = None, + key: Optional[str] = None, + value: Optional[str] = None, + quote: Optional[str] = None, +): + """Returns a string suitable for running as a shell script. + + Useful for converting a arguments passed to a fabric task + to be passed to a `local` or `run` command. + """ + command = ['dotenv'] + if quote: + command.append(f'-q {quote}') + if path: + command.append(f'-f {path}') + if action: + command.append(action) + if key: + command.append(key) + if value: + if ' ' in value: + command.append(f'"{value}"') + else: + command.append(value) + + return ' '.join(command).strip() + + +__all__ = ['get_cli_string', + 'load_dotenv', + 'dotenv_values', + 'get_key', + 'set_key', + 'unset_key', + 'find_dotenv', + 'load_ipython_extension'] diff --git a/venv/lib/python3.12/site-packages/dotenv/__main__.py b/venv/lib/python3.12/site-packages/dotenv/__main__.py new file mode 100644 index 0000000..3977f55 --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/__main__.py @@ -0,0 +1,6 @@ +"""Entry point for cli, enables execution with `python -m dotenv`""" + +from .cli import cli + +if __name__ == "__main__": + cli() diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..56d8dd7af6dd5a10ca56dab5884ba2f835ac8ab2 GIT binary patch literal 1688 zcmZ`(&1)M+6rb5|X(ic-RX3@Vcya84D7M;|(oo!#5>ub5;-tCgvR-RO^4j~M%&ycb ztic5zs*{yMi68__PYLON(o0JmDldc@ddf|$4}qTgW+mBfNS>tMzIpT0`}k=_zh<*( z1UCKor?rfX&|iEpvdqvq{t=u9h#-O;xh%U%S#i~}>S|@p zO_fuyFHuZnqEscK?n>o!3XNW5jA&G#`bEe~QYT*e#M4i_%*d;zNp@E*XKIM#e#Yf& zODT-MtSp33k#oE{P(Dpscd5L*ciL=BHsn;}{meZg?tXFN1n1fiX)@W#M(N?TG zzI7T6hS5~R8@Z}oZ-pDa7b}d04d#_9JpIT-aQNrg004Zl{ zAeIFWsYVfcD_4xrYh27$-<&tXXEF-x##>lt>x%3HB1K{ovB@{H zi5!U!5s@E>r@6gzZ{|j4I7Hgyio9l#Jj$|pR=*+Z>F{|QPVv28ZY9SqFf1boneEk# zpkasBx-2w&HOH@5&YA(G*P!;AQSn{Z^2kEMkCnkWyC=@y zH2|tcjNv^~5a9^b>(nE$wCUSkEc03F1%*w(tSryr9S)Nm-UW!&Vd6l66`#Z~*g3wD z<5#!h*ycbEW*n3rBix?|S=sXXTlG=?{J8cYWrWKKq+A%g#e*1uf~6rNC!=CZ=)V z|GrG;z;9u4Ckt|kTOk)KVXF>57vm?0NdU3rTDCX%dcsd~Bq>i5@hcsRpiWXSR!!4# z9MgP)l0F6^YD=z98VA&?UJl9K~?<}_G`y%*9nSAGV`>VbTeqTYbbG3cBukw|KVDD!8 Xvwn)N(!zl%rG_%SS^uanBr|O)75u+4x3Xc#^3uO(Rt0JMp ztSk}_+L}sRfSC<{u|L?t74d6T#JLvAaDLY!RfBVBW6mA%jCy2*2F~Bmy0-9l&l0PF zX_tt20*>869t$@XIh(_%%Vz#KOVx;N6fZj$U6!i?+L@<|G30DxfbAqZSy@Hb+RAAP oJy(CLc9x&`v?3VeCA$4VhhOC2W${UlmSN+$zal6+c9CcN13lkjP5=M^ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/cli.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/cli.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..af2ba8e19e972363fbecb49cf7895b8f37d90bfa GIT binary patch literal 9695 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/ipython.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/ipython.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..c0ed3a6d84588f77feea73a062997ef4645e742b GIT binary patch literal 1961 zcmah~J!}+56rS0?`?n1oHW(yU3MM+p-H9JXQ6N}IkO(0Rfi!HhtarzE3;T1KSsU&E ziNb}86m(9cNO6$@WTd2|3{{FWK_({V6utFb0eMG%Oa8hddmh5L-A@EG1Me6$?xWv{1M7(6Ed!XXOA> zJuS$G1*;Gits+K5RnTY1)8~>&vpwU(9fvX^0G3ccYQ4h3tinq(e&pF+oRDaa zmx9>IHtxU|IY~ZX)&B~_A|lAb9EssBlx+LI1KI% zx@OyNwFxz6;=m)6!A#AhP0Xur8M#{1xE_fZaxLk02+w(B#+eNgIs)vuiX<@=f>DuG z{TCn>Q6j=E$8B`&ZM_V|%LDX|a$C7Jh~D5(PIuG-N^%);TZLF}=ItFdscfCV_e0rk zYX(#}`ObK#X1R}17rlp)e5SA;(IJeIQnvS$<-r>;x&pd4&`tFUx`Auj)EB*-t`kLZ zVv1xo1yy43Vjg+`}KcZ2O-^ z{^^zB!wcHW(eY=a2cC=`SSYP2T4BeF@rkADKOTEjT^T>QaBicF3e|h(?pJ@<`(W=+ z+Rv58mEZGIe{Yn~$k<;<0rm2>U$@tumJdEJZ(q{^c*6uu-&amm(c^0M)FJipK@4)L zmgjlfj+~I#HZR(C7<;pUSeI@4%ULH#PpC*6Dmo`uq5Duln0(m-)Q2Ua`-Bh~B!vhM zi$TnzbpshYSM<^6dSx|VUI>;>tX4kU&{e}&&m&_gVlK zz{E&4YicV?ySS$G_FN(@XfIIMqL?Sr*qO3BH>My#hw0!vZRt!hP{TYoNCGAk@!CN6(3*jip$%m>zJTw2+DBrB*eOG666$}X;6u{O_ A3;+NC literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/main.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/main.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f10afa7468ac948845ad8380cf195f67923e97ee GIT binary patch literal 16380 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 HMn?Y+F+x3K literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/parser.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..34bc41170e758683d29664ceec745d7f9cdce7b0 GIT binary patch literal 9994 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/dotenv/__pycache__/variables.cpython-312.pyc b/venv/lib/python3.12/site-packages/dotenv/__pycache__/variables.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f5ad338799d05c0ea9d13c126b6a7c9cb7f2910a GIT binary patch literal 5020 zcmb_gS!^5E6@9aENKvGy#j4~@-bF{YEXj#o*Gpo{OOi$j;-v_!m>6-MEXrKuHzT`Z zDAW!NL~c`5Zi|pc8(8|X1iPs775A(8?+_aXq%56y4>X_=C9THPv@hmMYcWkABB5lo(G#~a8ZywESJvL_f#}R)byTClHdxSlLpcni zNKO+&y+sTk6(4F3B$qG5>3*OGXsALBb7~z>gR7_wMm-H0A*#?2N*PRI+80riNJ%E?Z1+euO}o=tATHr~BXJP0~wgmCOe7IbX z9lnMO=VxJcxWo>RY94{^7AcFe(q24OCNRucOE{E+L~UM_PZST#^v!9Hn&#_E+g^RL z{^?!S+K8>WP$YnhB6wX%%!bfK=<_h6ElggOAJL&C;-l z-W*d56+B*~KG^fYT7$VC_B5CW3_q=-5)D$RDiTmm0QT!AB+#Pohu|O#0$#bMr^YF( zhgT0&SrHAyt%!;!ki3v5ahN&Hv#G##03qrc7Uxxl1zROENejHJ!F?Y%nnT%yynxea z-In$#`R4&{gv9DN!`Jg8Y=ubyARFQkX0`1%5a^#vXGv5V$c5bZbnc{##VEqsUv+zC_0m4nc z$lcBr&)>Uv_u`XqXG!aP(R>w+^n;u#jjX8;xH&#i(}qP4WWAdLRF3H82f1#(VpDC_%y`B zny%=ck^3A&#wtZ4-sHkwB)Blwg_SL%KBoWOkkKXmT)Mmg0i=`4d;8ys-#2_ z0bxJ{grOV|lwN1M7g^hDp%7)YKki$`!O;y9bRTI|#h&`_M%tC-GGXUS@Yv4jMEU@eWf#$Q~e@ zXjpKJ=I>3(pZXVDHvv!vUyL-&Alx^x!u)QaTpNo3LZ#0YfKVAA)H_KhYUM~S(AD88 z<_Oyj^4SlttBE=8kX4s(p!8MXHPKH!DD}_!iyzJHesu23!7m0M4Scnw6z(r+{f>iR z7*qwF3E{LjE71N=7vhThoTcwZRssYjUp!VTJ7lX$~@R+^txg?SqXfFyN>g z_H^ySF7lhG-_^3qK) z4^@aEKp2SwHby-Lzb##+7RQ39yi))2E!G74Cd!2>-ziIYO`2<{xP_Y}UPs15&_Nh& z-Fd%jwyU)D(De2~*Dt%i5~qBNk>*0{oz`OWy|%k;Gp83KT~M;OZ7#LFGIgz_^*w5Y zj%(~CDTP7_-&HI5XkT1tqOpi4j|Yij-OSk!Y;QwpDoGvNd8NqN49(bG`+` zV>&Zw<<9_G(?|`Xmya+wtefzA0s~bweR{C-peN)#k{n}5DK5uNBQD%nc&X+p+o;B`&8r=VF zXkD>?Zr8I=?^CT8Lg}_zZX%66%j-xeGTrjC*o{+*zWQnPaz?3`Oy+OY3g zsAoazDN96a{kMs(_3?4}xGF>&ZIMx1(uWcZVT6Bo+Nw2y|FbZ3oK?jc-rn{lvgxs8 z3d)ZQC*ME*?%9)E*}T+)zeeJECX=;v{CCELVjk_iqIa&Fnh#i8JM4TEA7$?YGnOUh zb?C~HAPCQi|7)`AYjR+L9QdYV_l$^NHf7PLXypc?_&#~-=37fmfi2>V@N{dj>CT2F z5)j1Yc1`FPrhoKLg5&bK2BCe*SSBzm?`#tGPg%0&_oF^B^Lj8MjB4j^MXLkdF_LnWgoQx&VBo`IgBpC;oi?)dn! z)S}|d{Ji-1l?VF05XXNLm>gN_^BqnF47U{dB7AGebr6(5am!~Ef>6fMEmFeeX zCg~ScmSp7T8S5Du=@(~~r0Ny`l_#dB7VD?vmw?nj4c05Dyv1RYo1apelWJGQ2DAa> WtYVO>KQJ>gGTz`5ZR9Ru0dfI^4mHmJ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/dotenv/cli.py b/venv/lib/python3.12/site-packages/dotenv/cli.py new file mode 100644 index 0000000..65ead46 --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/cli.py @@ -0,0 +1,199 @@ +import json +import os +import shlex +import sys +from contextlib import contextmanager +from subprocess import Popen +from typing import Any, Dict, IO, Iterator, List + +try: + import click +except ImportError: + sys.stderr.write('It seems python-dotenv is not installed with cli option. \n' + 'Run pip install "python-dotenv[cli]" to fix this.') + sys.exit(1) + +from .main import dotenv_values, set_key, unset_key +from .version import __version__ + + +def enumerate_env(): + """ + Return a path for the ${pwd}/.env file. + + If pwd does not exist, return None. + """ + try: + cwd = os.getcwd() + except FileNotFoundError: + return None + path = os.path.join(cwd, '.env') + return path + + +@click.group() +@click.option('-f', '--file', default=enumerate_env(), + type=click.Path(file_okay=True), + help="Location of the .env file, defaults to .env file in current working directory.") +@click.option('-q', '--quote', default='always', + type=click.Choice(['always', 'never', 'auto']), + help="Whether to quote or not the variable values. Default mode is always. This does not affect parsing.") +@click.option('-e', '--export', default=False, + type=click.BOOL, + help="Whether to write the dot file as an executable bash script.") +@click.version_option(version=__version__) +@click.pass_context +def cli(ctx: click.Context, file: Any, quote: Any, export: Any) -> None: + """This script is used to set, get or unset values from a .env file.""" + ctx.obj = {'QUOTE': quote, 'EXPORT': export, 'FILE': file} + + +@contextmanager +def stream_file(path: os.PathLike) -> Iterator[IO[str]]: + """ + Open a file and yield the corresponding (decoded) stream. + + Exits with error code 2 if the file cannot be opened. + """ + + try: + with open(path) as stream: + yield stream + except OSError as exc: + print(f"Error opening env file: {exc}", file=sys.stderr) + exit(2) + + +@cli.command() +@click.pass_context +@click.option('--format', default='simple', + type=click.Choice(['simple', 'json', 'shell', 'export']), + help="The format in which to display the list. Default format is simple, " + "which displays name=value without quotes.") +def list(ctx: click.Context, format: bool) -> None: + """Display all the stored key/value.""" + file = ctx.obj['FILE'] + + with stream_file(file) as stream: + values = dotenv_values(stream=stream) + + if format == 'json': + click.echo(json.dumps(values, indent=2, sort_keys=True)) + else: + prefix = 'export ' if format == 'export' else '' + for k in sorted(values): + v = values[k] + if v is not None: + if format in ('export', 'shell'): + v = shlex.quote(v) + click.echo(f'{prefix}{k}={v}') + + +@cli.command() +@click.pass_context +@click.argument('key', required=True) +@click.argument('value', required=True) +def set(ctx: click.Context, key: Any, value: Any) -> None: + """Store the given key/value.""" + file = ctx.obj['FILE'] + quote = ctx.obj['QUOTE'] + export = ctx.obj['EXPORT'] + success, key, value = set_key(file, key, value, quote, export) + if success: + click.echo(f'{key}={value}') + else: + exit(1) + + +@cli.command() +@click.pass_context +@click.argument('key', required=True) +def get(ctx: click.Context, key: Any) -> None: + """Retrieve the value for the given key.""" + file = ctx.obj['FILE'] + + with stream_file(file) as stream: + values = dotenv_values(stream=stream) + + stored_value = values.get(key) + if stored_value: + click.echo(stored_value) + else: + exit(1) + + +@cli.command() +@click.pass_context +@click.argument('key', required=True) +def unset(ctx: click.Context, key: Any) -> None: + """Removes the given key.""" + file = ctx.obj['FILE'] + quote = ctx.obj['QUOTE'] + success, key = unset_key(file, key, quote) + if success: + click.echo(f"Successfully removed {key}") + else: + exit(1) + + +@cli.command(context_settings={'ignore_unknown_options': True}) +@click.pass_context +@click.option( + "--override/--no-override", + default=True, + help="Override variables from the environment file with those from the .env file.", +) +@click.argument('commandline', nargs=-1, type=click.UNPROCESSED) +def run(ctx: click.Context, override: bool, commandline: List[str]) -> None: + """Run command with environment variables present.""" + file = ctx.obj['FILE'] + if not os.path.isfile(file): + raise click.BadParameter( + f'Invalid value for \'-f\' "{file}" does not exist.', + ctx=ctx + ) + dotenv_as_dict = { + k: v + for (k, v) in dotenv_values(file).items() + if v is not None and (override or k not in os.environ) + } + + if not commandline: + click.echo('No command given.') + exit(1) + ret = run_command(commandline, dotenv_as_dict) + exit(ret) + + +def run_command(command: List[str], env: Dict[str, str]) -> int: + """Run command in sub process. + + Runs the command in a sub process with the variables from `env` + added in the current environment variables. + + Parameters + ---------- + command: List[str] + The command and it's parameters + env: Dict + The additional environment variables + + Returns + ------- + int + The return code of the command + + """ + # copy the current environment variables and add the vales from + # `env` + cmd_env = os.environ.copy() + cmd_env.update(env) + + p = Popen(command, + universal_newlines=True, + bufsize=0, + shell=False, + env=cmd_env) + _, _ = p.communicate() + + return p.returncode diff --git a/venv/lib/python3.12/site-packages/dotenv/ipython.py b/venv/lib/python3.12/site-packages/dotenv/ipython.py new file mode 100644 index 0000000..7df727c --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/ipython.py @@ -0,0 +1,39 @@ +from IPython.core.magic import Magics, line_magic, magics_class # type: ignore +from IPython.core.magic_arguments import (argument, magic_arguments, # type: ignore + parse_argstring) # type: ignore + +from .main import find_dotenv, load_dotenv + + +@magics_class +class IPythonDotEnv(Magics): + + @magic_arguments() + @argument( + '-o', '--override', action='store_true', + help="Indicate to override existing variables" + ) + @argument( + '-v', '--verbose', action='store_true', + help="Indicate function calls to be verbose" + ) + @argument('dotenv_path', nargs='?', type=str, default='.env', + help='Search in increasingly higher folders for the `dotenv_path`') + @line_magic + def dotenv(self, line): + args = parse_argstring(self.dotenv, line) + # Locate the .env file + dotenv_path = args.dotenv_path + try: + dotenv_path = find_dotenv(dotenv_path, True, True) + except IOError: + print("cannot find .env file") + return + + # Load the .env file + load_dotenv(dotenv_path, verbose=args.verbose, override=args.override) + + +def load_ipython_extension(ipython): + """Register the %dotenv magic.""" + ipython.register_magics(IPythonDotEnv) diff --git a/venv/lib/python3.12/site-packages/dotenv/main.py b/venv/lib/python3.12/site-packages/dotenv/main.py new file mode 100644 index 0000000..7bc5428 --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/main.py @@ -0,0 +1,392 @@ +import io +import logging +import os +import pathlib +import shutil +import sys +import tempfile +from collections import OrderedDict +from contextlib import contextmanager +from typing import (IO, Dict, Iterable, Iterator, Mapping, Optional, Tuple, + Union) + +from .parser import Binding, parse_stream +from .variables import parse_variables + +# A type alias for a string path to be used for the paths in this file. +# These paths may flow to `open()` and `shutil.move()`; `shutil.move()` +# only accepts string paths, not byte paths or file descriptors. See +# https://github.com/python/typeshed/pull/6832. +StrPath = Union[str, 'os.PathLike[str]'] + +logger = logging.getLogger(__name__) + + +def with_warn_for_invalid_lines(mappings: Iterator[Binding]) -> Iterator[Binding]: + for mapping in mappings: + if mapping.error: + logger.warning( + "Python-dotenv could not parse statement starting at line %s", + mapping.original.line, + ) + yield mapping + + +class DotEnv: + def __init__( + self, + dotenv_path: Optional[StrPath], + stream: Optional[IO[str]] = None, + verbose: bool = False, + encoding: Optional[str] = None, + interpolate: bool = True, + override: bool = True, + ) -> None: + self.dotenv_path: Optional[StrPath] = dotenv_path + self.stream: Optional[IO[str]] = stream + self._dict: Optional[Dict[str, Optional[str]]] = None + self.verbose: bool = verbose + self.encoding: Optional[str] = encoding + self.interpolate: bool = interpolate + self.override: bool = override + + @contextmanager + def _get_stream(self) -> Iterator[IO[str]]: + if self.dotenv_path and os.path.isfile(self.dotenv_path): + with open(self.dotenv_path, encoding=self.encoding) as stream: + yield stream + elif self.stream is not None: + yield self.stream + else: + if self.verbose: + logger.info( + "Python-dotenv could not find configuration file %s.", + self.dotenv_path or '.env', + ) + yield io.StringIO('') + + def dict(self) -> Dict[str, Optional[str]]: + """Return dotenv as dict""" + if self._dict: + return self._dict + + raw_values = self.parse() + + if self.interpolate: + self._dict = OrderedDict(resolve_variables(raw_values, override=self.override)) + else: + self._dict = OrderedDict(raw_values) + + return self._dict + + def parse(self) -> Iterator[Tuple[str, Optional[str]]]: + with self._get_stream() as stream: + for mapping in with_warn_for_invalid_lines(parse_stream(stream)): + if mapping.key is not None: + yield mapping.key, mapping.value + + def set_as_environment_variables(self) -> bool: + """ + Load the current dotenv as system environment variable. + """ + if not self.dict(): + return False + + for k, v in self.dict().items(): + if k in os.environ and not self.override: + continue + if v is not None: + os.environ[k] = v + + return True + + def get(self, key: str) -> Optional[str]: + """ + """ + data = self.dict() + + if key in data: + return data[key] + + if self.verbose: + logger.warning("Key %s not found in %s.", key, self.dotenv_path) + + return None + + +def get_key( + dotenv_path: StrPath, + key_to_get: str, + encoding: Optional[str] = "utf-8", +) -> Optional[str]: + """ + Get the value of a given key from the given .env. + + Returns `None` if the key isn't found or doesn't have a value. + """ + return DotEnv(dotenv_path, verbose=True, encoding=encoding).get(key_to_get) + + +@contextmanager +def rewrite( + path: StrPath, + encoding: Optional[str], +) -> Iterator[Tuple[IO[str], IO[str]]]: + pathlib.Path(path).touch() + + with tempfile.NamedTemporaryFile(mode="w", encoding=encoding, delete=False) as dest: + error = None + try: + with open(path, encoding=encoding) as source: + yield (source, dest) + except BaseException as err: + error = err + + if error is None: + shutil.move(dest.name, path) + else: + os.unlink(dest.name) + raise error from None + + +def set_key( + dotenv_path: StrPath, + key_to_set: str, + value_to_set: str, + quote_mode: str = "always", + export: bool = False, + encoding: Optional[str] = "utf-8", +) -> Tuple[Optional[bool], str, str]: + """ + Adds or Updates a key/value to the given .env + + If the .env path given doesn't exist, fails instead of risking creating + an orphan .env somewhere in the filesystem + """ + if quote_mode not in ("always", "auto", "never"): + raise ValueError(f"Unknown quote_mode: {quote_mode}") + + quote = ( + quote_mode == "always" + or (quote_mode == "auto" and not value_to_set.isalnum()) + ) + + if quote: + value_out = "'{}'".format(value_to_set.replace("'", "\\'")) + else: + value_out = value_to_set + if export: + line_out = f'export {key_to_set}={value_out}\n' + else: + line_out = f"{key_to_set}={value_out}\n" + + with rewrite(dotenv_path, encoding=encoding) as (source, dest): + replaced = False + missing_newline = False + for mapping in with_warn_for_invalid_lines(parse_stream(source)): + if mapping.key == key_to_set: + dest.write(line_out) + replaced = True + else: + dest.write(mapping.original.string) + missing_newline = not mapping.original.string.endswith("\n") + if not replaced: + if missing_newline: + dest.write("\n") + dest.write(line_out) + + return True, key_to_set, value_to_set + + +def unset_key( + dotenv_path: StrPath, + key_to_unset: str, + quote_mode: str = "always", + encoding: Optional[str] = "utf-8", +) -> Tuple[Optional[bool], str]: + """ + Removes a given key from the given `.env` file. + + If the .env path given doesn't exist, fails. + If the given key doesn't exist in the .env, fails. + """ + if not os.path.exists(dotenv_path): + logger.warning("Can't delete from %s - it doesn't exist.", dotenv_path) + return None, key_to_unset + + removed = False + with rewrite(dotenv_path, encoding=encoding) as (source, dest): + for mapping in with_warn_for_invalid_lines(parse_stream(source)): + if mapping.key == key_to_unset: + removed = True + else: + dest.write(mapping.original.string) + + if not removed: + logger.warning("Key %s not removed from %s - key doesn't exist.", key_to_unset, dotenv_path) + return None, key_to_unset + + return removed, key_to_unset + + +def resolve_variables( + values: Iterable[Tuple[str, Optional[str]]], + override: bool, +) -> Mapping[str, Optional[str]]: + new_values: Dict[str, Optional[str]] = {} + + for (name, value) in values: + if value is None: + result = None + else: + atoms = parse_variables(value) + env: Dict[str, Optional[str]] = {} + if override: + env.update(os.environ) # type: ignore + env.update(new_values) + else: + env.update(new_values) + env.update(os.environ) # type: ignore + result = "".join(atom.resolve(env) for atom in atoms) + + new_values[name] = result + + return new_values + + +def _walk_to_root(path: str) -> Iterator[str]: + """ + Yield directories starting from the given directory up to the root + """ + if not os.path.exists(path): + raise IOError('Starting path not found') + + if os.path.isfile(path): + path = os.path.dirname(path) + + last_dir = None + current_dir = os.path.abspath(path) + while last_dir != current_dir: + yield current_dir + parent_dir = os.path.abspath(os.path.join(current_dir, os.path.pardir)) + last_dir, current_dir = current_dir, parent_dir + + +def find_dotenv( + filename: str = '.env', + raise_error_if_not_found: bool = False, + usecwd: bool = False, +) -> str: + """ + Search in increasingly higher folders for the given file + + Returns path to the file if found, or an empty string otherwise + """ + + def _is_interactive(): + """ Decide whether this is running in a REPL or IPython notebook """ + try: + main = __import__('__main__', None, None, fromlist=['__file__']) + except ModuleNotFoundError: + return False + return not hasattr(main, '__file__') + + if usecwd or _is_interactive() or getattr(sys, 'frozen', False): + # Should work without __file__, e.g. in REPL or IPython notebook. + path = os.getcwd() + else: + # will work for .py files + frame = sys._getframe() + current_file = __file__ + + while frame.f_code.co_filename == current_file or not os.path.exists( + frame.f_code.co_filename + ): + assert frame.f_back is not None + frame = frame.f_back + frame_filename = frame.f_code.co_filename + path = os.path.dirname(os.path.abspath(frame_filename)) + + for dirname in _walk_to_root(path): + check_path = os.path.join(dirname, filename) + if os.path.isfile(check_path): + return check_path + + if raise_error_if_not_found: + raise IOError('File not found') + + return '' + + +def load_dotenv( + dotenv_path: Optional[StrPath] = None, + stream: Optional[IO[str]] = None, + verbose: bool = False, + override: bool = False, + interpolate: bool = True, + encoding: Optional[str] = "utf-8", +) -> bool: + """Parse a .env file and then load all the variables found as environment variables. + + Parameters: + dotenv_path: Absolute or relative path to .env file. + stream: Text stream (such as `io.StringIO`) with .env content, used if + `dotenv_path` is `None`. + verbose: Whether to output a warning the .env file is missing. + override: Whether to override the system environment variables with the variables + from the `.env` file. + encoding: Encoding to be used to read the file. + Returns: + Bool: True if at least one environment variable is set else False + + If both `dotenv_path` and `stream` are `None`, `find_dotenv()` is used to find the + .env file. + """ + if dotenv_path is None and stream is None: + dotenv_path = find_dotenv() + + dotenv = DotEnv( + dotenv_path=dotenv_path, + stream=stream, + verbose=verbose, + interpolate=interpolate, + override=override, + encoding=encoding, + ) + return dotenv.set_as_environment_variables() + + +def dotenv_values( + dotenv_path: Optional[StrPath] = None, + stream: Optional[IO[str]] = None, + verbose: bool = False, + interpolate: bool = True, + encoding: Optional[str] = "utf-8", +) -> Dict[str, Optional[str]]: + """ + Parse a .env file and return its content as a dict. + + The returned dict will have `None` values for keys without values in the .env file. + For example, `foo=bar` results in `{"foo": "bar"}` whereas `foo` alone results in + `{"foo": None}` + + Parameters: + dotenv_path: Absolute or relative path to the .env file. + stream: `StringIO` object with .env content, used if `dotenv_path` is `None`. + verbose: Whether to output a warning if the .env file is missing. + encoding: Encoding to be used to read the file. + + If both `dotenv_path` and `stream` are `None`, `find_dotenv()` is used to find the + .env file. + """ + if dotenv_path is None and stream is None: + dotenv_path = find_dotenv() + + return DotEnv( + dotenv_path=dotenv_path, + stream=stream, + verbose=verbose, + interpolate=interpolate, + override=True, + encoding=encoding, + ).dict() diff --git a/venv/lib/python3.12/site-packages/dotenv/parser.py b/venv/lib/python3.12/site-packages/dotenv/parser.py new file mode 100644 index 0000000..735f14a --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/parser.py @@ -0,0 +1,175 @@ +import codecs +import re +from typing import (IO, Iterator, Match, NamedTuple, Optional, # noqa:F401 + Pattern, Sequence, Tuple) + + +def make_regex(string: str, extra_flags: int = 0) -> Pattern[str]: + return re.compile(string, re.UNICODE | extra_flags) + + +_newline = make_regex(r"(\r\n|\n|\r)") +_multiline_whitespace = make_regex(r"\s*", extra_flags=re.MULTILINE) +_whitespace = make_regex(r"[^\S\r\n]*") +_export = make_regex(r"(?:export[^\S\r\n]+)?") +_single_quoted_key = make_regex(r"'([^']+)'") +_unquoted_key = make_regex(r"([^=\#\s]+)") +_equal_sign = make_regex(r"(=[^\S\r\n]*)") +_single_quoted_value = make_regex(r"'((?:\\'|[^'])*)'") +_double_quoted_value = make_regex(r'"((?:\\"|[^"])*)"') +_unquoted_value = make_regex(r"([^\r\n]*)") +_comment = make_regex(r"(?:[^\S\r\n]*#[^\r\n]*)?") +_end_of_line = make_regex(r"[^\S\r\n]*(?:\r\n|\n|\r|$)") +_rest_of_line = make_regex(r"[^\r\n]*(?:\r|\n|\r\n)?") +_double_quote_escapes = make_regex(r"\\[\\'\"abfnrtv]") +_single_quote_escapes = make_regex(r"\\[\\']") + + +class Original(NamedTuple): + string: str + line: int + + +class Binding(NamedTuple): + key: Optional[str] + value: Optional[str] + original: Original + error: bool + + +class Position: + def __init__(self, chars: int, line: int) -> None: + self.chars = chars + self.line = line + + @classmethod + def start(cls) -> "Position": + return cls(chars=0, line=1) + + def set(self, other: "Position") -> None: + self.chars = other.chars + self.line = other.line + + def advance(self, string: str) -> None: + self.chars += len(string) + self.line += len(re.findall(_newline, string)) + + +class Error(Exception): + pass + + +class Reader: + def __init__(self, stream: IO[str]) -> None: + self.string = stream.read() + self.position = Position.start() + self.mark = Position.start() + + def has_next(self) -> bool: + return self.position.chars < len(self.string) + + def set_mark(self) -> None: + self.mark.set(self.position) + + def get_marked(self) -> Original: + return Original( + string=self.string[self.mark.chars:self.position.chars], + line=self.mark.line, + ) + + def peek(self, count: int) -> str: + return self.string[self.position.chars:self.position.chars + count] + + def read(self, count: int) -> str: + result = self.string[self.position.chars:self.position.chars + count] + if len(result) < count: + raise Error("read: End of string") + self.position.advance(result) + return result + + def read_regex(self, regex: Pattern[str]) -> Sequence[str]: + match = regex.match(self.string, self.position.chars) + if match is None: + raise Error("read_regex: Pattern not found") + self.position.advance(self.string[match.start():match.end()]) + return match.groups() + + +def decode_escapes(regex: Pattern[str], string: str) -> str: + def decode_match(match: Match[str]) -> str: + return codecs.decode(match.group(0), 'unicode-escape') # type: ignore + + return regex.sub(decode_match, string) + + +def parse_key(reader: Reader) -> Optional[str]: + char = reader.peek(1) + if char == "#": + return None + elif char == "'": + (key,) = reader.read_regex(_single_quoted_key) + else: + (key,) = reader.read_regex(_unquoted_key) + return key + + +def parse_unquoted_value(reader: Reader) -> str: + (part,) = reader.read_regex(_unquoted_value) + return re.sub(r"\s+#.*", "", part).rstrip() + + +def parse_value(reader: Reader) -> str: + char = reader.peek(1) + if char == u"'": + (value,) = reader.read_regex(_single_quoted_value) + return decode_escapes(_single_quote_escapes, value) + elif char == u'"': + (value,) = reader.read_regex(_double_quoted_value) + return decode_escapes(_double_quote_escapes, value) + elif char in (u"", u"\n", u"\r"): + return u"" + else: + return parse_unquoted_value(reader) + + +def parse_binding(reader: Reader) -> Binding: + reader.set_mark() + try: + reader.read_regex(_multiline_whitespace) + if not reader.has_next(): + return Binding( + key=None, + value=None, + original=reader.get_marked(), + error=False, + ) + reader.read_regex(_export) + key = parse_key(reader) + reader.read_regex(_whitespace) + if reader.peek(1) == "=": + reader.read_regex(_equal_sign) + value: Optional[str] = parse_value(reader) + else: + value = None + reader.read_regex(_comment) + reader.read_regex(_end_of_line) + return Binding( + key=key, + value=value, + original=reader.get_marked(), + error=False, + ) + except Error: + reader.read_regex(_rest_of_line) + return Binding( + key=None, + value=None, + original=reader.get_marked(), + error=True, + ) + + +def parse_stream(stream: IO[str]) -> Iterator[Binding]: + reader = Reader(stream) + while reader.has_next(): + yield parse_binding(reader) diff --git a/venv/lib/python3.12/site-packages/dotenv/py.typed b/venv/lib/python3.12/site-packages/dotenv/py.typed new file mode 100644 index 0000000..7632ecf --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/py.typed @@ -0,0 +1 @@ +# Marker file for PEP 561 diff --git a/venv/lib/python3.12/site-packages/dotenv/variables.py b/venv/lib/python3.12/site-packages/dotenv/variables.py new file mode 100644 index 0000000..667f2f2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/variables.py @@ -0,0 +1,86 @@ +import re +from abc import ABCMeta, abstractmethod +from typing import Iterator, Mapping, Optional, Pattern + +_posix_variable: Pattern[str] = re.compile( + r""" + \$\{ + (?P[^\}:]*) + (?::- + (?P[^\}]*) + )? + \} + """, + re.VERBOSE, +) + + +class Atom(metaclass=ABCMeta): + def __ne__(self, other: object) -> bool: + result = self.__eq__(other) + if result is NotImplemented: + return NotImplemented + return not result + + @abstractmethod + def resolve(self, env: Mapping[str, Optional[str]]) -> str: ... + + +class Literal(Atom): + def __init__(self, value: str) -> None: + self.value = value + + def __repr__(self) -> str: + return f"Literal(value={self.value})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return NotImplemented + return self.value == other.value + + def __hash__(self) -> int: + return hash((self.__class__, self.value)) + + def resolve(self, env: Mapping[str, Optional[str]]) -> str: + return self.value + + +class Variable(Atom): + def __init__(self, name: str, default: Optional[str]) -> None: + self.name = name + self.default = default + + def __repr__(self) -> str: + return f"Variable(name={self.name}, default={self.default})" + + def __eq__(self, other: object) -> bool: + if not isinstance(other, self.__class__): + return NotImplemented + return (self.name, self.default) == (other.name, other.default) + + def __hash__(self) -> int: + return hash((self.__class__, self.name, self.default)) + + def resolve(self, env: Mapping[str, Optional[str]]) -> str: + default = self.default if self.default is not None else "" + result = env.get(self.name, default) + return result if result is not None else "" + + +def parse_variables(value: str) -> Iterator[Atom]: + cursor = 0 + + for match in _posix_variable.finditer(value): + (start, end) = match.span() + name = match["name"] + default = match["default"] + + if start > cursor: + yield Literal(value=value[cursor:start]) + + yield Variable(name=name, default=default) + cursor = end + + length = len(value) + if cursor < length: + yield Literal(value=value[cursor:length]) diff --git a/venv/lib/python3.12/site-packages/dotenv/version.py b/venv/lib/python3.12/site-packages/dotenv/version.py new file mode 100644 index 0000000..5c4105c --- /dev/null +++ b/venv/lib/python3.12/site-packages/dotenv/version.py @@ -0,0 +1 @@ +__version__ = "1.0.1" diff --git a/venv/lib/python3.12/site-packages/engineio/__init__.py b/venv/lib/python3.12/site-packages/engineio/__init__.py new file mode 100644 index 0000000..4919efd --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/__init__.py @@ -0,0 +1,13 @@ +from .client import Client +from .middleware import WSGIApp, Middleware +from .server import Server +from .async_server import AsyncServer +from .async_client import AsyncClient +from .async_drivers.asgi import ASGIApp +try: + from .async_drivers.tornado import get_tornado_handler +except ImportError: # pragma: no cover + get_tornado_handler = None + +__all__ = ['Server', 'WSGIApp', 'Middleware', 'Client', + 'AsyncServer', 'ASGIApp', 'get_tornado_handler', 'AsyncClient'] diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59448e6e91b5468f1a73cfdcefe75e0ad68e67d9 GIT binary patch literal 686 zcmZ8ezi-qq82x<7CAr)WepIMZ2X5e(BE&_sTSbdbfKY{CDH3WH%e`1R3pst6oo%^K8TR=?r}!*I%+BZ+5W@5 zaapSHF-ucU=R{H?*r#$vrDol6wa6#`l}$TR{`jJbwSH(SQ@Y^yOczUtzs zDwRzCP&Fb|#_VWy>EDAUx=p0Id!j64{Xoh>Dj#FQImRF0SR2C0(|B448Vflkljl^% z_h~gDG9y(yr-z&IjOMeLv%|Pt)YBs08r|NED^}B6rIwS7Rx!;pmQz;57_*$!7>~+@ z3hsy^eZlFjT-QU)Lsh#PRt`dF2^-(wrp6^)v)_$X%R$4XyL}X(?j!Wt|F!ZVSUUoQ dhF>=>e{t7M-|(dBX^Z#X7JT$~oKI-S`3-C5y7d46 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/async_client.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/async_client.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..23d9366373b052eeab4992f5a7a9ca0b9f20c4bb GIT binary patch literal 38464 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 L=dcAyq>=p(jd>E4 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/base_client.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/base_client.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b2b167f59d7aa2c7677c05508f261c140e82d2c8 GIT binary patch literal 6292 zcmbVQU2GfImA*6l5k*oaB~i9){djE0B1f^w#Ie&xaqPtUaa_mr)^?kPHeF`S8B?Um z8TQUdjwq^70|S)+FPZ>b$i*(O%_2Z;I6zyVK>N7Z*L@K!2V`$t)Y$eVZ(1wGw)?c_ z%*-8%vh&iBc<(vq-Z}T&pL6ba=D&J+!UUeNvlE3-KOuiahChCn*!}?!>qI50P$siZ zEzAlwFV2c~?VI)4wSU&HimI<1s03$&0uhNuN_)7%cCGp!2o5(JDv;T3HE^5EhE+j{ zh~zv`gSUy=^+0rcL>C1)^d&OcFYzr|V8N=Azo}WZn5Gwsx>hvO`EpUyt-Sk={U+M) zgWvXlLa|OPTZn}!sKNmt8%XU8nwE)tWN3zpV?JnMYy~a??~k_3DN57qZu+IYn2?8cm185{XF*H}x=PlZrb|VA!MLd*Eg7^3%chhivsl2&(}(J^au@4$6>4hE z)x+XNGpCq~dcJ7nt}CXdvasq6%tCn>TDe}<*gmd2=P1v)%309iS-+~?Q0B{4uBcnQ zQT8z(G_$}Bs#G)>OhX5O3L zjGfpBod9`!Z!;!0V)DHs_vSZar#3>Twm~<^W5FMOYPa78$vXH9de^L2fRp;~!mO{G z;GY^+eYXYhFF*K7K#hRU2(v--mDw(}3(Alhg0frfhBCY;%25_R2h*LjJp)#_%iUCp z2b6VHG}DB|$>zQD3S!S^egNx%=m)Cv3!R|TFBC*bJ zx}z5U7KCBCLy#9QR=i7ZbwL|0ET-L66To#Bf|4ll- z)z-zSw$887c!~FH*VZJbOIc2}YwjmIH1AsX`(lyv z`D%eGs%EmDDh!LUU84(1nMG~ZDpoXO-eUea%c`;-?E`3qiznx>&X{;#z-vsrWwJeJ zey(g7)tsf6H(Bf!g?PS05cvMQHm|XOX(^V*!lqfyEoiiOW0CEHE5S4n9pqpbs^pBS zRWx*yV!&d-zq5e@^OsCRXW^n*)Io)w*O>phVU$_0Y!nI_WqbG~amXJb?Y+fCRIXHDb~ z^P5`v21N&@FJpo3#G<%1ITM03SWnX^N0*}+D9jKPa535s#aP2aIau?emCM!o+d)6g zg@^DZ9l+BH`JWJp?te6La%1H5OTW7G_~f~5pOBmqHljzK3?5kZ-|1-$4%^j%QK(|ALq}Krk3yrZ{(ZoPc;m<+ zlpbgeOIYu3C7{03-5Qa9nb;UP<+P2AJ9Xb)XzOZ?9!7Skb?^w*!>xh+AP%<%fQ9P7 z3sA*c$ukd=Q~zQ2eBntXwh?N72#8vHf?)K7HX)EZI6Btxny!xRoGM zX4U_BX!xsMG9;s@73=@;(%MopCN*Nxr{{m3{UrM^cH(#aVB_HW#g8vG6RAcb_1V5( z4BsFAJn`z2UDA>JBaaf_XvGujk&h$I_*f%8_UWx=@^mA4dNX?+wCO7RY>4ei*=-T3PwzJR!Ng|uP`XDIJ_ z1~Jn1Q2z+TkI0XNb+RU`krHsbp9O(N+LyK}@R0MNuqv#Q8=@-S4lVoY;)+=JT?J4N z7l6q72xQSG`<4F&40A;*6ix7Kz?>5Jgl@HgWtgAViK+q+&uN~Jt^pWzdg_4t($XZn zd0msQ-4K_QpKFY>44ry#D0h#& zp(qony1rxTHMqreQvMd&~m1 zM>qiil}alsPK=MhWy5W%9o`Wd3_X3iY(NTTo`I=)eG2fhiKy`}5F(C@uTEizynD0} zm0JA=R9ai51ly0L_@Fj zbl8Ge#{4D}e_bJ4$4IpIuD>~$YQTRa^|){NZf>*h_(t^jpZ#L@&{l{<`&ZAl`bRgS zqrVIFe{>$=^s`|T0o4znE5E$Hsr#4l;Y0RI$n zY{HYmAA~HnO{ZaO*g~=7*}%Ktmzf8ybXl};7WVVJT(jimc)S<5RQqjz-KUCn=HOF( z%K^O~c)!aBfRD8EPBqBK{7|U-pOQ;>H#%WgDh}4pmvwMY;ecu0eIWX3wOvx zkbC*y4*7GXG^B>>zR#i$+|2nZQ6rta+*2Dnujv|G5YE?}Y5N;k`od)%tT62 zCS+Kbdps#dCD!d7Nh$+h>xJ9S4rksegK!W)kY&)aP0@Ft8~q2IQV_1liel0CP=ZiL z4%$(R`7n3s;a`4oIFhZMg>4mT4%%%MCN8ye88~saH&?*y!Tq#|{c6KIkN)n~C3xTb zEfg!{$>7oE;ERpH7w=7O4!*S7^LSur{k@OhYYvPz2FCBbvN@1h4L^w_?sh+n9BK^= ztKon|d1geutC`l&p?l-a@z)#UuebJ(-77WIXBz1kT-JK4@Wnls^-e`s{6j-LX?C`?cE0?tSWL{s@dQG2FpM z#S;H){_Dwqd+n#M{mbi{`;v`VawC+q7eelu$$p6okiB*-OY!T19KrkwuajJkg>$)z zq0X0)j^=XTpI6FG3q?du-@*ce6UB_*K5_KhNX=nU#$pl+Obr~QkKcSK76=5)Q&8L{ ztnby8i%;Hst2KGPB_H1oqym|z*90LjupK-Y7K$k(@=jv-X0eNDMusf zk$dPjpt93@iZ>>`iG_m2EEX7-SvMTxckFDJ;+Pb@!2Sqee?zbh+GQyVopxq^hEnK^ zC&EN*u;mj3;R~|o3)1riiGM*NK>VI0p7b96XkWAUaHIF|#*veoy{A_8v=VzaNbl2N aRCsl3lnfo*Ap8C|XbD2=!G}nST#6J)P<+XHT5n2xNGFMOMEY#g=Yv7)k^%(+yj@VT zV6Z2T#{Idhkr z&Rjp=-(mrff^?mxnNFABZ-4K{_xJsMpTGS}ueY4T({c2`?7!X1asQ1H=3~o6o?JuZ z7AJBdALFKsH$TO*v}MY|-qtBAd)uaL>}{X2v$tc)AzDOh%sKCxa`7DEHpI)O%6QJg zNw&FwIauK>+JC?ssVTRG8|6gDdz|R}fhCvcxy%P$Ur=J~3#u37b;m+DazRQW=3EG0 zjwQlk$|uEVqj4#k=u;&5q9jL*)<&4?ihJ@2(ziH?qs3q$yl9!VOj&0+(fWHl7Ge|a zNZUnPgmcPS#ufg=X0hx&e##}5zsF6LiEf1DVvFcOo?G-HUj zE7+=+9}g?i1Y4(Wn@vR*bf+lI#KK7_Xw{vOL_97hXw~S9qHwf#>4E|D!&S z75Xw`g+8Cr;|a57;hlWZjL!|3vBKNLh7CQB7Rt?-S#PN_&A(HY=F^oIIoX=#XZbik z%Pmzhyl6LTv($Dom98A(-jFzMsj7@io;7pl#>`mZEn3r6DJ0F=%$+QhnKA5sVH}*W zQgtvlU+EIjMkp2MMf*~9x*BzU&Fr`EHrIM#A8>-d_RVw^#>}q<`^npI3g*66Xko^# zxRWoNanWI};$2XM=ZzzGiO*UGuRM1hO7VEk|K0JFXOG9p4bOv{Ts)quXguFLhl|d$ zFZp#73g&qRuJ~s8C12V%#9a?WEVEq1@&>5NQXn0`h_9OU3vcY9B^|hFxfZZ-OFq=| zZCGtt@#t^yiif8?DbWx1uGj1pHA+#7H_Yi;99#V?H5Dg0dh*qBBuROzoUJkE9d>kCZl4i7G-oku(}b6G9|0zYtDFr(;s; z^s}1C(zh0)vZUl2h2x?yzo;aIMMV;l7-*0tY4B_Y4SOkZUD$%%-496pqZci>Q z#3bFzDn#Q+NC)AV-moDVnw7&5DYPKT(S)c6=EHA=&L@)#q3Ok$8A%Q)7)-AS$6|>~ zp~VH%6(vRYvl;{oEK`Xl;(AR{B9uIj?DL73s5>Hw#D%D&2Ol zp8%8+awrmuqFY6;0x;xch(y3B7Mctz7xe1lRLJNX6^p8bq>E@RljNa0USgu9ZktoE zRNHhS5z`%*!K@_f73Q$Hv^|D~G2KZ?5~&30-`FqBg9gu&j3W&tCvOR2~T3tY29l?v37A08}5$+*iA!aGU8SxDeHcQdZ7a9>E%UnTQokC2-fH}oR1lK4&ON!6f@Q0n=`EB)sa^HTr3e4aK<7sD7cM8yC*r&M zcD~TBM3Yi4sSgl_m41_y^b_P5+DLNW!e!kR3eousg;Lc8QM=E~BseJLAVycX^$Kol zaM||2wdJ9^=EnR7FF$ba&|3RezooYBTpoJhY1aA<-Wyc=jw}y->e=zAwJ(?1PwyRC z`+jQMsx|k}yHOJc=)G0jet_QFwA!X++ckH-nptdCuiJuRk5=D+m-nI2_I*2R{>ayy z@pXS`<=S4*26kr$&Z+}v*R5Qc_kpYBQCla~5wvX`^ls7IzKpw3Yu$crRB`(F60dW#mQ zzjgZN>1?1&4Rn1}_lHe)nm!HeeY7ce>z%C+0{b+7;FkNQJL~UI{T&}%%61-7I}fdO z9(mwDilVGvQ2oN1f7`NMbJt|tty+8E-R)}oz8h0F&)hq=Jgn8yQr%iZGhV*W16!7d z)-C1UnupDu+2%cJ^ByhGd)KB0c0aN5Eqi~m_t3{PSa@a4ciig^uD4xn)zR&zM>(yLM z!+JgE@n1iB^=QVu?O|0@X6wPVszVviA%HRK7F4(Jz`aeYY`ES2;g0ursFl51WzDU| zn~f{4-LLFK{dJCS?ta4Y)jJUL?s(*@&idL_AAsGl`rfYj@<6Fi??r?W_`6x0Jsw&7M2xU?{ zQjJB&a5KS!Y|JTk1XnoC7kGjQw_zyKZrMXKf11(fi3#&ujijYNdz zVm=gSbNePDzs~(Se~Y`yU*+b^@}l=e9`a+pt;iQ7xMhBso3V(N_gqWXwB?E=ZJmIz z1v4tZxkO8NcJ&m#>4Yc zpKt;#rzPRdH#>9Ih0ZtM?4e|iNh2vFFUIMQWpV?P90%0wTpCC#QX~K{`n0Q8_UT*4wIqM>b4!;$ihj<355PavrfdZ&$ zu5Ft-Jg{N(V`S7y#Jlp)4sIxhOae)jS$uNBjohU~#U267FDfVE!HvDqcndP*!>-N~ zMk@j@iLsKB?A+Kj)s4=W9lhRpZuso@BXkm<9)()VQgTs_ z3nP&CBwD8|%|Yrexq1Wc8@r*knUY@)xW?M%mDy*n>zovku%D2_4V%{ip|eMz78~G3 z(=*J4anb0s6O!ygBCbfAz+l4PL~nFvbZo*qSXdC9mCa~?RkH~x48Pud6T5>G(xn*U zv~X%DXkt))f`&XxXfYF&p-e!iS)7NA+Q$y#hLgAP5N{YO-`y({qo>Smq;3p+Q-HwG zR?NP8KoLYCg2SELwKv~n`-ZtD6Zx);9b_xXVIA-%KP?kPXk$WQ!{T%0`QCEY+miFi zce;UI>^)qyxckTVU|yu3AbF z;j8>1)JSs^;8bHlUM99jHrL#0bvx_Z;9=CMaODc)V!9hTfr&4vZAJV7&^r`ML~ufm zz;vCj^P6a_kf8Z9zE$iADb&~ zYZStUA%atj7I158DtpeLCPZp!y+UG!;bC4=Ae|fR;j)39OeHKL!E`i}mlDE40%|Oj zdeXr`^m5p4HUvX3$u~|0<8nERIha)**XX3+6y{CnjFII_bDRw4+~8v7NzcvKINSxq zl*!C2ljWKAGc*e%FjQgPmD9q-poML!ZbhF8!6~knnQ$GAZAsh595++KDBsnub57W8j z1OA^fp(^#{1O%oe9YyezMeNcv(R}O;WGJ>X;RP5wz=K#N(p&{n0Am}r3fq8RSXfL( zW6|X0!k#ce06oN_5!hxxtr^8)#uiv?HjJF#k4sUo^u;7d$3-@Wgm5V#%a?`lH02g1 z27V4|l|+xRm`RfJhN66LOu%DPE^MK0XKRJ@N@n&uR%5qpq~*$k$Wa(AFi)Sym}iK! zN!1nYUU9+q2>wK0n3m~pUrv(xwX#q3wcVb~_;#;;UG?qGxOP9idxRkD;0cJZgNOI# z$Jjd(gHyjOI#|Y@N%IQ;y7X2=T43TA8KCIc{lje?cI1LU8zqGEkT&M>_u0LCR~yZJ zn|II6MhdZ2%OOB&vzV`Mp;K8@E0l*#s=a9co>^-Zohrm(jLi(NtvsyyaQuQ#Z{XkO z`2DSU{7muw|H1i-=izSX4gc_4Xs|oBb#D@=OP)72nNsJC6?}|#%x(Pievqe;9jGP{ z$y;19Pby3CtR(Fod*<@~N;8Lp?)igUYmijZ4L3b=?oAm;l0)6JoEQ6dmdGq^2L%8DGM zs8K^%T7bSHnY`4pk(KK1+1$iKQE`JtUzGo+n7Bf~y~6#Cw>s9a`vycnrxs0Ex`NXgEm3kTHI$rHJa6s_-N9qWoh7SGY%& zjklU_Hs5xv+SV$2?^@N$U3VjD<%`P>P3X=F1FA6aSHcUbr)l}rjYZ8@zcO;)w@vfc zKlIhD*sp#2v-+*S>%3uyX=}xHbxHHruC(9YqBeA^{_dNONBQLHgxWB0caPezU-j?5 z=~%DiT6e8iasJw6?{iS*4=}@LNeHq4@=^jdibVE2X+bx+N3qlO4~8UgQ%;cNSdt8q z_uvXSFY{M5%pNupJRSx+r~q)410igw!$qF5(~1diVYu7KD`Z+nNKa*= zcIx*@6?jFOo?zEsguKXXT7$wD!%>DhJ;LS0qT$YCem01O;i87*LxK&7iKLKL3;sew zkU?8m+42G|8LOl?VWbd+B0nJ+{y{MjVX8foX4%9=DT(owzLY1P=*_DbLA&94nF5&P z*C`-TQ}>0)JtmQ_CzJsF3mUSgOxVt}gN>}PEbrLcpf%)k|1+8?(+GgJWSrgxR3wtN zSMAt)S6S;gnC%$4-!Y{5x2(K=-`}NG*DRlc?fd${s|Rnqt-9MXaDRCGS&slkb=_jA zJjTQDUfJ?hnawM#mvezyRQES7FJ($8jCn%#uP}jIxO@fdKy34qW|xbWEFfGZ@K3IP zR;$BYk@+-l8pZVjsF!d?lhn)}IHTbXFRGho+3)hEa~kSsZxJRM`kJZgkhB~Ym`%~- zeSN9Qi5wRs7xPSFF)pU+%q$>J!N?(r*u!SbM0cH*E*qXZMx&^%Bu(M1LR@w-1MwWsQ%XFL2Qx7dwu_J?9XRs{H+hG8ZwQ$*Q)kp zJbN^sf7$i(uiTu!9>)K&0an(xR@I;Jz?FiGUnq2n-}UX|{Fn-#&r$|@r6hz(RSzdsDQIy`2=P~y? zR^0)=b#f6t@bmCBkTcw6j(5i*Uq_u(d0`Z006?!+nSh`>Uox&h>JCFfG7UgCP$++g zf}04K0jR*#tf9n(R7EilOI-LLR82vEv+u6TxSKU!?ee#^hNc@%%~PGJAI{W`sGgDK zQLVW{Yw36>bbjc2-*?aXKsc5aMpa={YiEwNlRO+ztvi3RbKl3c_nbd$`O;|(9Ou_L zs~2H8*V3s8M=~u(HDUXgc1xghowIm54HlI@f|x`eZI+QBw7CLgS>lsO8BZzMyA(l~ z%ij|;TNYcLmLM02)>$61aVbWWM<~%wClZl-LbP92r`) z@wwOlq7el#8Y|w3r3w}n;h7qu>h3T%gZF%%zRsF5ro4whpcD1TKTh*;rb+7JQ ztJ<~f)EahZO$RcK2eqcQ?~Q$T4B1V)uvz{+*sQWWPb)}t-q{(aJCV3KOc!f;(JI;) z(Cn#!BA^+DesZ181l!MRgY!$Z)U7$x!-S>O7JmK9J~{#}4g{+9?g z;HWoLJb0?U82ZH}4ubp!ENy>2miA~($1;tB&%@GUl2VR|F)aOarWlYDw*9S(eWZtwa_bfCZg z?ehsGxdh*WBUjHx8G0?N{c31r{M;*p=Z1!dLNA>gpB&d~p30{lb-st)!PNO~-OXx% zDvX{Q3zq2)5CkcX3xJS&=fg?)3Sg$&6`1IujN{5#biueFhWo0Ve2{{75#-cz-I?=K z>pt^#UGB=D{QK08Z}UY$N3M9YnqC9V{ONm#DWRCyl&aw)qH_lU{A>+P%RbHBbla)A zJ6BKN+o$#%*F23`&oov!D!kMUpO zX3RMM$k(|FEBy;vV8`kuHLzFPB7Cp$yNz0)M+-D&ntIhh-xIr~Vc@3&dp@?`jr_3u z-cB%=h9f^ca^g>kUY+Oj{>{37aAdSvRsm9Ino&$86cB84*|!;9H#9ED!!3NST9 zq+SKu2YI-1T121x5&BIv4l-4ym$Vi+5$heK3%|(B7krPHkhODJK$6uN}H9j^0 zw@_2bc827oq^fcidxX*9$sXY)q7iM3FbtkJF+4F5Ix#*rd2akn$Qz^H-~LWd65hq?AqzS#uC}xQ&aC@c6_Gy{18Q(^d7H4C2|1TD2g!Z zkSp0iRN>#CJqgUX+DFG_)pFn6{fJpSssbb=H)k7ms|~yFzOvSEm{=bYdzQ#YrSPSd?`?flzvu3ydrRuRvzfZFOzk+7D5zM~ZPabqefLhLV2x$!##Ik1 z8@P+E4pQ!xeOi4>Mi^G>N1$qNISECIuRq0q2~u;4Umj(%6YjeO*27SyZdmmUqj#uo z6;B@&BAQGB`mc!mDn~|Mmar5|y`^kpUH{w@qwij ze>7)6_L-fyc6SM%1iS|M{8!gEJ|Td;aQh&9#g_&8NRAoka8~FNI~n7`1w~EgFM&Tg zXQD9)?lSoVpfd&r^^fq@oyWdur%u~*qoW+*u+0_yz5Tp zdw_A;GMn0jg7y$iCgm??Oq6q!P>#NcfN!BHaI5=f_iyzqJ0E&0ufK8ijobU~R)6Z< zbFWJCR9ruK_2i9LaZ~qaR<2_2BVTRS*P{Ab;5f**T7PDLI`0>X8{K|XHCSu?QLTNj z&l$@&HPTVUjB?B@+|jCs&0j+p!O4ih47nr6l+b7cyx!rN%5_hA2QC7db7kJ-%`# zF>BsJGmOo-ZxH&}rv?K1FoAjOjr(Kt!3ewF7#C2noa{jKFn_yYr(`YqQYVD2nME1C z7FkF{B8#{W0h_X7+_Zs}(y(t_ioy_%TbMK^?#-}Xj1lQ`hu|1Y)vW*n`xpQ>qS$u` zR($**A3?5Z!z4?F?ly1I(RUrRRhSg>y2xbpNi`Io5sX%3=l&Yu!E2}lizdvMbt_`F zd6$ZxdlwAQ*H2$Po%L*0JzH01K`(>Hh+eiFV*=VB|A;Kqt*WOr>%oPp?YA#{>UjZq zMx!P;Vpd-H)U%!8Q_wf|1u^U|0tlkVj{CUD$tVZJ8XKD&8Jip%lP6FRw2qC91-H^? z1LTzoh4k`J?)wbHJt5p22*+|I)#d>J70OvA6!{f&A|Ik)8wD3Bpw9@|=POsW~<+O&o^anF_{TW*TQeei`q}A448Gkf-N;`6# ze!KQ*2ajr_r=Pgb^7fPb<8NAcd(C49Z$H65adg?YKAz-V_A~tBfYZL`ah22FO#xzd z`w0KI!eg&}+~h&6rZRiwlUlF6^GP!+w%K<+@vvBfz2))#Dtq1IF1vl(;|dF^xLkIF z2C&Hoy|PRTA)+nsrGSXJOf*g=8>0Ld2y}dQMsZTf^)e9hGweejxtlT>98OUz4;$Te z$oT5!h)j|uP>@rOA^>CN`Oi7;=bZa<&i^@A_BmIg)TB9q6&CM#k~XL7bPA`4kptRf!~YNRXIFfx*CGLmh{kw%IwugFMUD7u=|9+-kX z39J_^N~*8eSfs9{WSq_jhF_bf+HZ+qFG zr^RLAdcd~Il$DD*Dcd{8D(6_WU@q27M~jgK(dFSIy`Gc><8#InMYwj-usAa#Mqkd@ zj3uQEs-7t#8oIudRIR}GnH4cRsm?-&n>I!(nG3-^%L@dC%IIJ~Fd^K)*Of#S%zMu9 z;2h5@@Up#L@9#5X5=@yfxYnTI!qYMcU+&jfiZ>$q}j6#!bMV{)b-tn($}s3Pdg}rI8X5u%o`GSuAQoH>v5|C zP>I{x`uM}~k9PlCyZ^myK&%#P*8wiX+KpW}z+f}pM|C6aTm`7d``W4cuCal_WT=<$ z5WYEOlqNMwr-425&~H!}vFYVIm-6}1kOxs<1)kt7kbffl3IM;12B(!8{Da~mm=%e& z!;j6cYI~#BO5H3M(}uc~rE93!mPjghv;OyZ7dG&xrgeTPk|h06n^N~T0h0>;0pm2# A=>Px# literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/client.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/client.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8fec747d47885e6960119ab308c8063a4691a127 GIT binary patch literal 32664 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 G;r{`Q3(k)K literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/exceptions.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/exceptions.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3aee8c356de644e8964aefa1b99682161fd37ad8 GIT binary patch literal 1109 zcma))&2G~`5XX1zq;=9*6-0;=H-wZ!Yf)~ffeB}j@5-yzB8RObWDDoa=XMbzYe`a>R*><1l_2B8_@IGhk2Og@`{p+kh zYv+m?>^TeAB?~yPuV#5S<3tTjP2e}wAllKi+n^@V9Zh!|v_sU=wAY|rqJ2&G8gwTg zjBLNk4|kn2t@S`}R}9#U2W)2Kd}I{%ScH*)$*ZwaQcbVT!g5{V#o)R{-*sadEEnhx zT=(PBTa-7~Y>febe{kk91}9c?&p!j@JcHEtROqG71)Lr^=OE6VMRe*Uc{Z2g(c!}* zCyg>VNc87k2&n@k9!Up2`H*Ch6zO4-D{LGY%zTY4zGUA!mg-f!b$P=RDKZe*J1JjC z5tc=&4#u(2P(*xPWmg8})ZWb{^44;<--|OLFT`u?N47<6ALFB;1Zp)zt=0N(mav3z zoMid*zct-L6*N>_t%9hv%J8kkVkYUyLZ%RGDQbvvXh^q~L)2PsU%!|DA7^2U)E$&U zLryJ)$LVOd=#8s^Du;<0KuxFIC{z0N-zg}p<8tDksJl86j$isxo1Z4ljA6uz^aIEkBpB7|BYAq$~`T{TVv>VPU(%0MLoQYD5gmSbNN6UPpBmsBYk zqQVdf39+DdWMDyvU&4}z1*|Z^(hZS~iFa<@KIy*q-M#njy?gJz7K;T0vijg&>pe#3 zm)N8tosoqJORwX6zPFOTf~rKIUr$Nc;*Cs z@{rPq#e9C3b_lh$33DOVVb(rr)~o>u2Ug%Wt=^Egqwr2; zqh>Lmll30BJ1xR261M!1_>uLTMPa2kjPo{g_J|F6=n|w*VX+$kV>DL_lZ{t{ck$3X|6igN|P6FHph<_;DuZPsfb5kg0-jt!0hk{4=~O1)Q(2j!&|VsXxa$* zaQYFy#n2w99_M=wWl1@PloS+~BI-lUPGBc yTq!#92_=3>qBys8`nm4Yt6&ndVaou2WQ_3-RQ-+0Khf>KSs9lXOEO+dBL4%8>a$Y- literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/middleware.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/middleware.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76376fe1978774e4fc856f8ca99753c1b49ce942 GIT binary patch literal 4694 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 C%OleO literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/payload.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/payload.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a0c278951108fc091cd9b8ff324530cc211c0b67 GIT binary patch literal 2137 zcmZuzO>7%Q6rR~XJ6R_&Y1RBSYuC6*wgp>lXiCAb{m#G74j5+cU(n>TOXyf^dS z_n!SjS63&3F*12_MwSrzjV*#9wwYE6m_1T(Q|W#o%1z(%C#4*L%=K|17$HmS&rZ=Pq?f=LSPtYMG__= z%o34qqim?ks~v9Wf?h3}I&pf>mS^&1BlXVtc*Pf`o=3r2CfB};=YsL<+d2be5!LVw zY{A`UPz`CG0wXo)p`RNfUVqj-g~ zc)C4CnF)#3zLv%8#^dpSE~aPAl94XaSr!nQo-(YQPG@v0echNon!aX~uceFm>2#%P z&zj}&)RCiUD{mXGGH?2fVWkc4#d$LwJh)PI!a=WR`MqV33}0tvf~l>~AVHT#q= z7nT!s;clcU53a}~%}DgKb9c@y_52hW+u%`Tv;}%77vzO47zDh~eG3dg055P5B(}3_ zOrgsPLJNG2qhgICoYMs>uEy2){|hPM9|=KFea*XZ0TOd-l!$f!J6Lb&fHxvJKx0p%kzlhXMCwbP(M%57UEZ>(8=^*~sOJpWjDTZTE?8!{ z0!bmp4GNJ!E?=3mEde+HL7a92L-zr3x`TxI=6XP8eFEerdN#Pf-qYOEw|M%i)AhHW z_9)G0Z25R2s(#+nj0`PV_nmvr*JR0Ajg2=V<9E()gwWpjMi@owy$eRphCd2=(w$If6l7fWt-2(e`S{6;5=##X`# zWtH?FG(dy!(eNP@#Nw_3vbRcSJ8uNfjloNCm8;>xR$jqMdk{XzFg<89>)t4Y18#dR z$lH9t?eHTEfRJED7clr@G2bo^1%H^OjG3j-rhMnOlueHSW z0I9ZZkO09c$^f5nI5Od4LYZf0=#pv1OM1BqO03^n@q9VZ2V{3|cO|x~%086&qEU7` zEnBCybvCpyCnQ7*wGffQ*;l+|Y7JUP(gZ(ad*FRd7W6MXL z$jN4;7l0iZT9XepwujluL|X?5`Rde3@bIJuTM(MX(lBA;0A-M=z?a<%u=O61h9sR=OEKlwB@v6Oki zqk-7{u6tdNKlr(Ss+pPqtNoL8;nT?9ex?;zvUa0 i{S#n6hE^Yt4IX3s3+nm5PL|7h6GVk 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 HB8~koX%KpA literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/__pycache__/static_files.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/__pycache__/static_files.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f0ec07b8bc7e4ea2e3a808429e89fdc4f92bcb7 GIT binary patch literal 2177 zcma)6Pi)gx7`NjjP2yxt()3SSTD_)FDKw2K3~f}fQO2aL0;ItvO$@Da?bpO6u`~O% zG?6RyutPd_25Oi?mPG3NF-!#7d>4NFq^mO;E)((Uc6O zLTd51&P`qGVpX(4E#hHSN}{4=LoNqQE(aX0pTfJGS}C|b)pY$T#JLVr z%p1&xU*;@-4g4%0eIJQE1h|~%Ls`R=wY~3f2jB3rKVGmn<29lAdc)#~zq{@-8v!|B zaS97r$1P6n>)H?J$DJi8;^Y8jQM;8rbb=fncQhJ9mQUq-Or2$qN5JyISKu3^3ITK7 zx9+33pgP7d5-0i2)7}4L`$lHH`(NzQ$;vFnJ3?*ZExwLlFROOuD37-8UOyS?-DZI* zq`PZ5=;`3(AXT8nda>lbcjCD<);RS>*Zi^H<&ChZUFpsOjZpIks?MVT@p)ZMJZuTEMp{UGLm$SV2vPBtzfjG8=jwmzgxv7 z!7?%l{A*GK!JuL2tLs17Dk3S)dqH%CD!M`cO{A~91LOr#m`+?9c!`3V z^GNIvwMihS6{WChc)vN46^TNMMzzEIWl=HF%BtoaBg2zt0>q&sx}!iYQbb`tvk%|yo?aebsC3;}(9MGCrTEz&GyQXV6 z?^#^tn#&3=XqDYiHw!n~OAZZAlks}q>qcz;#cLR~k=}-;O9YcylNeYmLk9~QCNx3f zMif)g;2t#zyBt_uzob{HZU}3#NiV>SfYBiBb*z_?Hb6|WLDx@<=0*;#?IukbZ%?0ez|enNgr#H z2cs?3PM@kTI{gC;%kH0YQmB=(Q_~IBi4Qu7!6tWav}xIi8PBl8JsP!BInVeq!9dLN zUG-Ix35B2YgAMWFz%D=TB*vOwH2Sv|_T!2B!F$2&P<_GSqxG9x7xwr`o1bh=?efz* z^LsNF?U{?e5A4o->ZGSy3$07d3CJT9uAjUcYmVBXsk^cN#yS0o#x1*l^7+7cv$S*C zp2+{k?GC)}qy`)6_SM#{CmH+1Svz(1r>pyK9X(O)6AN}~Vf(5xd}8O=lVv-5&K^GJ zlOHSL#>6ZB{ zIkR)gP73u;o}<}4G-snZCqD4!pm4yklXLZjx@Jem_xb4NX9rL#=33TgjKJ(w?^nji z&^3aW8#-Us<<%1Y$T$vL`eT?`c)jFUmfhzE9e&7(4m= 300: + await self._reset() + try: + arg = await r.json() + except aiohttp.ClientError: + arg = None + raise exceptions.ConnectionError( + 'Unexpected status code {} in server response'.format( + r.status), arg) + try: + p = payload.Payload(encoded_payload=(await r.read()).decode( + 'utf-8')) + except ValueError: + raise exceptions.ConnectionError( + 'Unexpected response from server') from None + open_packet = p.packets[0] + if open_packet.packet_type != packet.OPEN: + raise exceptions.ConnectionError( + 'OPEN packet not returned by server') + self.logger.info( + 'Polling connection accepted with ' + str(open_packet.data)) + self.sid = open_packet.data['sid'] + self.upgrades = open_packet.data['upgrades'] + self.ping_interval = int(open_packet.data['pingInterval']) / 1000.0 + self.ping_timeout = int(open_packet.data['pingTimeout']) / 1000.0 + self.current_transport = 'polling' + self.base_url += '&sid=' + self.sid + + self.state = 'connected' + base_client.connected_clients.append(self) + await self._trigger_event('connect', run_async=False) + + for pkt in p.packets[1:]: + await self._receive_packet(pkt) + + if 'websocket' in self.upgrades and 'websocket' in self.transports: + # attempt to upgrade to websocket + if await self._connect_websocket(url, headers, engineio_path): + # upgrade to websocket succeeded, we're done here + return + + self.write_loop_task = self.start_background_task(self._write_loop) + self.read_loop_task = self.start_background_task( + self._read_loop_polling) + + async def _connect_websocket(self, url, headers, engineio_path): + """Establish or upgrade to a WebSocket connection with the server.""" + if aiohttp is None: # pragma: no cover + self.logger.error('aiohttp package not installed') + return False + websocket_url = self._get_engineio_url(url, engineio_path, + 'websocket') + if self.sid: + self.logger.info( + 'Attempting WebSocket upgrade to ' + websocket_url) + upgrade = True + websocket_url += '&sid=' + self.sid + else: + upgrade = False + self.base_url = websocket_url + self.logger.info( + 'Attempting WebSocket connection to ' + websocket_url) + + if self.http is None or self.http.closed: # pragma: no cover + self.http = aiohttp.ClientSession() + + # extract any new cookies passed in a header so that they can also be + # sent the the WebSocket route + cookies = {} + for header, value in headers.items(): + if header.lower() == 'cookie': + cookies = dict( + [cookie.split('=', 1) for cookie in value.split('; ')]) + del headers[header] + break + self.http.cookie_jar.update_cookies(cookies) + + extra_options = {'timeout': self.request_timeout} + if not self.ssl_verify: + ssl_context = ssl.create_default_context() + ssl_context.check_hostname = False + ssl_context.verify_mode = ssl.CERT_NONE + extra_options['ssl'] = ssl_context + + # combine internally generated options with the ones supplied by the + # caller. The caller's options take precedence. + headers.update(self.websocket_extra_options.pop('headers', {})) + extra_options['headers'] = headers + extra_options.update(self.websocket_extra_options) + + try: + ws = await self.http.ws_connect( + websocket_url + self._get_url_timestamp(), **extra_options) + except (aiohttp.client_exceptions.WSServerHandshakeError, + aiohttp.client_exceptions.ServerConnectionError, + aiohttp.client_exceptions.ClientConnectionError): + if upgrade: + self.logger.warning( + 'WebSocket upgrade failed: connection error') + return False + else: + raise exceptions.ConnectionError('Connection error') + if upgrade: + p = packet.Packet(packet.PING, data='probe').encode() + try: + await ws.send_str(p) + except Exception as e: # pragma: no cover + self.logger.warning( + 'WebSocket upgrade failed: unexpected send exception: %s', + str(e)) + return False + try: + p = (await ws.receive()).data + except Exception as e: # pragma: no cover + self.logger.warning( + 'WebSocket upgrade failed: unexpected recv exception: %s', + str(e)) + return False + pkt = packet.Packet(encoded_packet=p) + if pkt.packet_type != packet.PONG or pkt.data != 'probe': + self.logger.warning( + 'WebSocket upgrade failed: no PONG packet') + return False + p = packet.Packet(packet.UPGRADE).encode() + try: + await ws.send_str(p) + except Exception as e: # pragma: no cover + self.logger.warning( + 'WebSocket upgrade failed: unexpected send exception: %s', + str(e)) + return False + self.current_transport = 'websocket' + self.logger.info('WebSocket upgrade was successful') + else: + try: + p = (await ws.receive()).data + except Exception as e: # pragma: no cover + raise exceptions.ConnectionError( + 'Unexpected recv exception: ' + str(e)) + open_packet = packet.Packet(encoded_packet=p) + if open_packet.packet_type != packet.OPEN: + raise exceptions.ConnectionError('no OPEN packet') + self.logger.info( + 'WebSocket connection accepted with ' + str(open_packet.data)) + self.sid = open_packet.data['sid'] + self.upgrades = open_packet.data['upgrades'] + self.ping_interval = int(open_packet.data['pingInterval']) / 1000.0 + self.ping_timeout = int(open_packet.data['pingTimeout']) / 1000.0 + self.current_transport = 'websocket' + + self.state = 'connected' + base_client.connected_clients.append(self) + await self._trigger_event('connect', run_async=False) + + self.ws = ws + self.write_loop_task = self.start_background_task(self._write_loop) + self.read_loop_task = self.start_background_task( + self._read_loop_websocket) + return True + + async def _receive_packet(self, pkt): + """Handle incoming packets from the server.""" + packet_name = packet.packet_names[pkt.packet_type] \ + if pkt.packet_type < len(packet.packet_names) else 'UNKNOWN' + self.logger.info( + 'Received packet %s data %s', packet_name, + pkt.data if not isinstance(pkt.data, bytes) else '') + if pkt.packet_type == packet.MESSAGE: + await self._trigger_event('message', pkt.data, run_async=True) + elif pkt.packet_type == packet.PING: + await self._send_packet(packet.Packet(packet.PONG, pkt.data)) + elif pkt.packet_type == packet.CLOSE: + await self.disconnect(abort=True) + elif pkt.packet_type == packet.NOOP: + pass + else: + self.logger.error('Received unexpected packet of type %s', + pkt.packet_type) + + async def _send_packet(self, pkt): + """Queue a packet to be sent to the server.""" + if self.state != 'connected': + return + await self.queue.put(pkt) + self.logger.info( + 'Sending packet %s data %s', + packet.packet_names[pkt.packet_type], + pkt.data if not isinstance(pkt.data, bytes) else '') + + async def _send_request( + self, method, url, headers=None, body=None, + timeout=None): # pragma: no cover + if self.http is None or self.http.closed: + self.http = aiohttp.ClientSession() + http_method = getattr(self.http, method.lower()) + + try: + if not self.ssl_verify: + return await http_method( + url, headers=headers, data=body, + timeout=aiohttp.ClientTimeout(total=timeout), ssl=False) + else: + return await http_method( + url, headers=headers, data=body, + timeout=aiohttp.ClientTimeout(total=timeout)) + + except (aiohttp.ClientError, asyncio.TimeoutError) as exc: + self.logger.info('HTTP %s request to %s failed with error %s.', + method, url, exc) + return str(exc) + + async def _trigger_event(self, event, *args, **kwargs): + """Invoke an event handler.""" + run_async = kwargs.pop('run_async', False) + ret = None + if event in self.handlers: + if asyncio.iscoroutinefunction(self.handlers[event]) is True: + if run_async: + task = self.start_background_task(self.handlers[event], + *args) + task_reference_holder.add(task) + task.add_done_callback(task_reference_holder.discard) + return task + else: + try: + ret = await self.handlers[event](*args) + except asyncio.CancelledError: # pragma: no cover + pass + except: + self.logger.exception(event + ' async handler error') + if event == 'connect': + # if connect handler raised error we reject the + # connection + return False + else: + if run_async: + async def async_handler(): + return self.handlers[event](*args) + + task = self.start_background_task(async_handler) + task_reference_holder.add(task) + task.add_done_callback(task_reference_holder.discard) + return task + else: + try: + ret = self.handlers[event](*args) + except: + self.logger.exception(event + ' handler error') + if event == 'connect': + # if connect handler raised error we reject the + # connection + return False + return ret + + async def _read_loop_polling(self): + """Read packets by polling the Engine.IO server.""" + while self.state == 'connected' and self.write_loop_task: + self.logger.info( + 'Sending polling GET request to ' + self.base_url) + r = await self._send_request( + 'GET', self.base_url + self._get_url_timestamp(), + timeout=max(self.ping_interval, self.ping_timeout) + 5) + if r is None or isinstance(r, str): + self.logger.warning( + r or 'Connection refused by the server, aborting') + await self.queue.put(None) + break + if r.status < 200 or r.status >= 300: + self.logger.warning('Unexpected status code %s in server ' + 'response, aborting', r.status) + await self.queue.put(None) + break + try: + p = payload.Payload(encoded_payload=(await r.read()).decode( + 'utf-8')) + except ValueError: + self.logger.warning( + 'Unexpected packet from server, aborting') + await self.queue.put(None) + break + for pkt in p.packets: + await self._receive_packet(pkt) + + if self.write_loop_task: # pragma: no branch + self.logger.info('Waiting for write loop task to end') + await self.write_loop_task + if self.state == 'connected': + await self._trigger_event('disconnect', run_async=False) + try: + base_client.connected_clients.remove(self) + except ValueError: # pragma: no cover + pass + await self._reset() + self.logger.info('Exiting read loop task') + + async def _read_loop_websocket(self): + """Read packets from the Engine.IO WebSocket connection.""" + while self.state == 'connected': + p = None + try: + p = await asyncio.wait_for( + self.ws.receive(), + timeout=self.ping_interval + self.ping_timeout) + if not isinstance(p.data, (str, bytes)): # pragma: no cover + self.logger.warning( + 'Server sent %s packet data %s, aborting', + 'close' if p.type in [aiohttp.WSMsgType.CLOSE, + aiohttp.WSMsgType.CLOSING] + else str(p.type), str(p.data)) + await self.queue.put(None) + break # the connection is broken + p = p.data + except asyncio.TimeoutError: + self.logger.warning( + 'Server has stopped communicating, aborting') + await self.queue.put(None) + break + except aiohttp.client_exceptions.ServerDisconnectedError: + self.logger.info( + 'Read loop: WebSocket connection was closed, aborting') + await self.queue.put(None) + break + except Exception as e: + self.logger.info( + 'Unexpected error receiving packet: "%s", aborting', + str(e)) + await self.queue.put(None) + break + try: + pkt = packet.Packet(encoded_packet=p) + except Exception as e: # pragma: no cover + self.logger.info( + 'Unexpected error decoding packet: "%s", aborting', str(e)) + await self.queue.put(None) + break + await self._receive_packet(pkt) + + if self.write_loop_task: # pragma: no branch + self.logger.info('Waiting for write loop task to end') + await self.write_loop_task + if self.state == 'connected': + await self._trigger_event('disconnect', run_async=False) + try: + base_client.connected_clients.remove(self) + except ValueError: # pragma: no cover + pass + await self._reset() + self.logger.info('Exiting read loop task') + + async def _write_loop(self): + """This background task sends packages to the server as they are + pushed to the send queue. + """ + while self.state == 'connected': + # to simplify the timeout handling, use the maximum of the + # ping interval and ping timeout as timeout, with an extra 5 + # seconds grace period + timeout = max(self.ping_interval, self.ping_timeout) + 5 + packets = None + try: + packets = [await asyncio.wait_for(self.queue.get(), timeout)] + except (self.queue.Empty, asyncio.TimeoutError): + self.logger.error('packet queue is empty, aborting') + break + except asyncio.CancelledError: # pragma: no cover + break + if packets == [None]: + self.queue.task_done() + packets = [] + else: + while True: + try: + packets.append(self.queue.get_nowait()) + except self.queue.Empty: + break + if packets[-1] is None: + packets = packets[:-1] + self.queue.task_done() + break + if not packets: + # empty packet list returned -> connection closed + break + if self.current_transport == 'polling': + p = payload.Payload(packets=packets) + r = await self._send_request( + 'POST', self.base_url, body=p.encode(), + headers={'Content-Type': 'text/plain'}, + timeout=self.request_timeout) + for pkt in packets: + self.queue.task_done() + if r is None or isinstance(r, str): + self.logger.warning( + r or 'Connection refused by the server, aborting') + break + if r.status < 200 or r.status >= 300: + self.logger.warning('Unexpected status code %s in server ' + 'response, aborting', r.status) + self.write_loop_task = None + break + else: + # websocket + try: + for pkt in packets: + if pkt.binary: + await self.ws.send_bytes(pkt.encode()) + else: + await self.ws.send_str(pkt.encode()) + self.queue.task_done() + except (aiohttp.client_exceptions.ServerDisconnectedError, + BrokenPipeError, OSError): + self.logger.info( + 'Write loop: WebSocket connection was closed, ' + 'aborting') + break + self.logger.info('Exiting write loop task') diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__init__.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..59983e48eeb3520880261dd9819faa61648fc6cc GIT binary patch literal 195 zcmX@j%ge<81ZwtH=^*+sh(HIQS%4zb87dhx8U0o=6fpsLpFwJVCFy76=celC7G)$R zXQvkFyQCH;Cl;kA7VDR%CK>6MrRJ6C=VT`77gUyHn9dh<|W6c6lIpB78UEq$7kkcmc+;F6;$5hu*uC&Da}c>D`Ev&$q2;7 PAjU^#Mn=XWW*`dy&e$`E literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/_websocket_wsgi.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/_websocket_wsgi.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6990011b138e099f6033e706283257c8ba46a57f GIT binary patch literal 2163 zcmb7E&rcgi6rS;}e_?~ET?s=BSyGy?YKtjVi>ccZawvunnNp2eY0zC0D;s#+26jI_h$CZ z_rBR*dV6~i*v;A7rJn?Z{@{bIi5=%e0;h>|q+=5mQ3%Z;J@f?W!hXolDB?Pn#XtFA zLG!14#GS#(1UOAZP!a2>7}9Z3;5!sWT>uR0B49)h14i`-V5}aMV{WEkRH`O3FS zwnCgog}M3lMvnycuxv1?M%8MSP)RdY#-u8>*9@I7NtK*3C8};%B`H`d8J0unlByAi zs*YqZZy(LBR8_}VG>KF*oU%mLh~=2Xxy2;!-4z%@+_onCbf73Oe)t6ZJM=Vg11UkU zA;746d{jq!ctH-i0u<~f7@=!~Dk?28S#(84%q2HkRxRBm)Q$L2H?mUW35+*^pZL_s zm+cD4S7=!UGHCuo!ZgTGS-wUVr}9wvTHZ7k^VPajwyk$2-k!=c!y#`~AzdvImM2!p zu!v#jRaUn&MW+T-!SV_$XCA*wjg^dvYTb<~ieVX!qO9jGX~9G{8i&%@D*zj)l^NO+ zKZ~`ljc$p*#a$O))f?q~?618d+VY@h~O?kX^dAoLynf)gF= z4OzU73)VpUoi}^}jaZIc2*YsM)BX8*9j}ZdM0=dx?)-ko*~AT@faK7E8!N3^hGtVs zj=KHK6Uj>k-AKXfEseoCH&kOZ${n#{>%{FXICga&ROksx7AddWjY8iHYFlm}b5!am zl(4F8G2#l8I6?O*uZZ_WQ%&>gzW7m|%jN+#&~f_4QCdDs%irHROyB$A;nBNy58;=- z2i=Oc`qDe)?edq-r`DFxN~CtCx2Jbzwr9S&{VehNar*kx{6TWGl}c~*&=l;Z1wDfS z@0!=oC2*R&SMa=Om-UujyCRn>A|P+7O)8ZDdV?d zb7&ZSGxEN0PE7%wTt)wn&MqbYiA({b$DpM1F;D zTuu*L;$IBh!z(r3b4mSbzkf&Y$K5&*P2mWUg zz!UUWNC?N;u~7I%I~ERS+I^vLt{oG@xs#+A&iadaI;h6u#oOZzn0UFb8=LXV`+&X) Z0e%4)&xNyL{5u->J2HZ^Z3N)0`4_tm(Te~8 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/aiohttp.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/aiohttp.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fded1f17a53fc0edfb9a44ed82209eac1947bf82 GIT binary patch literal 5772 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/eventlet.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/eventlet.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f7d4ce941aef1733977353677f5f7ef6b2f505a9 GIT binary patch literal 2969 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 D5z@cK literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/gevent_uwsgi.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/gevent_uwsgi.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0f4b8ab2addcce11254d319c709ae91257884fab GIT binary patch literal 7477 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 ZdfR6gilOkecUIo{DpVD4z31iU`5%W2Q=k9< literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/sanic.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/sanic.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..42c354f1db78a3e3586c32a4aed01650b2f535f9 GIT binary patch literal 6716 zcmb6-ZEPDyb~D^veuxzHK~b_qSz3KqHl0|q9i5FjIwh(t%R+2Qk?8YTXuC&o*A``x z%bQ(U5kn=4WAy0O2g}IeB=@ecojV}O`3^`?pbZMNsQ3QSW#eb+H!B_^embIM7H>by#(s#F)$Ueyh?&p}3r>bXkPDy{mS zU~`}Ht6r^2^J+fL$t2CM`hG4=)htkzmZ2`9xw;9fqr^cpw<_JE_DGn4sAAG%&vu?% z|D$>Gj&PpL)6xhRP|zt6{!ZvURqhQ}{~j4c!qjrlv80hnCQN{Rr=rpE3C+mpX+wi{ z-8pS~QjcHK%yFihdR$Lh!a{5zURpO_14;qcYQeIHwsfPioG9eoday^-G$H)4~e2&CGd~XYb{$uwV(m z&JvNACyJ*D-f*h~ymfc2fw zjChP)j2V3}&EdYwTKaNdGBMqkS%4*`U+X<|xX(zK+JOv^$1Z9{Uzv4Z%vear6_q7m zMx)P&r4#Yq%!1{MGc9JqE>QNY0j8~mzi|?(B~tVg$^D}-2eQ0uf%!LkpOStAUO(j z6)k;{?jx#-rn`)vGDlcd4^qP!w7y8W=*qc(VlPstbpY+-w8A6_hqL+Z-ph<#(hTlF!1(4; zS{j^8CT1AmTuhzgOI|>>odQFr#J$R#VGm3p;YBU2F|ao9b>}8WM&-Dk%7AkNuK}L$ za)N=EQWM-?#@K@GmEv0$UiROcEr4Ai8kwRhnR1}TObM!}3RmHtS#X4mj&{fBeIF$ zXW$+)Hk+`+5)CbRfuXDoZa62S+n*@NFkI5+}~j~H)3 z_21-ckWEc6|6ZYC*UIUernUoiLdA;4Z-}WqC|qt*m0-nPS1meF!p!d&fUs= zdh*ke2krexS_m}cPyLU9e)YVxZo7arzk(1izV$I z)&?V3Csdyiekk^yYImv`LvPXze|{reB~KjGv;V2nFcvdbIo#!*8D*o{TDIhNGv(PFOx@O`KOIqZ6Z% z5sO%^iJ^1K*@@8#gYk*6=-BbG(^(0FxIW7}F??n$I;;$xI5Cm+96Efo_aOWZRq*3u z6H$vEw7jJSM25}`R~p#)tlGY)OWq~xJ3bbP4o9K~qUXnlt#V7jR@PtcJ3Sm3iJr2` zZN+Y9UAQJ?k73aR7F8_zs@2Fb-&anKO~AHK44+W=1}t&LG&9*6E+mLd6(c^Qr8LVk zJ`_Erj7Cn5!5WWGjE+YYTyVI?a_ZBwTHIu4fR+G5EOA;_7c9Y8Ff6BGs&I&w(+;C7 z34%1XV7W?XX}MJTGv_$ZeGhsJkd5p(UTP)8U zODLHbGY!jCa-f!bMrB-QEe}GMW63$-aYzN%}H)@8S&Zoclz%tE`3ki_M5^A)dzNcZ(r}TM;&jyAf_fc)r+vdG~U-5D2Xd-W*&HbmiRzZ(#Yohu%Gfp1%CZ za%9cdRq!+o>h*fRG}0HIaLv97p3d%xe}Zc0pc7m=D7ZfNVdeb zj+|sxvM;!FTtKp;ROaA3%5iT_{Iztiv=4}4oZ0C1D5e~KK(3X>)QagDmcVd?mC{Yw zw&PL?2I(93syvPX->=ybNyK)$zPO$?ArLxXE`Yg$R7hB4e+(Z;DeN8vd(ix2=A6M! zaSBUH>hs_YaFvz-nIHICp7^@h_W{MJcmTo1IjfRyP%tcF=MY6_3>3&V6XdY-Z=4}EP#5Ag?|RuSK>)pMT@JZkT}bL5kOy92)%{JdkW ztAD-yJ746U3eV5DbHd;} z49F?xF^Ap~fX>5(DQl2Wnn}&vYsiUICJA0Y4X4MmZxr~pM+dxoxsllW!enb}3_(K0BBoe4_{rp~2siA@6)i$k?7TH^6Ww!X5*N}OmQB?cJ~ z3pKUn#p}L8V=H{TgjISZNf?wAIeIr2@MD2{kZ4mw-& zBA4=dC&^KA{W$z(3|GUB2s;AAsC4`?%;?Otd~o|JpkVgPQvhBa?8glSkIt9@yJIR0 z;^zANz$`)0FM&V6sMqd_0A#t#jChoZ8dXUUAT>!sg0SsaZQMIBl3TJJ<<>W^_N~?L z&$|kNmW@F7TA+I)aA+-XXg%;6+%=)DjnL7x(9thk>!CL{f^Wj{S3NE%gTMYp@>+7W zf88%{xa9|Kxlj|h@$R*EZ@ho){q-6|fUP$U(Xa8E?s#T&z{FSjhX(22(V=7F-**Fa zKSYNH#QUx72oF%Gx4mZIS$+ur%_vl*1mvYD#s8;8J9PwJ+whzuo>FuH+u+ z9iIrflnpdCTbwKfV7BJDfpEGH0BK-qW{VMoF?(%x!{4^%Z?gsR&@J1KHCNj9(L1z9 zyzAUYU&ycc_Pz&fzU}sM^qW=p8#V~(WLkyY^4tkt;S2+xw9tS{io?*sXZ_E2iUY0! z?uCus(68yM7uWqg8}6Qm?w-;{+r#uO-79|V3~xV2v_ihoUjguKH(Iu?o#zPeSI=*C z`uz2@{90kOZ0pAugqKQxm09r!d=G2OEQ&|u8Y}EAR z#YZ*GtKGkpep}P?sG)7u{N?0t8^Vw3n?DNY$H3b1Ua+v*z0VAEN>|#30-$F@b>iJa z07b$c)(vQe=|1a$%5o`+s>c<@&M+?_9#xy4IzzX>_F{z(0o;$UA0UKP8vce1)m8Eb zhakD1xCN=@NtH|Lcv4THa#CsUrc;s{?7=?($|z*JE*|eBbp8&?<9{AYSe}a83)iya zKy3LS$$@v*UPwOR>Jkv;FQ;myCILhjU_>N z1`$$?&7(48$LiRdFp%%saw>cSJH%qS2kgv!kfBneqcDC7RZ*aneo3mnA{|B1LwA2A zzEX6E(vh#+V^8X>OeDT0d<{PGJ9l+nyYBlB_jmA7_{jf)hjj;_hwkQ4Sz%Y} xLooNk^2cgeK?sU4P&;Ixlu;ct=_14i!gzR$JI~!&XJ*&;X0;6u z214$ktV7tLLkBO>r9=NkhZ2I8XPr8AGZd0ey_s7=3T$)kvX!EuN0O@ zIG3NfUpV=vbnF~l7RFNnmp}y3k~U!xIcP((Qk(DyS#ll>iD#y4;#Y!)B}#0kAc$)p zRao8PJGdgmE3^$^JKIRD!7~|P4Y{x;?TD_9o)mW!7E_gO$7&FlshK7dL{}#+r#V4juOSXVY%_+hPqS$8U zDp?paS4gm8dhUW*t%s#ba6NZz%w%pzu2x04T_nsTLD3C}TQO}`4+_|!?h2vI3}duz zP|Q{9G%cn*9ym!uu60#Sq}W9vj@IG3rZ+lvwZYdTU$pVJqr2MphyJhH_<_iRp+xWk z+b0aNO%1B-f4ra_v^a z&uuy^+z2_F6=FYy5ZZ&x9`x)%*AKXNs7h$!#f@*-;oa=;AqZzb1KpRJdf(Q3W4@Uk g+@5?n+0@T(;RbH@jx_b&EvsSu);l_-Cu%(JAF)*ldjJ3c literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/tornado.cpython-312.pyc b/venv/lib/python3.12/site-packages/engineio/async_drivers/__pycache__/tornado.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..665794241a9fe8ccfa6207df491c9909815d1782 GIT binary patch literal 9950 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 CnYNk$ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/_websocket_wsgi.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/_websocket_wsgi.py new file mode 100644 index 0000000..f30f8ca --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/_websocket_wsgi.py @@ -0,0 +1,34 @@ +import simple_websocket + + +class SimpleWebSocketWSGI: # pragma: no cover + """ + This wrapper class provides a threading WebSocket interface that is + compatible with eventlet's implementation. + """ + def __init__(self, handler, server, **kwargs): + self.app = handler + self.server_args = kwargs + + def __call__(self, environ, start_response): + self.ws = simple_websocket.Server(environ, **self.server_args) + ret = self.app(self) + if self.ws.mode == 'gunicorn': + raise StopIteration() + return ret + + def close(self): + if self.ws.connected: + self.ws.close() + + def send(self, message): + try: + return self.ws.send(message) + except simple_websocket.ConnectionClosed: + raise IOError() + + def wait(self): + try: + return self.ws.receive() + except simple_websocket.ConnectionClosed: + return None diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/aiohttp.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/aiohttp.py new file mode 100644 index 0000000..a68d309 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/aiohttp.py @@ -0,0 +1,127 @@ +import asyncio +import sys +from urllib.parse import urlsplit + +from aiohttp.web import Response, WebSocketResponse + + +def create_route(app, engineio_server, engineio_endpoint): + """This function sets up the engine.io endpoint as a route for the + application. + + Note that both GET and POST requests must be hooked up on the engine.io + endpoint. + """ + app.router.add_get(engineio_endpoint, engineio_server.handle_request) + app.router.add_post(engineio_endpoint, engineio_server.handle_request) + app.router.add_route('OPTIONS', engineio_endpoint, + engineio_server.handle_request) + + +def translate_request(request): + """This function takes the arguments passed to the request handler and + uses them to generate a WSGI compatible environ dictionary. + """ + message = request._message + payload = request._payload + + uri_parts = urlsplit(message.path) + environ = { + 'wsgi.input': payload, + 'wsgi.errors': sys.stderr, + 'wsgi.version': (1, 0), + 'wsgi.async': True, + 'wsgi.multithread': False, + 'wsgi.multiprocess': False, + 'wsgi.run_once': False, + 'SERVER_SOFTWARE': 'aiohttp', + 'REQUEST_METHOD': message.method, + 'QUERY_STRING': uri_parts.query or '', + 'RAW_URI': message.path, + 'SERVER_PROTOCOL': 'HTTP/%s.%s' % message.version, + 'REMOTE_ADDR': '127.0.0.1', + 'REMOTE_PORT': '0', + 'SERVER_NAME': 'aiohttp', + 'SERVER_PORT': '0', + 'aiohttp.request': request + } + + for hdr_name, hdr_value in message.headers.items(): + hdr_name = hdr_name.upper() + if hdr_name == 'CONTENT-TYPE': + environ['CONTENT_TYPE'] = hdr_value + continue + elif hdr_name == 'CONTENT-LENGTH': + environ['CONTENT_LENGTH'] = hdr_value + continue + + key = 'HTTP_%s' % hdr_name.replace('-', '_') + if key in environ: + hdr_value = '%s,%s' % (environ[key], hdr_value) + + environ[key] = hdr_value + + environ['wsgi.url_scheme'] = environ.get('HTTP_X_FORWARDED_PROTO', 'http') + + path_info = uri_parts.path + + environ['PATH_INFO'] = path_info + environ['SCRIPT_NAME'] = '' + + return environ + + +def make_response(status, headers, payload, environ): + """This function generates an appropriate response object for this async + mode. + """ + return Response(body=payload, status=int(status.split()[0]), + headers=headers) + + +class WebSocket(object): # pragma: no cover + """ + This wrapper class provides a aiohttp WebSocket interface that is + somewhat compatible with eventlet's implementation. + """ + def __init__(self, handler, server): + self.handler = handler + self._sock = None + + async def __call__(self, environ): + request = environ['aiohttp.request'] + self._sock = WebSocketResponse(max_msg_size=0) + await self._sock.prepare(request) + + self.environ = environ + await self.handler(self) + return self._sock + + async def close(self): + await self._sock.close() + + async def send(self, message): + if isinstance(message, bytes): + f = self._sock.send_bytes + else: + f = self._sock.send_str + if asyncio.iscoroutinefunction(f): + await f(message) + else: + f(message) + + async def wait(self): + msg = await self._sock.receive() + if not isinstance(msg.data, bytes) and \ + not isinstance(msg.data, str): + raise IOError() + return msg.data + + +_async = { + 'asyncio': True, + 'create_route': create_route, + 'translate_request': translate_request, + 'make_response': make_response, + 'websocket': WebSocket, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/asgi.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/asgi.py new file mode 100644 index 0000000..cd1dd0e --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/asgi.py @@ -0,0 +1,275 @@ +import os +import sys +import asyncio + +from engineio.static_files import get_static_file + + +class ASGIApp: + """ASGI application middleware for Engine.IO. + + This middleware dispatches traffic to an Engine.IO application. It can + also serve a list of static files to the client, or forward unrelated + HTTP traffic to another ASGI application. + + :param engineio_server: The Engine.IO server. Must be an instance of the + ``engineio.AsyncServer`` class. + :param static_files: A dictionary with static file mapping rules. See the + documentation for details on this argument. + :param other_asgi_app: A separate ASGI app that receives all other traffic. + :param engineio_path: The endpoint where the Engine.IO application should + be installed. The default value is appropriate for + most cases. With a value of ``None``, all incoming + traffic is directed to the Engine.IO server, with the + assumption that routing, if necessary, is handled by + a different layer. When this option is set to + ``None``, ``static_files`` and ``other_asgi_app`` are + ignored. + :param on_startup: function to be called on application startup; can be + coroutine + :param on_shutdown: function to be called on application shutdown; can be + coroutine + + Example usage:: + + import engineio + import uvicorn + + eio = engineio.AsyncServer() + app = engineio.ASGIApp(eio, static_files={ + '/': {'content_type': 'text/html', 'filename': 'index.html'}, + '/index.html': {'content_type': 'text/html', + 'filename': 'index.html'}, + }) + uvicorn.run(app, '127.0.0.1', 5000) + """ + def __init__(self, engineio_server, other_asgi_app=None, + static_files=None, engineio_path='engine.io', + on_startup=None, on_shutdown=None): + self.engineio_server = engineio_server + self.other_asgi_app = other_asgi_app + self.engineio_path = engineio_path + if self.engineio_path is not None: + if not self.engineio_path.startswith('/'): + self.engineio_path = '/' + self.engineio_path + if not self.engineio_path.endswith('/'): + self.engineio_path += '/' + self.static_files = static_files or {} + self.on_startup = on_startup + self.on_shutdown = on_shutdown + + async def __call__(self, scope, receive, send): + if scope['type'] == 'lifespan': + await self.lifespan(scope, receive, send) + elif scope['type'] in ['http', 'websocket'] and ( + self.engineio_path is None + or scope['path'].startswith(self.engineio_path)): + await self.engineio_server.handle_request(scope, receive, send) + else: + static_file = get_static_file(scope['path'], self.static_files) \ + if scope['type'] == 'http' and self.static_files else None + if static_file and os.path.exists(static_file['filename']): + await self.serve_static_file(static_file, receive, send) + elif self.other_asgi_app is not None: + await self.other_asgi_app(scope, receive, send) + else: + await self.not_found(receive, send) + + async def serve_static_file(self, static_file, receive, + send): # pragma: no cover + event = await receive() + if event['type'] == 'http.request': + with open(static_file['filename'], 'rb') as f: + payload = f.read() + await send({'type': 'http.response.start', + 'status': 200, + 'headers': [(b'Content-Type', static_file[ + 'content_type'].encode('utf-8'))]}) + await send({'type': 'http.response.body', + 'body': payload}) + + async def lifespan(self, scope, receive, send): + if self.other_asgi_app is not None and self.on_startup is None and \ + self.on_shutdown is None: + # let the other ASGI app handle lifespan events + await self.other_asgi_app(scope, receive, send) + return + + while True: + event = await receive() + if event['type'] == 'lifespan.startup': + if self.on_startup: + try: + await self.on_startup() \ + if asyncio.iscoroutinefunction(self.on_startup) \ + else self.on_startup() + except: + await send({'type': 'lifespan.startup.failed'}) + return + await send({'type': 'lifespan.startup.complete'}) + elif event['type'] == 'lifespan.shutdown': + if self.on_shutdown: + try: + await self.on_shutdown() \ + if asyncio.iscoroutinefunction(self.on_shutdown) \ + else self.on_shutdown() + except: + await send({'type': 'lifespan.shutdown.failed'}) + return + await send({'type': 'lifespan.shutdown.complete'}) + return + + async def not_found(self, receive, send): + """Return a 404 Not Found error to the client.""" + await send({'type': 'http.response.start', + 'status': 404, + 'headers': [(b'Content-Type', b'text/plain')]}) + await send({'type': 'http.response.body', + 'body': b'Not Found'}) + + +async def translate_request(scope, receive, send): + class AwaitablePayload(object): # pragma: no cover + def __init__(self, payload): + self.payload = payload or b'' + + async def read(self, length=None): + if length is None: + r = self.payload + self.payload = b'' + else: + r = self.payload[:length] + self.payload = self.payload[length:] + return r + + event = await receive() + payload = b'' + if event['type'] == 'http.request': + payload += event.get('body') or b'' + while event.get('more_body'): + event = await receive() + if event['type'] == 'http.request': + payload += event.get('body') or b'' + elif event['type'] == 'websocket.connect': + pass + else: + return {} + + raw_uri = scope['path'].encode('utf-8') + if 'query_string' in scope and scope['query_string']: + raw_uri += b'?' + scope['query_string'] + environ = { + 'wsgi.input': AwaitablePayload(payload), + 'wsgi.errors': sys.stderr, + 'wsgi.version': (1, 0), + 'wsgi.async': True, + 'wsgi.multithread': False, + 'wsgi.multiprocess': False, + 'wsgi.run_once': False, + 'SERVER_SOFTWARE': 'asgi', + 'REQUEST_METHOD': scope.get('method', 'GET'), + 'PATH_INFO': scope['path'], + 'QUERY_STRING': scope.get('query_string', b'').decode('utf-8'), + 'RAW_URI': raw_uri.decode('utf-8'), + 'SCRIPT_NAME': '', + 'SERVER_PROTOCOL': 'HTTP/1.1', + 'REMOTE_ADDR': '127.0.0.1', + 'REMOTE_PORT': '0', + 'SERVER_NAME': 'asgi', + 'SERVER_PORT': '0', + 'asgi.receive': receive, + 'asgi.send': send, + 'asgi.scope': scope, + } + + for hdr_name, hdr_value in scope['headers']: + hdr_name = hdr_name.upper().decode('utf-8') + hdr_value = hdr_value.decode('utf-8') + if hdr_name == 'CONTENT-TYPE': + environ['CONTENT_TYPE'] = hdr_value + continue + elif hdr_name == 'CONTENT-LENGTH': + environ['CONTENT_LENGTH'] = hdr_value + continue + + key = 'HTTP_%s' % hdr_name.replace('-', '_') + if key in environ: + hdr_value = '%s,%s' % (environ[key], hdr_value) + + environ[key] = hdr_value + + environ['wsgi.url_scheme'] = environ.get('HTTP_X_FORWARDED_PROTO', 'http') + return environ + + +async def make_response(status, headers, payload, environ): + headers = [(h[0].encode('utf-8'), h[1].encode('utf-8')) for h in headers] + if environ['asgi.scope']['type'] == 'websocket': + if status.startswith('200 '): + await environ['asgi.send']({'type': 'websocket.accept', + 'headers': headers}) + else: + if payload: + reason = payload.decode('utf-8') \ + if isinstance(payload, bytes) else str(payload) + await environ['asgi.send']({'type': 'websocket.close', + 'reason': reason}) + else: + await environ['asgi.send']({'type': 'websocket.close'}) + return + + await environ['asgi.send']({'type': 'http.response.start', + 'status': int(status.split(' ')[0]), + 'headers': headers}) + await environ['asgi.send']({'type': 'http.response.body', + 'body': payload}) + + +class WebSocket(object): # pragma: no cover + """ + This wrapper class provides an asgi WebSocket interface that is + somewhat compatible with eventlet's implementation. + """ + def __init__(self, handler, server): + self.handler = handler + self.asgi_receive = None + self.asgi_send = None + + async def __call__(self, environ): + self.asgi_receive = environ['asgi.receive'] + self.asgi_send = environ['asgi.send'] + await self.asgi_send({'type': 'websocket.accept'}) + await self.handler(self) + return '' # send nothing as response + + async def close(self): + try: + await self.asgi_send({'type': 'websocket.close'}) + except Exception: + # if the socket is already close we don't care + pass + + async def send(self, message): + msg_bytes = None + msg_text = None + if isinstance(message, bytes): + msg_bytes = message + else: + msg_text = message + await self.asgi_send({'type': 'websocket.send', + 'bytes': msg_bytes, + 'text': msg_text}) + + async def wait(self): + event = await self.asgi_receive() + if event['type'] != 'websocket.receive': + raise IOError() + return event.get('bytes') or event.get('text') + + +_async = { + 'asyncio': True, + 'translate_request': translate_request, + 'make_response': make_response, + 'websocket': WebSocket, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/eventlet.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/eventlet.py new file mode 100644 index 0000000..4dfdc1e --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/eventlet.py @@ -0,0 +1,54 @@ +from __future__ import absolute_import + +from eventlet.green.threading import Event +from eventlet import queue, sleep, spawn +from eventlet.websocket import WebSocketWSGI as _WebSocketWSGI + + +class EventletThread: # pragma: no cover + """Thread class that uses eventlet green threads. + + Eventlet's own Thread class has a strange bug that causes _DummyThread + objects to be created and leaked, since they are never garbage collected. + """ + def __init__(self, target, args=None, kwargs=None): + self.target = target + self.args = args or () + self.kwargs = kwargs or {} + self.g = None + + def start(self): + self.g = spawn(self.target, *self.args, **self.kwargs) + + def join(self): + if self.g: + return self.g.wait() + + +class WebSocketWSGI(_WebSocketWSGI): + def __init__(self, handler, server): + try: + super().__init__( + handler, max_frame_length=int(server.max_http_buffer_size)) + except TypeError: # pragma: no cover + # older versions of eventlet do not support a max frame size + super().__init__(handler) + self._sock = None + + def __call__(self, environ, start_response): + if 'eventlet.input' not in environ: + raise RuntimeError('You need to use the eventlet server. ' + 'See the Deployment section of the ' + 'documentation for more information.') + self._sock = environ['eventlet.input'].get_socket() + return super().__call__(environ, start_response) + + +_async = { + 'thread': EventletThread, + 'queue': queue.Queue, + 'queue_empty': queue.Empty, + 'event': Event, + 'websocket': WebSocketWSGI, + 'sleep': sleep, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/gevent.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/gevent.py new file mode 100644 index 0000000..db284a5 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/gevent.py @@ -0,0 +1,83 @@ +import gevent +from gevent import queue +from gevent.event import Event +try: + # use gevent-websocket if installed + import geventwebsocket # noqa + SimpleWebSocketWSGI = None +except ImportError: # pragma: no cover + # fallback to simple_websocket when gevent-websocket is not installed + from engineio.async_drivers._websocket_wsgi import SimpleWebSocketWSGI + + +class Thread(gevent.Greenlet): # pragma: no cover + """ + This wrapper class provides gevent Greenlet interface that is compatible + with the standard library's Thread class. + """ + def __init__(self, target, args=[], kwargs={}): + super().__init__(target, *args, **kwargs) + + def _run(self): + return self.run() + + +if SimpleWebSocketWSGI is not None: + class WebSocketWSGI(SimpleWebSocketWSGI): # pragma: no cover + """ + This wrapper class provides a gevent WebSocket interface that is + compatible with eventlet's implementation, using the simple-websocket + package. + """ + def __init__(self, handler, server): + # to avoid the requirement that the standard library is + # monkey-patched, here we pass the gevent versions of the + # concurrency and networking classes required by simple-websocket + import gevent.event + import gevent.selectors + super().__init__(handler, server, + thread_class=Thread, + event_class=gevent.event.Event, + selector_class=gevent.selectors.DefaultSelector) +else: + class WebSocketWSGI: # pragma: no cover + """ + This wrapper class provides a gevent WebSocket interface that is + compatible with eventlet's implementation, using the gevent-websocket + package. + """ + def __init__(self, handler, server): + self.app = handler + + def __call__(self, environ, start_response): + if 'wsgi.websocket' not in environ: + raise RuntimeError('The gevent-websocket server is not ' + 'configured appropriately. ' + 'See the Deployment section of the ' + 'documentation for more information.') + self._sock = environ['wsgi.websocket'] + self.environ = environ + self.version = self._sock.version + self.path = self._sock.path + self.origin = self._sock.origin + self.protocol = self._sock.protocol + return self.app(self) + + def close(self): + return self._sock.close() + + def send(self, message): + return self._sock.send(message) + + def wait(self): + return self._sock.receive() + + +_async = { + 'thread': Thread, + 'queue': queue.JoinableQueue, + 'queue_empty': queue.Empty, + 'event': Event, + 'websocket': WebSocketWSGI, + 'sleep': gevent.sleep, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/gevent_uwsgi.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/gevent_uwsgi.py new file mode 100644 index 0000000..34683ed --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/gevent_uwsgi.py @@ -0,0 +1,168 @@ +import gevent +from gevent import queue +from gevent.event import Event +from gevent import selectors +import uwsgi +_websocket_available = hasattr(uwsgi, 'websocket_handshake') + + +class Thread(gevent.Greenlet): # pragma: no cover + """ + This wrapper class provides gevent Greenlet interface that is compatible + with the standard library's Thread class. + """ + def __init__(self, target, args=[], kwargs={}): + super().__init__(target, *args, **kwargs) + + def _run(self): + return self.run() + + +class uWSGIWebSocket(object): # pragma: no cover + """ + This wrapper class provides a uWSGI WebSocket interface that is + compatible with eventlet's implementation. + """ + def __init__(self, handler, server): + self.app = handler + self._sock = None + self.received_messages = [] + + def __call__(self, environ, start_response): + self._sock = uwsgi.connection_fd() + self.environ = environ + + uwsgi.websocket_handshake() + + self._req_ctx = None + if hasattr(uwsgi, 'request_context'): + # uWSGI >= 2.1.x with support for api access across-greenlets + self._req_ctx = uwsgi.request_context() + else: + # use event and queue for sending messages + self._event = Event() + self._send_queue = queue.Queue() + + # spawn a select greenlet + def select_greenlet_runner(fd, event): + """Sets event when data becomes available to read on fd.""" + sel = selectors.DefaultSelector() + sel.register(fd, selectors.EVENT_READ) + try: + while True: + sel.select() + event.set() + except gevent.GreenletExit: + sel.unregister(fd) + self._select_greenlet = gevent.spawn( + select_greenlet_runner, + self._sock, + self._event) + + self.app(self) + uwsgi.disconnect() + return '' # send nothing as response + + def close(self): + """Disconnects uWSGI from the client.""" + if self._req_ctx is None: + # better kill it here in case wait() is not called again + self._select_greenlet.kill() + self._event.set() + + def _send(self, msg): + """Transmits message either in binary or UTF-8 text mode, + depending on its type.""" + if isinstance(msg, bytes): + method = uwsgi.websocket_send_binary + else: + method = uwsgi.websocket_send + if self._req_ctx is not None: + method(msg, request_context=self._req_ctx) + else: + method(msg) + + def _decode_received(self, msg): + """Returns either bytes or str, depending on message type.""" + if not isinstance(msg, bytes): + # already decoded - do nothing + return msg + # only decode from utf-8 if message is not binary data + type = ord(msg[0:1]) + if type >= 48: # no binary + return msg.decode('utf-8') + # binary message, don't try to decode + return msg + + def send(self, msg): + """Queues a message for sending. Real transmission is done in + wait method. + Sends directly if uWSGI version is new enough.""" + if self._req_ctx is not None: + self._send(msg) + else: + self._send_queue.put(msg) + self._event.set() + + def wait(self): + """Waits and returns received messages. + If running in compatibility mode for older uWSGI versions, + it also sends messages that have been queued by send(). + A return value of None means that connection was closed. + This must be called repeatedly. For uWSGI < 2.1.x it must + be called from the main greenlet.""" + while True: + if self._req_ctx is not None: + try: + msg = uwsgi.websocket_recv(request_context=self._req_ctx) + except IOError: # connection closed + self.close() + return None + return self._decode_received(msg) + else: + if self.received_messages: + return self.received_messages.pop(0) + + # we wake up at least every 3 seconds to let uWSGI + # do its ping/ponging + event_set = self._event.wait(timeout=3) + if event_set: + self._event.clear() + # maybe there is something to send + msgs = [] + while True: + try: + msgs.append(self._send_queue.get(block=False)) + except gevent.queue.Empty: + break + for msg in msgs: + try: + self._send(msg) + except IOError: + self.close() + return None + # maybe there is something to receive, if not, at least + # ensure uWSGI does its ping/ponging + while True: + try: + msg = uwsgi.websocket_recv_nb() + except IOError: # connection closed + self.close() + return None + if msg: # message available + self.received_messages.append( + self._decode_received(msg)) + else: + break + if self.received_messages: + return self.received_messages.pop(0) + + +_async = { + 'thread': Thread, + 'queue': queue.JoinableQueue, + 'queue_empty': queue.Empty, + 'event': Event, + 'websocket': uWSGIWebSocket if _websocket_available else None, + 'sleep': gevent.sleep, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/sanic.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/sanic.py new file mode 100644 index 0000000..fe351ae --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/sanic.py @@ -0,0 +1,149 @@ +import sys +from urllib.parse import urlsplit + +try: # pragma: no cover + from sanic.response import HTTPResponse + try: + from sanic.server.protocols.websocket_protocol import WebSocketProtocol + except ImportError: + print('yay') + from sanic.websocket import WebSocketProtocol +except ImportError: + HTTPResponse = None + WebSocketProtocol = None + + +def create_route(app, engineio_server, engineio_endpoint): # pragma: no cover + """This function sets up the engine.io endpoint as a route for the + application. + + Note that both GET and POST requests must be hooked up on the engine.io + endpoint. + """ + app.add_route(engineio_server.handle_request, engineio_endpoint, + methods=['GET', 'POST', 'OPTIONS']) + try: + app.enable_websocket() + except AttributeError: + # ignore, this version does not support websocket + pass + + +def translate_request(request): # pragma: no cover + """This function takes the arguments passed to the request handler and + uses them to generate a WSGI compatible environ dictionary. + """ + class AwaitablePayload(object): + def __init__(self, payload): + self.payload = payload or b'' + + async def read(self, length=None): + if length is None: + r = self.payload + self.payload = b'' + else: + r = self.payload[:length] + self.payload = self.payload[length:] + return r + + uri_parts = urlsplit(request.url) + environ = { + 'wsgi.input': AwaitablePayload(request.body), + 'wsgi.errors': sys.stderr, + 'wsgi.version': (1, 0), + 'wsgi.async': True, + 'wsgi.multithread': False, + 'wsgi.multiprocess': False, + 'wsgi.run_once': False, + 'SERVER_SOFTWARE': 'sanic', + 'REQUEST_METHOD': request.method, + 'QUERY_STRING': uri_parts.query or '', + 'RAW_URI': request.url, + 'SERVER_PROTOCOL': 'HTTP/' + request.version, + 'REMOTE_ADDR': '127.0.0.1', + 'REMOTE_PORT': '0', + 'SERVER_NAME': 'sanic', + 'SERVER_PORT': '0', + 'sanic.request': request + } + + for hdr_name, hdr_value in request.headers.items(): + hdr_name = hdr_name.upper() + if hdr_name == 'CONTENT-TYPE': + environ['CONTENT_TYPE'] = hdr_value + continue + elif hdr_name == 'CONTENT-LENGTH': + environ['CONTENT_LENGTH'] = hdr_value + continue + + key = 'HTTP_%s' % hdr_name.replace('-', '_') + if key in environ: + hdr_value = '%s,%s' % (environ[key], hdr_value) + + environ[key] = hdr_value + + environ['wsgi.url_scheme'] = environ.get('HTTP_X_FORWARDED_PROTO', 'http') + + path_info = uri_parts.path + + environ['PATH_INFO'] = path_info + environ['SCRIPT_NAME'] = '' + + return environ + + +def make_response(status, headers, payload, environ): # pragma: no cover + """This function generates an appropriate response object for this async + mode. + """ + headers_dict = {} + content_type = None + for h in headers: + if h[0].lower() == 'content-type': + content_type = h[1] + else: + headers_dict[h[0]] = h[1] + return HTTPResponse(body=payload, content_type=content_type, + status=int(status.split()[0]), headers=headers_dict) + + +class WebSocket(object): # pragma: no cover + """ + This wrapper class provides a sanic WebSocket interface that is + somewhat compatible with eventlet's implementation. + """ + def __init__(self, handler, server): + self.handler = handler + self.server = server + self._sock = None + + async def __call__(self, environ): + request = environ['sanic.request'] + protocol = request.transport.get_protocol() + self._sock = await protocol.websocket_handshake(request) + + self.environ = environ + await self.handler(self) + return self.server._ok() + + async def close(self): + await self._sock.close() + + async def send(self, message): + await self._sock.send(message) + + async def wait(self): + data = await self._sock.recv() + if not isinstance(data, bytes) and \ + not isinstance(data, str): + raise IOError() + return data + + +_async = { + 'asyncio': True, + 'create_route': create_route, + 'translate_request': translate_request, + 'make_response': make_response, + 'websocket': WebSocket if WebSocketProtocol else None, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/threading.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/threading.py new file mode 100644 index 0000000..1615579 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/threading.py @@ -0,0 +1,19 @@ +import queue +import threading +import time +from engineio.async_drivers._websocket_wsgi import SimpleWebSocketWSGI + + +class DaemonThread(threading.Thread): # pragma: no cover + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs, daemon=True) + + +_async = { + 'thread': DaemonThread, + 'queue': queue.Queue, + 'queue_empty': queue.Empty, + 'event': threading.Event, + 'websocket': SimpleWebSocketWSGI, + 'sleep': time.sleep, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_drivers/tornado.py b/venv/lib/python3.12/site-packages/engineio/async_drivers/tornado.py new file mode 100644 index 0000000..2c70135 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_drivers/tornado.py @@ -0,0 +1,182 @@ +import asyncio +import sys +from urllib.parse import urlsplit +from .. import exceptions + +import tornado.web +import tornado.websocket + + +def get_tornado_handler(engineio_server): + class Handler(tornado.websocket.WebSocketHandler): # pragma: no cover + def __init__(self, *args, **kwargs): + super().__init__(*args, **kwargs) + if isinstance(engineio_server.cors_allowed_origins, str): + if engineio_server.cors_allowed_origins == '*': + self.allowed_origins = None + else: + self.allowed_origins = [ + engineio_server.cors_allowed_origins] + else: + self.allowed_origins = engineio_server.cors_allowed_origins + self.receive_queue = asyncio.Queue() + + async def get(self, *args, **kwargs): + if self.request.headers.get('Upgrade', '').lower() == 'websocket': + ret = super().get(*args, **kwargs) + if asyncio.iscoroutine(ret): + await ret + else: + await engineio_server.handle_request(self) + + async def open(self, *args, **kwargs): + # this is the handler for the websocket request + asyncio.ensure_future(engineio_server.handle_request(self)) + + async def post(self, *args, **kwargs): + await engineio_server.handle_request(self) + + async def options(self, *args, **kwargs): + await engineio_server.handle_request(self) + + async def on_message(self, message): + await self.receive_queue.put(message) + + async def get_next_message(self): + return await self.receive_queue.get() + + def on_close(self): + self.receive_queue.put_nowait(None) + + def check_origin(self, origin): + if self.allowed_origins is None or origin in self.allowed_origins: + return True + return super().check_origin(origin) + + def get_compression_options(self): + # enable compression + return {} + + return Handler + + +def translate_request(handler): + """This function takes the arguments passed to the request handler and + uses them to generate a WSGI compatible environ dictionary. + """ + class AwaitablePayload(object): + def __init__(self, payload): + self.payload = payload or b'' + + async def read(self, length=None): + if length is None: + r = self.payload + self.payload = b'' + else: + r = self.payload[:length] + self.payload = self.payload[length:] + return r + + payload = handler.request.body + + uri_parts = urlsplit(handler.request.path) + full_uri = handler.request.path + if handler.request.query: # pragma: no cover + full_uri += '?' + handler.request.query + environ = { + 'wsgi.input': AwaitablePayload(payload), + 'wsgi.errors': sys.stderr, + 'wsgi.version': (1, 0), + 'wsgi.async': True, + 'wsgi.multithread': False, + 'wsgi.multiprocess': False, + 'wsgi.run_once': False, + 'SERVER_SOFTWARE': 'aiohttp', + 'REQUEST_METHOD': handler.request.method, + 'QUERY_STRING': handler.request.query or '', + 'RAW_URI': full_uri, + 'SERVER_PROTOCOL': 'HTTP/%s' % handler.request.version, + 'REMOTE_ADDR': '127.0.0.1', + 'REMOTE_PORT': '0', + 'SERVER_NAME': 'aiohttp', + 'SERVER_PORT': '0', + 'tornado.handler': handler + } + + for hdr_name, hdr_value in handler.request.headers.items(): + hdr_name = hdr_name.upper() + if hdr_name == 'CONTENT-TYPE': + environ['CONTENT_TYPE'] = hdr_value + continue + elif hdr_name == 'CONTENT-LENGTH': + environ['CONTENT_LENGTH'] = hdr_value + continue + + key = 'HTTP_%s' % hdr_name.replace('-', '_') + environ[key] = hdr_value + + environ['wsgi.url_scheme'] = environ.get('HTTP_X_FORWARDED_PROTO', 'http') + + path_info = uri_parts.path + + environ['PATH_INFO'] = path_info + environ['SCRIPT_NAME'] = '' + + return environ + + +def make_response(status, headers, payload, environ): + """This function generates an appropriate response object for this async + mode. + """ + tornado_handler = environ['tornado.handler'] + try: + tornado_handler.set_status(int(status.split()[0])) + except RuntimeError: # pragma: no cover + # for websocket connections Tornado does not accept a response, since + # it already emitted the 101 status code + return + for header, value in headers: + tornado_handler.set_header(header, value) + tornado_handler.write(payload) + tornado_handler.finish() + + +class WebSocket(object): # pragma: no cover + """ + This wrapper class provides a tornado WebSocket interface that is + somewhat compatible with eventlet's implementation. + """ + def __init__(self, handler, server): + self.handler = handler + self.tornado_handler = None + + async def __call__(self, environ): + self.tornado_handler = environ['tornado.handler'] + self.environ = environ + await self.handler(self) + + async def close(self): + self.tornado_handler.close() + + async def send(self, message): + try: + self.tornado_handler.write_message( + message, binary=isinstance(message, bytes)) + except tornado.websocket.WebSocketClosedError: + raise exceptions.EngineIOError() + + async def wait(self): + msg = await self.tornado_handler.get_next_message() + if not isinstance(msg, bytes) and \ + not isinstance(msg, str): + raise IOError() + return msg + + +_async = { + 'asyncio': True, + 'translate_request': translate_request, + 'make_response': make_response, + 'websocket': WebSocket, +} diff --git a/venv/lib/python3.12/site-packages/engineio/async_server.py b/venv/lib/python3.12/site-packages/engineio/async_server.py new file mode 100644 index 0000000..2516f37 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_server.py @@ -0,0 +1,567 @@ +import asyncio +import urllib + +from . import base_server +from . import exceptions +from . import packet +from . import async_socket + +# this set is used to keep references to background tasks to prevent them from +# being garbage collected mid-execution. Solution taken from +# https://docs.python.org/3/library/asyncio-task.html#asyncio.create_task +task_reference_holder = set() + + +class AsyncServer(base_server.BaseServer): + """An Engine.IO server for asyncio. + + This class implements a fully compliant Engine.IO web server with support + for websocket and long-polling transports, compatible with the asyncio + framework on Python 3.5 or newer. + + :param async_mode: The asynchronous model to use. See the Deployment + section in the documentation for a description of the + available options. Valid async modes are "aiohttp", + "sanic", "tornado" and "asgi". If this argument is not + given, "aiohttp" is tried first, followed by "sanic", + "tornado", and finally "asgi". The first async mode that + has all its dependencies installed is the one that is + chosen. + :param ping_interval: The interval in seconds at which the server pings + the client. The default is 25 seconds. For advanced + control, a two element tuple can be given, where + the first number is the ping interval and the second + is a grace period added by the server. + :param ping_timeout: The time in seconds that the client waits for the + server to respond before disconnecting. The default + is 20 seconds. + :param max_http_buffer_size: The maximum size that is accepted for incoming + messages. The default is 1,000,000 bytes. In + spite of its name, the value set in this + argument is enforced for HTTP long-polling and + WebSocket connections. + :param allow_upgrades: Whether to allow transport upgrades or not. + :param http_compression: Whether to compress packages when using the + polling transport. + :param compression_threshold: Only compress messages when their byte size + is greater than this value. + :param cookie: If set to a string, it is the name of the HTTP cookie the + server sends back tot he client containing the client + session id. If set to a dictionary, the ``'name'`` key + contains the cookie name and other keys define cookie + attributes, where the value of each attribute can be a + string, a callable with no arguments, or a boolean. If set + to ``None`` (the default), a cookie is not sent to the + client. + :param cors_allowed_origins: Origin or list of origins that are allowed to + connect to this server. Only the same origin + is allowed by default. Set this argument to + ``'*'`` to allow all origins, or to ``[]`` to + disable CORS handling. + :param cors_credentials: Whether credentials (cookies, authentication) are + allowed in requests to this server. + :param logger: To enable logging set to ``True`` or pass a logger object to + use. To disable logging set to ``False``. Note that fatal + errors are logged even when ``logger`` is ``False``. + :param json: An alternative json module to use for encoding and decoding + packets. Custom json modules must have ``dumps`` and ``loads`` + functions that are compatible with the standard library + versions. + :param async_handlers: If set to ``True``, run message event handlers in + non-blocking threads. To run handlers synchronously, + set to ``False``. The default is ``True``. + :param transports: The list of allowed transports. Valid transports + are ``'polling'`` and ``'websocket'``. Defaults to + ``['polling', 'websocket']``. + :param kwargs: Reserved for future extensions, any additional parameters + given as keyword arguments will be silently ignored. + """ + def is_asyncio_based(self): + return True + + def async_modes(self): + return ['aiohttp', 'sanic', 'tornado', 'asgi'] + + def attach(self, app, engineio_path='engine.io'): + """Attach the Engine.IO server to an application.""" + engineio_path = engineio_path.strip('/') + self._async['create_route'](app, self, '/{}/'.format(engineio_path)) + + async def send(self, sid, data): + """Send a message to a client. + + :param sid: The session id of the recipient client. + :param data: The data to send to the client. Data can be of type + ``str``, ``bytes``, ``list`` or ``dict``. If a ``list`` + or ``dict``, the data will be serialized as JSON. + + Note: this method is a coroutine. + """ + await self.send_packet(sid, packet.Packet(packet.MESSAGE, data=data)) + + async def send_packet(self, sid, pkt): + """Send a raw packet to a client. + + :param sid: The session id of the recipient client. + :param pkt: The packet to send to the client. + + Note: this method is a coroutine. + """ + try: + socket = self._get_socket(sid) + except KeyError: + # the socket is not available + self.logger.warning('Cannot send to sid %s', sid) + return + await socket.send(pkt) + + async def get_session(self, sid): + """Return the user session for a client. + + :param sid: The session id of the client. + + The return value is a dictionary. Modifications made to this + dictionary are not guaranteed to be preserved. If you want to modify + the user session, use the ``session`` context manager instead. + """ + socket = self._get_socket(sid) + return socket.session + + async def save_session(self, sid, session): + """Store the user session for a client. + + :param sid: The session id of the client. + :param session: The session dictionary. + """ + socket = self._get_socket(sid) + socket.session = session + + def session(self, sid): + """Return the user session for a client with context manager syntax. + + :param sid: The session id of the client. + + This is a context manager that returns the user session dictionary for + the client. Any changes that are made to this dictionary inside the + context manager block are saved back to the session. Example usage:: + + @eio.on('connect') + def on_connect(sid, environ): + username = authenticate_user(environ) + if not username: + return False + with eio.session(sid) as session: + session['username'] = username + + @eio.on('message') + def on_message(sid, msg): + async with eio.session(sid) as session: + print('received message from ', session['username']) + """ + class _session_context_manager(object): + def __init__(self, server, sid): + self.server = server + self.sid = sid + self.session = None + + async def __aenter__(self): + self.session = await self.server.get_session(sid) + return self.session + + async def __aexit__(self, *args): + await self.server.save_session(sid, self.session) + + return _session_context_manager(self, sid) + + async def disconnect(self, sid=None): + """Disconnect a client. + + :param sid: The session id of the client to close. If this parameter + is not given, then all clients are closed. + + Note: this method is a coroutine. + """ + if sid is not None: + try: + socket = self._get_socket(sid) + except KeyError: # pragma: no cover + # the socket was already closed or gone + pass + else: + await socket.close() + if sid in self.sockets: # pragma: no cover + del self.sockets[sid] + else: + await asyncio.wait([asyncio.create_task(client.close()) + for client in self.sockets.values()]) + self.sockets = {} + + async def handle_request(self, *args, **kwargs): + """Handle an HTTP request from the client. + + This is the entry point of the Engine.IO application. This function + returns the HTTP response to deliver to the client. + + Note: this method is a coroutine. + """ + translate_request = self._async['translate_request'] + if asyncio.iscoroutinefunction(translate_request): + environ = await translate_request(*args, **kwargs) + else: + environ = translate_request(*args, **kwargs) + + if self.cors_allowed_origins != []: + # Validate the origin header if present + # This is important for WebSocket more than for HTTP, since + # browsers only apply CORS controls to HTTP. + origin = environ.get('HTTP_ORIGIN') + if origin: + allowed_origins = self._cors_allowed_origins(environ) + if allowed_origins is not None and origin not in \ + allowed_origins: + self._log_error_once( + origin + ' is not an accepted origin.', 'bad-origin') + return await self._make_response( + self._bad_request( + origin + ' is not an accepted origin.'), + environ) + + method = environ['REQUEST_METHOD'] + query = urllib.parse.parse_qs(environ.get('QUERY_STRING', '')) + + sid = query['sid'][0] if 'sid' in query else None + jsonp = False + jsonp_index = None + + # make sure the client uses an allowed transport + transport = query.get('transport', ['polling'])[0] + if transport not in self.transports: + self._log_error_once('Invalid transport', 'bad-transport') + return await self._make_response( + self._bad_request('Invalid transport'), environ) + + # make sure the client speaks a compatible Engine.IO version + sid = query['sid'][0] if 'sid' in query else None + if sid is None and query.get('EIO') != ['4']: + self._log_error_once( + 'The client is using an unsupported version of the Socket.IO ' + 'or Engine.IO protocols', 'bad-version' + ) + return await self._make_response(self._bad_request( + 'The client is using an unsupported version of the Socket.IO ' + 'or Engine.IO protocols' + ), environ) + + if 'j' in query: + jsonp = True + try: + jsonp_index = int(query['j'][0]) + except (ValueError, KeyError, IndexError): + # Invalid JSONP index number + pass + + if jsonp and jsonp_index is None: + self._log_error_once('Invalid JSONP index number', + 'bad-jsonp-index') + r = self._bad_request('Invalid JSONP index number') + elif method == 'GET': + if sid is None: + # transport must be one of 'polling' or 'websocket'. + # if 'websocket', the HTTP_UPGRADE header must match. + upgrade_header = environ.get('HTTP_UPGRADE').lower() \ + if 'HTTP_UPGRADE' in environ else None + if transport == 'polling' \ + or transport == upgrade_header == 'websocket': + r = await self._handle_connect(environ, transport, + jsonp_index) + else: + self._log_error_once('Invalid websocket upgrade', + 'bad-upgrade') + r = self._bad_request('Invalid websocket upgrade') + else: + if sid not in self.sockets: + self._log_error_once('Invalid session ' + sid, 'bad-sid') + r = self._bad_request('Invalid session ' + sid) + else: + socket = self._get_socket(sid) + try: + packets = await socket.handle_get_request(environ) + if isinstance(packets, list): + r = self._ok(packets, jsonp_index=jsonp_index) + else: + r = packets + except exceptions.EngineIOError: + if sid in self.sockets: # pragma: no cover + await self.disconnect(sid) + r = self._bad_request() + if sid in self.sockets and self.sockets[sid].closed: + del self.sockets[sid] + elif method == 'POST': + if sid is None or sid not in self.sockets: + self._log_error_once('Invalid session ' + sid, 'bad-sid') + r = self._bad_request('Invalid session ' + sid) + else: + socket = self._get_socket(sid) + try: + await socket.handle_post_request(environ) + r = self._ok(jsonp_index=jsonp_index) + except exceptions.EngineIOError: + if sid in self.sockets: # pragma: no cover + await self.disconnect(sid) + r = self._bad_request() + except: # pragma: no cover + # for any other unexpected errors, we log the error + # and keep going + self.logger.exception('post request handler error') + r = self._ok(jsonp_index=jsonp_index) + elif method == 'OPTIONS': + r = self._ok() + else: + self.logger.warning('Method %s not supported', method) + r = self._method_not_found() + if not isinstance(r, dict): + return r + if self.http_compression and \ + len(r['response']) >= self.compression_threshold: + encodings = [e.split(';')[0].strip() for e in + environ.get('HTTP_ACCEPT_ENCODING', '').split(',')] + for encoding in encodings: + if encoding in self.compression_methods: + r['response'] = \ + getattr(self, '_' + encoding)(r['response']) + r['headers'] += [('Content-Encoding', encoding)] + break + return await self._make_response(r, environ) + + async def shutdown(self): + """Stop Socket.IO background tasks. + + This method stops background activity initiated by the Socket.IO + server. It must be called before shutting down the web server. + """ + self.logger.info('Socket.IO is shutting down') + if self.service_task_event: # pragma: no cover + self.service_task_event.set() + await self.service_task_handle + self.service_task_handle = None + + def start_background_task(self, target, *args, **kwargs): + """Start a background task using the appropriate async model. + + This is a utility function that applications can use to start a + background task using the method that is compatible with the + selected async mode. + + :param target: the target function to execute. + :param args: arguments to pass to the function. + :param kwargs: keyword arguments to pass to the function. + + The return value is a ``asyncio.Task`` object. + """ + return asyncio.ensure_future(target(*args, **kwargs)) + + async def sleep(self, seconds=0): + """Sleep for the requested amount of time using the appropriate async + model. + + This is a utility function that applications can use to put a task to + sleep without having to worry about using the correct call for the + selected async mode. + + Note: this method is a coroutine. + """ + return await asyncio.sleep(seconds) + + def create_queue(self, *args, **kwargs): + """Create a queue object using the appropriate async model. + + This is a utility function that applications can use to create a queue + without having to worry about using the correct call for the selected + async mode. For asyncio based async modes, this returns an instance of + ``asyncio.Queue``. + """ + return asyncio.Queue(*args, **kwargs) + + def get_queue_empty_exception(self): + """Return the queue empty exception for the appropriate async model. + + This is a utility function that applications can use to work with a + queue without having to worry about using the correct call for the + selected async mode. For asyncio based async modes, this returns an + instance of ``asyncio.QueueEmpty``. + """ + return asyncio.QueueEmpty + + def create_event(self, *args, **kwargs): + """Create an event object using the appropriate async model. + + This is a utility function that applications can use to create an + event without having to worry about using the correct call for the + selected async mode. For asyncio based async modes, this returns + an instance of ``asyncio.Event``. + """ + return asyncio.Event(*args, **kwargs) + + async def _make_response(self, response_dict, environ): + cors_headers = self._cors_headers(environ) + make_response = self._async['make_response'] + if asyncio.iscoroutinefunction(make_response): + response = await make_response( + response_dict['status'], + response_dict['headers'] + cors_headers, + response_dict['response'], environ) + else: + response = make_response( + response_dict['status'], + response_dict['headers'] + cors_headers, + response_dict['response'], environ) + return response + + async def _handle_connect(self, environ, transport, jsonp_index=None): + """Handle a client connection request.""" + if self.start_service_task: + # start the service task to monitor connected clients + self.start_service_task = False + self.service_task_handle = self.start_background_task( + self._service_task) + + sid = self.generate_id() + s = async_socket.AsyncSocket(self, sid) + self.sockets[sid] = s + + pkt = packet.Packet( + packet.OPEN, {'sid': sid, + 'upgrades': self._upgrades(sid, transport), + 'pingTimeout': int(self.ping_timeout * 1000), + 'pingInterval': int(self.ping_interval * 1000)}) + await s.send(pkt) + s.schedule_ping() + + ret = await self._trigger_event('connect', sid, environ, + run_async=False) + if ret is not None and ret is not True: + del self.sockets[sid] + self.logger.warning('Application rejected connection') + return self._unauthorized(ret or None) + + if transport == 'websocket': + ret = await s.handle_get_request(environ) + if s.closed and sid in self.sockets: + # websocket connection ended, so we are done + del self.sockets[sid] + return ret + else: + s.connected = True + headers = None + if self.cookie: + if isinstance(self.cookie, dict): + headers = [( + 'Set-Cookie', + self._generate_sid_cookie(sid, self.cookie) + )] + else: + headers = [( + 'Set-Cookie', + self._generate_sid_cookie(sid, { + 'name': self.cookie, 'path': '/', 'SameSite': 'Lax' + }) + )] + try: + return self._ok(await s.poll(), headers=headers, + jsonp_index=jsonp_index) + except exceptions.QueueEmpty: + return self._bad_request() + + async def _trigger_event(self, event, *args, **kwargs): + """Invoke an event handler.""" + run_async = kwargs.pop('run_async', False) + ret = None + if event in self.handlers: + if asyncio.iscoroutinefunction(self.handlers[event]): + async def run_async_handler(): + try: + return await self.handlers[event](*args) + except asyncio.CancelledError: # pragma: no cover + pass + except: + self.logger.exception(event + ' async handler error') + if event == 'connect': + # if connect handler raised error we reject the + # connection + return False + + if run_async: + ret = self.start_background_task(run_async_handler) + task_reference_holder.add(ret) + ret.add_done_callback(task_reference_holder.discard) + else: + ret = await run_async_handler() + else: + async def run_sync_handler(): + try: + return self.handlers[event](*args) + except: + self.logger.exception(event + ' handler error') + if event == 'connect': + # if connect handler raised error we reject the + # connection + return False + + if run_async: + ret = self.start_background_task(run_sync_handler) + task_reference_holder.add(ret) + ret.add_done_callback(task_reference_holder.discard) + else: + ret = await run_sync_handler() + return ret + + async def _service_task(self): # pragma: no cover + """Monitor connected clients and clean up those that time out.""" + self.service_task_event = self.create_event() + while not self.service_task_event.is_set(): + if len(self.sockets) == 0: + # nothing to do + try: + await asyncio.wait_for(self.service_task_event.wait(), + timeout=self.ping_timeout) + break + except asyncio.TimeoutError: + continue + + # go through the entire client list in a ping interval cycle + sleep_interval = self.ping_timeout / len(self.sockets) + + try: + # iterate over the current clients + for s in self.sockets.copy().values(): + if s.closed: + try: + del self.sockets[s.sid] + except KeyError: + # the socket could have also been removed by + # the _get_socket() method from another thread + pass + elif not s.closing: + await s.check_ping_timeout() + try: + await asyncio.wait_for(self.service_task_event.wait(), + timeout=sleep_interval) + raise KeyboardInterrupt() + except asyncio.TimeoutError: + continue + except ( + SystemExit, + KeyboardInterrupt, + asyncio.CancelledError, + GeneratorExit, + ): + self.logger.info('service task canceled') + break + except: + if asyncio.get_event_loop().is_closed(): + self.logger.info('event loop is closed, exiting service ' + 'task') + break + + # an unexpected exception has occurred, log it and continue + self.logger.exception('service task exception') diff --git a/venv/lib/python3.12/site-packages/engineio/async_socket.py b/venv/lib/python3.12/site-packages/engineio/async_socket.py new file mode 100644 index 0000000..75776ef --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/async_socket.py @@ -0,0 +1,254 @@ +import asyncio +import sys +import time + +from . import base_socket +from . import exceptions +from . import packet +from . import payload + + +class AsyncSocket(base_socket.BaseSocket): + async def poll(self): + """Wait for packets to send to the client.""" + try: + packets = [await asyncio.wait_for( + self.queue.get(), + self.server.ping_interval + self.server.ping_timeout)] + self.queue.task_done() + except (asyncio.TimeoutError, asyncio.CancelledError): + raise exceptions.QueueEmpty() + if packets == [None]: + return [] + while True: + try: + pkt = self.queue.get_nowait() + self.queue.task_done() + if pkt is None: + self.queue.put_nowait(None) + break + packets.append(pkt) + except asyncio.QueueEmpty: + break + return packets + + async def receive(self, pkt): + """Receive packet from the client.""" + self.server.logger.info('%s: Received packet %s data %s', + self.sid, packet.packet_names[pkt.packet_type], + pkt.data if not isinstance(pkt.data, bytes) + else '') + if pkt.packet_type == packet.PONG: + self.schedule_ping() + elif pkt.packet_type == packet.MESSAGE: + await self.server._trigger_event( + 'message', self.sid, pkt.data, + run_async=self.server.async_handlers) + elif pkt.packet_type == packet.UPGRADE: + await self.send(packet.Packet(packet.NOOP)) + elif pkt.packet_type == packet.CLOSE: + await self.close(wait=False, abort=True) + else: + raise exceptions.UnknownPacketError() + + async def check_ping_timeout(self): + """Make sure the client is still sending pings.""" + if self.closed: + raise exceptions.SocketIsClosedError() + if self.last_ping and \ + time.time() - self.last_ping > self.server.ping_timeout: + self.server.logger.info('%s: Client is gone, closing socket', + self.sid) + # Passing abort=False here will cause close() to write a + # CLOSE packet. This has the effect of updating half-open sockets + # to their correct state of disconnected + await self.close(wait=False, abort=False) + return False + return True + + async def send(self, pkt): + """Send a packet to the client.""" + if not await self.check_ping_timeout(): + return + else: + await self.queue.put(pkt) + self.server.logger.info('%s: Sending packet %s data %s', + self.sid, packet.packet_names[pkt.packet_type], + pkt.data if not isinstance(pkt.data, bytes) + else '') + + async def handle_get_request(self, environ): + """Handle a long-polling GET request from the client.""" + connections = [ + s.strip() + for s in environ.get('HTTP_CONNECTION', '').lower().split(',')] + transport = environ.get('HTTP_UPGRADE', '').lower() + if 'upgrade' in connections and transport in self.upgrade_protocols: + self.server.logger.info('%s: Received request to upgrade to %s', + self.sid, transport) + return await getattr(self, '_upgrade_' + transport)(environ) + if self.upgrading or self.upgraded: + # we are upgrading to WebSocket, do not return any more packets + # through the polling endpoint + return [packet.Packet(packet.NOOP)] + try: + packets = await self.poll() + except exceptions.QueueEmpty: + exc = sys.exc_info() + await self.close(wait=False) + raise exc[1].with_traceback(exc[2]) + return packets + + async def handle_post_request(self, environ): + """Handle a long-polling POST request from the client.""" + length = int(environ.get('CONTENT_LENGTH', '0')) + if length > self.server.max_http_buffer_size: + raise exceptions.ContentTooLongError() + else: + body = (await environ['wsgi.input'].read(length)).decode('utf-8') + p = payload.Payload(encoded_payload=body) + for pkt in p.packets: + await self.receive(pkt) + + async def close(self, wait=True, abort=False): + """Close the socket connection.""" + if not self.closed and not self.closing: + self.closing = True + await self.server._trigger_event('disconnect', self.sid) + if not abort: + await self.send(packet.Packet(packet.CLOSE)) + self.closed = True + if wait: + await self.queue.join() + + def schedule_ping(self): + self.server.start_background_task(self._send_ping) + + async def _send_ping(self): + self.last_ping = None + await asyncio.sleep(self.server.ping_interval) + if not self.closing and not self.closed: + self.last_ping = time.time() + await self.send(packet.Packet(packet.PING)) + + async def _upgrade_websocket(self, environ): + """Upgrade the connection from polling to websocket.""" + if self.upgraded: + raise IOError('Socket has been upgraded already') + if self.server._async['websocket'] is None: + # the selected async mode does not support websocket + return self.server._bad_request() + ws = self.server._async['websocket']( + self._websocket_handler, self.server) + return await ws(environ) + + async def _websocket_handler(self, ws): + """Engine.IO handler for websocket transport.""" + async def websocket_wait(): + data = await ws.wait() + if data and len(data) > self.server.max_http_buffer_size: + raise ValueError('packet is too large') + return data + + if self.connected: + # the socket was already connected, so this is an upgrade + self.upgrading = True # hold packet sends during the upgrade + + try: + pkt = await websocket_wait() + except IOError: # pragma: no cover + return + decoded_pkt = packet.Packet(encoded_packet=pkt) + if decoded_pkt.packet_type != packet.PING or \ + decoded_pkt.data != 'probe': + self.server.logger.info( + '%s: Failed websocket upgrade, no PING packet', self.sid) + self.upgrading = False + return + await ws.send(packet.Packet(packet.PONG, data='probe').encode()) + await self.queue.put(packet.Packet(packet.NOOP)) # end poll + + try: + pkt = await websocket_wait() + except IOError: # pragma: no cover + self.upgrading = False + return + decoded_pkt = packet.Packet(encoded_packet=pkt) + if decoded_pkt.packet_type != packet.UPGRADE: + self.upgraded = False + self.server.logger.info( + ('%s: Failed websocket upgrade, expected UPGRADE packet, ' + 'received %s instead.'), + self.sid, pkt) + self.upgrading = False + return + self.upgraded = True + self.upgrading = False + else: + self.connected = True + self.upgraded = True + + # start separate writer thread + async def writer(): + while True: + packets = None + try: + packets = await self.poll() + except exceptions.QueueEmpty: + break + if not packets: + # empty packet list returned -> connection closed + break + try: + for pkt in packets: + await ws.send(pkt.encode()) + except: + break + await ws.close() + + writer_task = asyncio.ensure_future(writer()) + + self.server.logger.info( + '%s: Upgrade to websocket successful', self.sid) + + while True: + p = None + wait_task = asyncio.ensure_future(websocket_wait()) + try: + p = await asyncio.wait_for( + wait_task, + self.server.ping_interval + self.server.ping_timeout) + except asyncio.CancelledError: # pragma: no cover + # there is a bug (https://bugs.python.org/issue30508) in + # asyncio that causes a "Task exception never retrieved" error + # to appear when wait_task raises an exception before it gets + # cancelled. Calling wait_task.exception() prevents the error + # from being issued in Python 3.6, but causes other errors in + # other versions, so we run it with all errors suppressed and + # hope for the best. + try: + wait_task.exception() + except: + pass + break + except: + break + if p is None: + # connection closed by client + break + pkt = packet.Packet(encoded_packet=p) + try: + await self.receive(pkt) + except exceptions.UnknownPacketError: # pragma: no cover + pass + except exceptions.SocketIsClosedError: # pragma: no cover + self.server.logger.info('Receive error -- socket is closed') + break + except: # pragma: no cover + # if we get an unexpected exception we log the error and exit + # the connection properly + self.server.logger.exception('Unknown receive error') + + await self.queue.put(None) # unlock the writer task so it can exit + await asyncio.wait_for(writer_task, timeout=None) + await self.close(wait=False, abort=True) diff --git a/venv/lib/python3.12/site-packages/engineio/base_client.py b/venv/lib/python3.12/site-packages/engineio/base_client.py new file mode 100644 index 0000000..6381be2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/base_client.py @@ -0,0 +1,146 @@ +import logging +import signal +import threading +import time +import urllib +from . import packet + +default_logger = logging.getLogger('engineio.client') +connected_clients = [] + + +def signal_handler(sig, frame): + """SIGINT handler. + + Disconnect all active clients and then invoke the original signal handler. + """ + for client in connected_clients[:]: + if not client.is_asyncio_based(): + client.disconnect() + if callable(original_signal_handler): + return original_signal_handler(sig, frame) + else: # pragma: no cover + # Handle case where no original SIGINT handler was present. + return signal.default_int_handler(sig, frame) + + +original_signal_handler = None + + +class BaseClient: + event_names = ['connect', 'disconnect', 'message'] + + def __init__(self, logger=False, json=None, request_timeout=5, + http_session=None, ssl_verify=True, handle_sigint=True, + websocket_extra_options=None): + global original_signal_handler + if handle_sigint and original_signal_handler is None and \ + threading.current_thread() == threading.main_thread(): + original_signal_handler = signal.signal(signal.SIGINT, + signal_handler) + self.handlers = {} + self.base_url = None + self.transports = None + self.current_transport = None + self.sid = None + self.upgrades = None + self.ping_interval = None + self.ping_timeout = None + self.http = http_session + self.external_http = http_session is not None + self.handle_sigint = handle_sigint + self.ws = None + self.read_loop_task = None + self.write_loop_task = None + self.queue = None + self.state = 'disconnected' + self.ssl_verify = ssl_verify + self.websocket_extra_options = websocket_extra_options or {} + + if json is not None: + packet.Packet.json = json + if not isinstance(logger, bool): + self.logger = logger + else: + self.logger = default_logger + if self.logger.level == logging.NOTSET: + if logger: + self.logger.setLevel(logging.INFO) + else: + self.logger.setLevel(logging.ERROR) + self.logger.addHandler(logging.StreamHandler()) + + self.request_timeout = request_timeout + + def is_asyncio_based(self): + return False + + def on(self, event, handler=None): + """Register an event handler. + + :param event: The event name. Can be ``'connect'``, ``'message'`` or + ``'disconnect'``. + :param handler: The function that should be invoked to handle the + event. When this parameter is not given, the method + acts as a decorator for the handler function. + + Example usage:: + + # as a decorator: + @eio.on('connect') + def connect_handler(): + print('Connection request') + + # as a method: + def message_handler(msg): + print('Received message: ', msg) + eio.send('response') + eio.on('message', message_handler) + """ + if event not in self.event_names: + raise ValueError('Invalid event') + + def set_handler(handler): + self.handlers[event] = handler + return handler + + if handler is None: + return set_handler + set_handler(handler) + + def transport(self): + """Return the name of the transport currently in use. + + The possible values returned by this function are ``'polling'`` and + ``'websocket'``. + """ + return self.current_transport + + def _reset(self): + self.state = 'disconnected' + self.sid = None + + def _get_engineio_url(self, url, engineio_path, transport): + """Generate the Engine.IO connection URL.""" + engineio_path = engineio_path.strip('/') + parsed_url = urllib.parse.urlparse(url) + + if transport == 'polling': + scheme = 'http' + elif transport == 'websocket': + scheme = 'ws' + else: # pragma: no cover + raise ValueError('invalid transport') + if parsed_url.scheme in ['https', 'wss']: + scheme += 's' + + return ('{scheme}://{netloc}/{path}/?{query}' + '{sep}transport={transport}&EIO=4').format( + scheme=scheme, netloc=parsed_url.netloc, + path=engineio_path, query=parsed_url.query, + sep='&' if parsed_url.query else '', + transport=transport) + + def _get_url_timestamp(self): + """Generate the Engine.IO query string timestamp.""" + return '&t=' + str(time.time()) diff --git a/venv/lib/python3.12/site-packages/engineio/base_server.py b/venv/lib/python3.12/site-packages/engineio/base_server.py new file mode 100644 index 0000000..c32cb14 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/base_server.py @@ -0,0 +1,338 @@ +import base64 +import gzip +import importlib +import io +import logging +import secrets +import zlib + +from . import packet +from . import payload + +default_logger = logging.getLogger('engineio.server') + + +class BaseServer: + compression_methods = ['gzip', 'deflate'] + event_names = ['connect', 'disconnect', 'message'] + valid_transports = ['polling', 'websocket'] + _default_monitor_clients = True + sequence_number = 0 + + def __init__(self, async_mode=None, ping_interval=25, ping_timeout=20, + max_http_buffer_size=1000000, allow_upgrades=True, + http_compression=True, compression_threshold=1024, + cookie=None, cors_allowed_origins=None, + cors_credentials=True, logger=False, json=None, + async_handlers=True, monitor_clients=None, transports=None, + **kwargs): + self.ping_timeout = ping_timeout + if isinstance(ping_interval, tuple): + self.ping_interval = ping_interval[0] + self.ping_interval_grace_period = ping_interval[1] + else: + self.ping_interval = ping_interval + self.ping_interval_grace_period = 0 + self.max_http_buffer_size = max_http_buffer_size + self.allow_upgrades = allow_upgrades + self.http_compression = http_compression + self.compression_threshold = compression_threshold + self.cookie = cookie + self.cors_allowed_origins = cors_allowed_origins + self.cors_credentials = cors_credentials + self.async_handlers = async_handlers + self.sockets = {} + self.handlers = {} + self.log_message_keys = set() + self.start_service_task = monitor_clients \ + if monitor_clients is not None else self._default_monitor_clients + self.service_task_handle = None + self.service_task_event = None + if json is not None: + packet.Packet.json = json + if not isinstance(logger, bool): + self.logger = logger + else: + self.logger = default_logger + if self.logger.level == logging.NOTSET: + if logger: + self.logger.setLevel(logging.INFO) + else: + self.logger.setLevel(logging.ERROR) + self.logger.addHandler(logging.StreamHandler()) + modes = self.async_modes() + if async_mode is not None: + modes = [async_mode] if async_mode in modes else [] + self._async = None + self.async_mode = None + for mode in modes: + try: + self._async = importlib.import_module( + 'engineio.async_drivers.' + mode)._async + asyncio_based = self._async['asyncio'] \ + if 'asyncio' in self._async else False + if asyncio_based != self.is_asyncio_based(): + continue # pragma: no cover + self.async_mode = mode + break + except ImportError: + pass + if self.async_mode is None: + raise ValueError('Invalid async_mode specified') + if self.is_asyncio_based() and \ + ('asyncio' not in self._async or not + self._async['asyncio']): # pragma: no cover + raise ValueError('The selected async_mode is not asyncio ' + 'compatible') + if not self.is_asyncio_based() and 'asyncio' in self._async and \ + self._async['asyncio']: # pragma: no cover + raise ValueError('The selected async_mode requires asyncio and ' + 'must use the AsyncServer class') + if transports is not None: + if isinstance(transports, str): + transports = [transports] + transports = [transport for transport in transports + if transport in self.valid_transports] + if not transports: + raise ValueError('No valid transports provided') + self.transports = transports or self.valid_transports + self.logger.info('Server initialized for %s.', self.async_mode) + + def is_asyncio_based(self): + return False + + def async_modes(self): + return ['eventlet', 'gevent_uwsgi', 'gevent', 'threading'] + + def on(self, event, handler=None): + """Register an event handler. + + :param event: The event name. Can be ``'connect'``, ``'message'`` or + ``'disconnect'``. + :param handler: The function that should be invoked to handle the + event. When this parameter is not given, the method + acts as a decorator for the handler function. + + Example usage:: + + # as a decorator: + @eio.on('connect') + def connect_handler(sid, environ): + print('Connection request') + if environ['REMOTE_ADDR'] in blacklisted: + return False # reject + + # as a method: + def message_handler(sid, msg): + print('Received message: ', msg) + eio.send(sid, 'response') + eio.on('message', message_handler) + + The handler function receives the ``sid`` (session ID) for the + client as first argument. The ``'connect'`` event handler receives the + WSGI environment as a second argument, and can return ``False`` to + reject the connection. The ``'message'`` handler receives the message + payload as a second argument. The ``'disconnect'`` handler does not + take a second argument. + """ + if event not in self.event_names: + raise ValueError('Invalid event') + + def set_handler(handler): + self.handlers[event] = handler + return handler + + if handler is None: + return set_handler + set_handler(handler) + + def transport(self, sid): + """Return the name of the transport used by the client. + + The two possible values returned by this function are ``'polling'`` + and ``'websocket'``. + + :param sid: The session of the client. + """ + return 'websocket' if self._get_socket(sid).upgraded else 'polling' + + def create_queue(self, *args, **kwargs): + """Create a queue object using the appropriate async model. + + This is a utility function that applications can use to create a queue + without having to worry about using the correct call for the selected + async mode. + """ + return self._async['queue'](*args, **kwargs) + + def get_queue_empty_exception(self): + """Return the queue empty exception for the appropriate async model. + + This is a utility function that applications can use to work with a + queue without having to worry about using the correct call for the + selected async mode. + """ + return self._async['queue_empty'] + + def create_event(self, *args, **kwargs): + """Create an event object using the appropriate async model. + + This is a utility function that applications can use to create an + event without having to worry about using the correct call for the + selected async mode. + """ + return self._async['event'](*args, **kwargs) + + def generate_id(self): + """Generate a unique session id.""" + id = base64.b64encode( + secrets.token_bytes(12) + self.sequence_number.to_bytes(3, 'big')) + self.sequence_number = (self.sequence_number + 1) & 0xffffff + return id.decode('utf-8').replace('/', '_').replace('+', '-') + + def _generate_sid_cookie(self, sid, attributes): + """Generate the sid cookie.""" + cookie = attributes.get('name', 'io') + '=' + sid + for attribute, value in attributes.items(): + if attribute == 'name': + continue + if callable(value): + value = value() + if value is True: + cookie += '; ' + attribute + else: + cookie += '; ' + attribute + '=' + value + return cookie + + def _upgrades(self, sid, transport): + """Return the list of possible upgrades for a client connection.""" + if not self.allow_upgrades or self._get_socket(sid).upgraded or \ + transport == 'websocket': + return [] + if self._async['websocket'] is None: # pragma: no cover + self._log_error_once( + 'The WebSocket transport is not available, you must install a ' + 'WebSocket server that is compatible with your async mode to ' + 'enable it. See the documentation for details.', + 'no-websocket') + return [] + return ['websocket'] + + def _get_socket(self, sid): + """Return the socket object for a given session.""" + try: + s = self.sockets[sid] + except KeyError: + raise KeyError('Session not found') + if s.closed: + del self.sockets[sid] + raise KeyError('Session is disconnected') + return s + + def _ok(self, packets=None, headers=None, jsonp_index=None): + """Generate a successful HTTP response.""" + if packets is not None: + if headers is None: + headers = [] + headers += [('Content-Type', 'text/plain; charset=UTF-8')] + return {'status': '200 OK', + 'headers': headers, + 'response': payload.Payload(packets=packets).encode( + jsonp_index=jsonp_index).encode('utf-8')} + else: + return {'status': '200 OK', + 'headers': [('Content-Type', 'text/plain')], + 'response': b'OK'} + + def _bad_request(self, message=None): + """Generate a bad request HTTP error response.""" + if message is None: + message = 'Bad Request' + message = packet.Packet.json.dumps(message) + return {'status': '400 BAD REQUEST', + 'headers': [('Content-Type', 'text/plain')], + 'response': message.encode('utf-8')} + + def _method_not_found(self): + """Generate a method not found HTTP error response.""" + return {'status': '405 METHOD NOT FOUND', + 'headers': [('Content-Type', 'text/plain')], + 'response': b'Method Not Found'} + + def _unauthorized(self, message=None): + """Generate a unauthorized HTTP error response.""" + if message is None: + message = 'Unauthorized' + message = packet.Packet.json.dumps(message) + return {'status': '401 UNAUTHORIZED', + 'headers': [('Content-Type', 'application/json')], + 'response': message.encode('utf-8')} + + def _cors_allowed_origins(self, environ): + default_origins = [] + if 'wsgi.url_scheme' in environ and 'HTTP_HOST' in environ: + default_origins.append('{scheme}://{host}'.format( + scheme=environ['wsgi.url_scheme'], host=environ['HTTP_HOST'])) + if 'HTTP_X_FORWARDED_PROTO' in environ or \ + 'HTTP_X_FORWARDED_HOST' in environ: + scheme = environ.get( + 'HTTP_X_FORWARDED_PROTO', + environ['wsgi.url_scheme']).split(',')[0].strip() + default_origins.append('{scheme}://{host}'.format( + scheme=scheme, host=environ.get( + 'HTTP_X_FORWARDED_HOST', environ['HTTP_HOST']).split( + ',')[0].strip())) + if self.cors_allowed_origins is None: + allowed_origins = default_origins + elif self.cors_allowed_origins == '*': + allowed_origins = None + elif isinstance(self.cors_allowed_origins, str): + allowed_origins = [self.cors_allowed_origins] + elif callable(self.cors_allowed_origins): + origin = environ.get('HTTP_ORIGIN') + allowed_origins = [origin] \ + if self.cors_allowed_origins(origin) else [] + else: + allowed_origins = self.cors_allowed_origins + return allowed_origins + + def _cors_headers(self, environ): + """Return the cross-origin-resource-sharing headers.""" + if self.cors_allowed_origins == []: + # special case, CORS handling is completely disabled + return [] + headers = [] + allowed_origins = self._cors_allowed_origins(environ) + if 'HTTP_ORIGIN' in environ and \ + (allowed_origins is None or environ['HTTP_ORIGIN'] in + allowed_origins): + headers = [('Access-Control-Allow-Origin', environ['HTTP_ORIGIN'])] + if environ['REQUEST_METHOD'] == 'OPTIONS': + headers += [('Access-Control-Allow-Methods', 'OPTIONS, GET, POST')] + if 'HTTP_ACCESS_CONTROL_REQUEST_HEADERS' in environ: + headers += [('Access-Control-Allow-Headers', + environ['HTTP_ACCESS_CONTROL_REQUEST_HEADERS'])] + if self.cors_credentials: + headers += [('Access-Control-Allow-Credentials', 'true')] + return headers + + def _gzip(self, response): + """Apply gzip compression to a response.""" + bytesio = io.BytesIO() + with gzip.GzipFile(fileobj=bytesio, mode='w') as gz: + gz.write(response) + return bytesio.getvalue() + + def _deflate(self, response): + """Apply deflate compression to a response.""" + return zlib.compress(response) + + def _log_error_once(self, message, message_key): + """Log message with logging.ERROR level the first time, then log + with given level.""" + if message_key not in self.log_message_keys: + self.logger.error(message + ' (further occurrences of this error ' + 'will be logged with level INFO)') + self.log_message_keys.add(message_key) + else: + self.logger.info(message) diff --git a/venv/lib/python3.12/site-packages/engineio/base_socket.py b/venv/lib/python3.12/site-packages/engineio/base_socket.py new file mode 100644 index 0000000..6d42bfe --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/base_socket.py @@ -0,0 +1,15 @@ + +class BaseSocket: + upgrade_protocols = ['websocket'] + + def __init__(self, server, sid): + self.server = server + self.sid = sid + self.queue = self.server.create_queue() + self.last_ping = None + self.connected = False + self.upgrading = False + self.upgraded = False + self.closing = False + self.closed = False + self.session = {} diff --git a/venv/lib/python3.12/site-packages/engineio/client.py b/venv/lib/python3.12/site-packages/engineio/client.py new file mode 100644 index 0000000..a4c8844 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/client.py @@ -0,0 +1,605 @@ +from base64 import b64encode +from engineio.json import JSONDecodeError +import logging +import queue +import ssl +import threading +import time +import urllib + +try: + import requests +except ImportError: # pragma: no cover + requests = None +try: + import websocket +except ImportError: # pragma: no cover + websocket = None +from . import base_client +from . import exceptions +from . import packet +from . import payload + +default_logger = logging.getLogger('engineio.client') + + +class Client(base_client.BaseClient): + """An Engine.IO client. + + This class implements a fully compliant Engine.IO web client with support + for websocket and long-polling transports. + + :param logger: To enable logging set to ``True`` or pass a logger object to + use. To disable logging set to ``False``. The default is + ``False``. Note that fatal errors are logged even when + ``logger`` is ``False``. + :param json: An alternative json module to use for encoding and decoding + packets. Custom json modules must have ``dumps`` and ``loads`` + functions that are compatible with the standard library + versions. + :param request_timeout: A timeout in seconds for requests. The default is + 5 seconds. + :param http_session: an initialized ``requests.Session`` object to be used + when sending requests to the server. Use it if you + need to add special client options such as proxy + servers, SSL certificates, custom CA bundle, etc. + :param ssl_verify: ``True`` to verify SSL certificates, or ``False`` to + skip SSL certificate verification, allowing + connections to servers with self signed certificates. + The default is ``True``. + :param handle_sigint: Set to ``True`` to automatically handle disconnection + when the process is interrupted, or to ``False`` to + leave interrupt handling to the calling application. + Interrupt handling can only be enabled when the + client instance is created in the main thread. + :param websocket_extra_options: Dictionary containing additional keyword + arguments passed to + ``websocket.create_connection()``. + """ + def connect(self, url, headers=None, transports=None, + engineio_path='engine.io'): + """Connect to an Engine.IO server. + + :param url: The URL of the Engine.IO server. It can include custom + query string parameters if required by the server. + :param headers: A dictionary with custom headers to send with the + connection request. + :param transports: The list of allowed transports. Valid transports + are ``'polling'`` and ``'websocket'``. If not + given, the polling transport is connected first, + then an upgrade to websocket is attempted. + :param engineio_path: The endpoint where the Engine.IO server is + installed. The default value is appropriate for + most cases. + + Example usage:: + + eio = engineio.Client() + eio.connect('http://localhost:5000') + """ + if self.state != 'disconnected': + raise ValueError('Client is not in a disconnected state') + valid_transports = ['polling', 'websocket'] + if transports is not None: + if isinstance(transports, str): + transports = [transports] + transports = [transport for transport in transports + if transport in valid_transports] + if not transports: + raise ValueError('No valid transports provided') + self.transports = transports or valid_transports + self.queue = self.create_queue() + return getattr(self, '_connect_' + self.transports[0])( + url, headers or {}, engineio_path) + + def wait(self): + """Wait until the connection with the server ends. + + Client applications can use this function to block the main thread + during the life of the connection. + """ + if self.read_loop_task: + self.read_loop_task.join() + + def send(self, data): + """Send a message to the server. + + :param data: The data to send to the server. Data can be of type + ``str``, ``bytes``, ``list`` or ``dict``. If a ``list`` + or ``dict``, the data will be serialized as JSON. + """ + self._send_packet(packet.Packet(packet.MESSAGE, data=data)) + + def disconnect(self, abort=False): + """Disconnect from the server. + + :param abort: If set to ``True``, do not wait for background tasks + associated with the connection to end. + """ + if self.state == 'connected': + self._send_packet(packet.Packet(packet.CLOSE)) + self.queue.put(None) + self.state = 'disconnecting' + self._trigger_event('disconnect', run_async=False) + if self.current_transport == 'websocket': + self.ws.close() + if not abort: + self.read_loop_task.join() + self.state = 'disconnected' + try: + base_client.connected_clients.remove(self) + except ValueError: # pragma: no cover + pass + self._reset() + + def start_background_task(self, target, *args, **kwargs): + """Start a background task. + + This is a utility function that applications can use to start a + background task. + + :param target: the target function to execute. + :param args: arguments to pass to the function. + :param kwargs: keyword arguments to pass to the function. + + This function returns an object that represents the background task, + on which the ``join()`` method can be invoked to wait for the task to + complete. + """ + th = threading.Thread(target=target, args=args, kwargs=kwargs, + daemon=True) + th.start() + return th + + def sleep(self, seconds=0): + """Sleep for the requested amount of time.""" + return time.sleep(seconds) + + def create_queue(self, *args, **kwargs): + """Create a queue object.""" + q = queue.Queue(*args, **kwargs) + q.Empty = queue.Empty + return q + + def create_event(self, *args, **kwargs): + """Create an event object.""" + return threading.Event(*args, **kwargs) + + def _connect_polling(self, url, headers, engineio_path): + """Establish a long-polling connection to the Engine.IO server.""" + if requests is None: # pragma: no cover + # not installed + self.logger.error('requests package is not installed -- cannot ' + 'send HTTP requests!') + return + self.base_url = self._get_engineio_url(url, engineio_path, 'polling') + self.logger.info('Attempting polling connection to ' + self.base_url) + r = self._send_request( + 'GET', self.base_url + self._get_url_timestamp(), headers=headers, + timeout=self.request_timeout) + if r is None or isinstance(r, str): + self._reset() + raise exceptions.ConnectionError( + r or 'Connection refused by the server') + if r.status_code < 200 or r.status_code >= 300: + self._reset() + try: + arg = r.json() + except JSONDecodeError: + arg = None + raise exceptions.ConnectionError( + 'Unexpected status code {} in server response'.format( + r.status_code), arg) + try: + p = payload.Payload(encoded_payload=r.content.decode('utf-8')) + except ValueError: + raise exceptions.ConnectionError( + 'Unexpected response from server') from None + open_packet = p.packets[0] + if open_packet.packet_type != packet.OPEN: + raise exceptions.ConnectionError( + 'OPEN packet not returned by server') + self.logger.info( + 'Polling connection accepted with ' + str(open_packet.data)) + self.sid = open_packet.data['sid'] + self.upgrades = open_packet.data['upgrades'] + self.ping_interval = int(open_packet.data['pingInterval']) / 1000.0 + self.ping_timeout = int(open_packet.data['pingTimeout']) / 1000.0 + self.current_transport = 'polling' + self.base_url += '&sid=' + self.sid + + self.state = 'connected' + base_client.connected_clients.append(self) + self._trigger_event('connect', run_async=False) + + for pkt in p.packets[1:]: + self._receive_packet(pkt) + + if 'websocket' in self.upgrades and 'websocket' in self.transports: + # attempt to upgrade to websocket + if self._connect_websocket(url, headers, engineio_path): + # upgrade to websocket succeeded, we're done here + return + + # start background tasks associated with this client + self.write_loop_task = self.start_background_task(self._write_loop) + self.read_loop_task = self.start_background_task( + self._read_loop_polling) + + def _connect_websocket(self, url, headers, engineio_path): + """Establish or upgrade to a WebSocket connection with the server.""" + if websocket is None: # pragma: no cover + # not installed + self.logger.error('websocket-client package not installed, only ' + 'polling transport is available') + return False + websocket_url = self._get_engineio_url(url, engineio_path, 'websocket') + if self.sid: + self.logger.info( + 'Attempting WebSocket upgrade to ' + websocket_url) + upgrade = True + websocket_url += '&sid=' + self.sid + else: + upgrade = False + self.base_url = websocket_url + self.logger.info( + 'Attempting WebSocket connection to ' + websocket_url) + + # get cookies and other settings from the long-polling connection + # so that they are preserved when connecting to the WebSocket route + cookies = None + extra_options = {} + if self.http: + # cookies + cookies = '; '.join(["{}={}".format(cookie.name, cookie.value) + for cookie in self.http.cookies]) + for header, value in headers.items(): + if header.lower() == 'cookie': + if cookies: + cookies += '; ' + cookies += value + del headers[header] + break + + # auth + if 'Authorization' not in headers and self.http.auth is not None: + if not isinstance(self.http.auth, tuple): # pragma: no cover + raise ValueError('Only basic authentication is supported') + basic_auth = '{}:{}'.format( + self.http.auth[0], self.http.auth[1]).encode('utf-8') + basic_auth = b64encode(basic_auth).decode('utf-8') + headers['Authorization'] = 'Basic ' + basic_auth + + # cert + # this can be given as ('certfile', 'keyfile') or just 'certfile' + if isinstance(self.http.cert, tuple): + extra_options['sslopt'] = { + 'certfile': self.http.cert[0], + 'keyfile': self.http.cert[1]} + elif self.http.cert: + extra_options['sslopt'] = {'certfile': self.http.cert} + + # proxies + if self.http.proxies: + proxy_url = None + if websocket_url.startswith('ws://'): + proxy_url = self.http.proxies.get( + 'ws', self.http.proxies.get('http')) + else: # wss:// + proxy_url = self.http.proxies.get( + 'wss', self.http.proxies.get('https')) + if proxy_url: + parsed_url = urllib.parse.urlparse( + proxy_url if '://' in proxy_url + else 'scheme://' + proxy_url) + extra_options['http_proxy_host'] = parsed_url.hostname + extra_options['http_proxy_port'] = parsed_url.port + extra_options['http_proxy_auth'] = ( + (parsed_url.username, parsed_url.password) + if parsed_url.username or parsed_url.password + else None) + + # verify + if isinstance(self.http.verify, str): + if 'sslopt' in extra_options: + extra_options['sslopt']['ca_certs'] = self.http.verify + else: + extra_options['sslopt'] = {'ca_certs': self.http.verify} + elif not self.http.verify: + self.ssl_verify = False + + if not self.ssl_verify: + if 'sslopt' in extra_options: + extra_options['sslopt'].update({"cert_reqs": ssl.CERT_NONE}) + else: + extra_options['sslopt'] = {"cert_reqs": ssl.CERT_NONE} + + # combine internally generated options with the ones supplied by the + # caller. The caller's options take precedence. + headers.update(self.websocket_extra_options.pop('header', {})) + extra_options['header'] = headers + extra_options['cookie'] = cookies + extra_options['enable_multithread'] = True + extra_options['timeout'] = self.request_timeout + extra_options.update(self.websocket_extra_options) + try: + ws = websocket.create_connection( + websocket_url + self._get_url_timestamp(), **extra_options) + except (ConnectionError, IOError, websocket.WebSocketException): + if upgrade: + self.logger.warning( + 'WebSocket upgrade failed: connection error') + return False + else: + raise exceptions.ConnectionError('Connection error') + if upgrade: + p = packet.Packet(packet.PING, data='probe').encode() + try: + ws.send(p) + except Exception as e: # pragma: no cover + self.logger.warning( + 'WebSocket upgrade failed: unexpected send exception: %s', + str(e)) + return False + try: + p = ws.recv() + except Exception as e: # pragma: no cover + self.logger.warning( + 'WebSocket upgrade failed: unexpected recv exception: %s', + str(e)) + return False + pkt = packet.Packet(encoded_packet=p) + if pkt.packet_type != packet.PONG or pkt.data != 'probe': + self.logger.warning( + 'WebSocket upgrade failed: no PONG packet') + return False + p = packet.Packet(packet.UPGRADE).encode() + try: + ws.send(p) + except Exception as e: # pragma: no cover + self.logger.warning( + 'WebSocket upgrade failed: unexpected send exception: %s', + str(e)) + return False + self.current_transport = 'websocket' + self.logger.info('WebSocket upgrade was successful') + else: + try: + p = ws.recv() + except Exception as e: # pragma: no cover + raise exceptions.ConnectionError( + 'Unexpected recv exception: ' + str(e)) + open_packet = packet.Packet(encoded_packet=p) + if open_packet.packet_type != packet.OPEN: + raise exceptions.ConnectionError('no OPEN packet') + self.logger.info( + 'WebSocket connection accepted with ' + str(open_packet.data)) + self.sid = open_packet.data['sid'] + self.upgrades = open_packet.data['upgrades'] + self.ping_interval = int(open_packet.data['pingInterval']) / 1000.0 + self.ping_timeout = int(open_packet.data['pingTimeout']) / 1000.0 + self.current_transport = 'websocket' + + self.state = 'connected' + base_client.connected_clients.append(self) + self._trigger_event('connect', run_async=False) + self.ws = ws + self.ws.settimeout(self.ping_interval + self.ping_timeout) + + # start background tasks associated with this client + self.write_loop_task = self.start_background_task(self._write_loop) + self.read_loop_task = self.start_background_task( + self._read_loop_websocket) + return True + + def _receive_packet(self, pkt): + """Handle incoming packets from the server.""" + packet_name = packet.packet_names[pkt.packet_type] \ + if pkt.packet_type < len(packet.packet_names) else 'UNKNOWN' + self.logger.info( + 'Received packet %s data %s', packet_name, + pkt.data if not isinstance(pkt.data, bytes) else '') + if pkt.packet_type == packet.MESSAGE: + self._trigger_event('message', pkt.data, run_async=True) + elif pkt.packet_type == packet.PING: + self._send_packet(packet.Packet(packet.PONG, pkt.data)) + elif pkt.packet_type == packet.CLOSE: + self.disconnect(abort=True) + elif pkt.packet_type == packet.NOOP: + pass + else: + self.logger.error('Received unexpected packet of type %s', + pkt.packet_type) + + def _send_packet(self, pkt): + """Queue a packet to be sent to the server.""" + if self.state != 'connected': + return + self.queue.put(pkt) + self.logger.info( + 'Sending packet %s data %s', + packet.packet_names[pkt.packet_type], + pkt.data if not isinstance(pkt.data, bytes) else '') + + def _send_request( + self, method, url, headers=None, body=None, + timeout=None): # pragma: no cover + if self.http is None: + self.http = requests.Session() + if not self.ssl_verify: + self.http.verify = False + try: + return self.http.request(method, url, headers=headers, data=body, + timeout=timeout) + except requests.exceptions.RequestException as exc: + self.logger.info('HTTP %s request to %s failed with error %s.', + method, url, exc) + return str(exc) + + def _trigger_event(self, event, *args, **kwargs): + """Invoke an event handler.""" + run_async = kwargs.pop('run_async', False) + if event in self.handlers: + if run_async: + return self.start_background_task(self.handlers[event], *args) + else: + try: + return self.handlers[event](*args) + except: + self.logger.exception(event + ' handler error') + + def _read_loop_polling(self): + """Read packets by polling the Engine.IO server.""" + while self.state == 'connected' and self.write_loop_task: + self.logger.info( + 'Sending polling GET request to ' + self.base_url) + r = self._send_request( + 'GET', self.base_url + self._get_url_timestamp(), + timeout=max(self.ping_interval, self.ping_timeout) + 5) + if r is None or isinstance(r, str): + self.logger.warning( + r or 'Connection refused by the server, aborting') + self.queue.put(None) + break + if r.status_code < 200 or r.status_code >= 300: + self.logger.warning('Unexpected status code %s in server ' + 'response, aborting', r.status_code) + self.queue.put(None) + break + try: + p = payload.Payload(encoded_payload=r.content.decode('utf-8')) + except ValueError: + self.logger.warning( + 'Unexpected packet from server, aborting') + self.queue.put(None) + break + for pkt in p.packets: + self._receive_packet(pkt) + + if self.write_loop_task: # pragma: no branch + self.logger.info('Waiting for write loop task to end') + self.write_loop_task.join() + if self.state == 'connected': + self._trigger_event('disconnect', run_async=False) + try: + base_client.connected_clients.remove(self) + except ValueError: # pragma: no cover + pass + self._reset() + self.logger.info('Exiting read loop task') + + def _read_loop_websocket(self): + """Read packets from the Engine.IO WebSocket connection.""" + while self.state == 'connected': + p = None + try: + p = self.ws.recv() + if len(p) == 0 and not self.ws.connected: # pragma: no cover + # websocket client can return an empty string after close + raise websocket.WebSocketConnectionClosedException() + except websocket.WebSocketTimeoutException: + self.logger.warning( + 'Server has stopped communicating, aborting') + self.queue.put(None) + break + except websocket.WebSocketConnectionClosedException: + self.logger.warning( + 'WebSocket connection was closed, aborting') + self.queue.put(None) + break + except Exception as e: # pragma: no cover + if type(e) is OSError and e.errno == 9: + self.logger.info( + 'WebSocket connection is closing, aborting', + str(e)) + else: + self.logger.info( + 'Unexpected error receiving packet: "%s", aborting', + str(e)) + self.queue.put(None) + break + try: + pkt = packet.Packet(encoded_packet=p) + except Exception as e: # pragma: no cover + self.logger.info( + 'Unexpected error decoding packet: "%s", aborting', str(e)) + self.queue.put(None) + break + self._receive_packet(pkt) + + if self.write_loop_task: # pragma: no branch + self.logger.info('Waiting for write loop task to end') + self.write_loop_task.join() + if self.state == 'connected': + self._trigger_event('disconnect', run_async=False) + try: + base_client.connected_clients.remove(self) + except ValueError: # pragma: no cover + pass + self._reset() + self.logger.info('Exiting read loop task') + + def _write_loop(self): + """This background task sends packages to the server as they are + pushed to the send queue. + """ + while self.state == 'connected': + # to simplify the timeout handling, use the maximum of the + # ping interval and ping timeout as timeout, with an extra 5 + # seconds grace period + timeout = max(self.ping_interval, self.ping_timeout) + 5 + packets = None + try: + packets = [self.queue.get(timeout=timeout)] + except self.queue.Empty: + self.logger.error('packet queue is empty, aborting') + break + if packets == [None]: + self.queue.task_done() + packets = [] + else: + while True: + try: + packets.append(self.queue.get(block=False)) + except self.queue.Empty: + break + if packets[-1] is None: + packets = packets[:-1] + self.queue.task_done() + break + if not packets: + # empty packet list returned -> connection closed + break + if self.current_transport == 'polling': + p = payload.Payload(packets=packets) + r = self._send_request( + 'POST', self.base_url, body=p.encode(), + headers={'Content-Type': 'text/plain'}, + timeout=self.request_timeout) + for pkt in packets: + self.queue.task_done() + if r is None or isinstance(r, str): + self.logger.warning( + r or 'Connection refused by the server, aborting') + break + if r.status_code < 200 or r.status_code >= 300: + self.logger.warning('Unexpected status code %s in server ' + 'response, aborting', r.status_code) + self.write_loop_task = None + break + else: + # websocket + try: + for pkt in packets: + encoded_packet = pkt.encode() + if pkt.binary: + self.ws.send_binary(encoded_packet) + else: + self.ws.send(encoded_packet) + self.queue.task_done() + except (websocket.WebSocketConnectionClosedException, + BrokenPipeError, OSError): + self.logger.warning( + 'WebSocket connection was closed, aborting') + break + self.logger.info('Exiting write loop task') diff --git a/venv/lib/python3.12/site-packages/engineio/exceptions.py b/venv/lib/python3.12/site-packages/engineio/exceptions.py new file mode 100644 index 0000000..fb0b3e0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/exceptions.py @@ -0,0 +1,22 @@ +class EngineIOError(Exception): + pass + + +class ContentTooLongError(EngineIOError): + pass + + +class UnknownPacketError(EngineIOError): + pass + + +class QueueEmpty(EngineIOError): + pass + + +class SocketIsClosedError(EngineIOError): + pass + + +class ConnectionError(EngineIOError): + pass diff --git a/venv/lib/python3.12/site-packages/engineio/json.py b/venv/lib/python3.12/site-packages/engineio/json.py new file mode 100644 index 0000000..b612556 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/json.py @@ -0,0 +1,16 @@ +"""JSON-compatible module with sane defaults.""" + +from json import * # noqa: F401, F403 +from json import loads as original_loads + + +def _safe_int(s): + if len(s) > 100: + raise ValueError('Integer is too large') + return int(s) + + +def loads(*args, **kwargs): + if 'parse_int' not in kwargs: # pragma: no cover + kwargs['parse_int'] = _safe_int + return original_loads(*args, **kwargs) diff --git a/venv/lib/python3.12/site-packages/engineio/middleware.py b/venv/lib/python3.12/site-packages/engineio/middleware.py new file mode 100644 index 0000000..e198737 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/middleware.py @@ -0,0 +1,86 @@ +import os +from engineio.static_files import get_static_file + + +class WSGIApp(object): + """WSGI application middleware for Engine.IO. + + This middleware dispatches traffic to an Engine.IO application. It can + also serve a list of static files to the client, or forward unrelated + HTTP traffic to another WSGI application. + + :param engineio_app: The Engine.IO server. Must be an instance of the + ``engineio.Server`` class. + :param wsgi_app: The WSGI app that receives all other traffic. + :param static_files: A dictionary with static file mapping rules. See the + documentation for details on this argument. + :param engineio_path: The endpoint where the Engine.IO application should + be installed. The default value is appropriate for + most cases. + + Example usage:: + + import engineio + import eventlet + + eio = engineio.Server() + app = engineio.WSGIApp(eio, static_files={ + '/': {'content_type': 'text/html', 'filename': 'index.html'}, + '/index.html': {'content_type': 'text/html', + 'filename': 'index.html'}, + }) + eventlet.wsgi.server(eventlet.listen(('', 8000)), app) + """ + def __init__(self, engineio_app, wsgi_app=None, static_files=None, + engineio_path='engine.io'): + self.engineio_app = engineio_app + self.wsgi_app = wsgi_app + self.engineio_path = engineio_path + if not self.engineio_path.startswith('/'): + self.engineio_path = '/' + self.engineio_path + if not self.engineio_path.endswith('/'): + self.engineio_path += '/' + self.static_files = static_files or {} + + def __call__(self, environ, start_response): + if 'gunicorn.socket' in environ: + # gunicorn saves the socket under environ['gunicorn.socket'], while + # eventlet saves it under environ['eventlet.input']. Eventlet also + # stores the socket inside a wrapper class, while gunicon writes it + # directly into the environment. To give eventlet's WebSocket + # module access to this socket when running under gunicorn, here we + # copy the socket to the eventlet format. + class Input(object): + def __init__(self, socket): + self.socket = socket + + def get_socket(self): + return self.socket + + environ['eventlet.input'] = Input(environ['gunicorn.socket']) + path = environ['PATH_INFO'] + if path is not None and path.startswith(self.engineio_path): + return self.engineio_app.handle_request(environ, start_response) + else: + static_file = get_static_file(path, self.static_files) \ + if self.static_files else None + if static_file and os.path.exists(static_file['filename']): + start_response( + '200 OK', + [('Content-Type', static_file['content_type'])]) + with open(static_file['filename'], 'rb') as f: + return [f.read()] + elif self.wsgi_app is not None: + return self.wsgi_app(environ, start_response) + return self.not_found(start_response) + + def not_found(self, start_response): + start_response("404 Not Found", [('Content-Type', 'text/plain')]) + return [b'Not Found'] + + +class Middleware(WSGIApp): + """This class has been renamed to ``WSGIApp`` and is now deprecated.""" + def __init__(self, engineio_app, wsgi_app=None, + engineio_path='engine.io'): + super().__init__(engineio_app, wsgi_app, engineio_path=engineio_path) diff --git a/venv/lib/python3.12/site-packages/engineio/packet.py b/venv/lib/python3.12/site-packages/engineio/packet.py new file mode 100644 index 0000000..8e8135c --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/packet.py @@ -0,0 +1,82 @@ +import base64 +from engineio import json as _json + +(OPEN, CLOSE, PING, PONG, MESSAGE, UPGRADE, NOOP) = (0, 1, 2, 3, 4, 5, 6) +packet_names = ['OPEN', 'CLOSE', 'PING', 'PONG', 'MESSAGE', 'UPGRADE', 'NOOP'] + +binary_types = (bytes, bytearray) + + +class Packet(object): + """Engine.IO packet.""" + + json = _json + + def __init__(self, packet_type=NOOP, data=None, encoded_packet=None): + self.packet_type = packet_type + self.data = data + self.encode_cache = None + if isinstance(data, str): + self.binary = False + elif isinstance(data, binary_types): + self.binary = True + else: + self.binary = False + if self.binary and self.packet_type != MESSAGE: + raise ValueError('Binary packets can only be of type MESSAGE') + if encoded_packet is not None: + self.decode(encoded_packet) + + def encode(self, b64=False): + """Encode the packet for transmission. + + Note: as a performance optimization, subsequent calls to this method + will return a cached encoded packet, even if the data has changed. + """ + if self.encode_cache: + return self.encode_cache + if self.binary: + if b64: + encoded_packet = 'b' + base64.b64encode(self.data).decode( + 'utf-8') + else: + encoded_packet = self.data + else: + encoded_packet = str(self.packet_type) + if isinstance(self.data, str): + encoded_packet += self.data + elif isinstance(self.data, dict) or isinstance(self.data, list): + encoded_packet += self.json.dumps(self.data, + separators=(',', ':')) + elif self.data is not None: + encoded_packet += str(self.data) + self.encode_cache = encoded_packet + return encoded_packet + + def decode(self, encoded_packet): + """Decode a transmitted package.""" + self.binary = isinstance(encoded_packet, binary_types) + if not self.binary and len(encoded_packet) == 0: + raise ValueError('Invalid empty packet received') + b64 = not self.binary and encoded_packet[0] == 'b' + if b64: + self.binary = True + self.packet_type = MESSAGE + self.data = base64.b64decode(encoded_packet[1:]) + else: + if self.binary and not isinstance(encoded_packet, bytes): + encoded_packet = bytes(encoded_packet) + if self.binary: + self.packet_type = MESSAGE + self.data = encoded_packet + else: + self.packet_type = int(encoded_packet[0]) + try: + self.data = self.json.loads(encoded_packet[1:]) + if isinstance(self.data, int): + # do not allow integer payloads, see + # github.com/miguelgrinberg/python-engineio/issues/75 + # for background on this decision + raise ValueError + except ValueError: + self.data = encoded_packet[1:] diff --git a/venv/lib/python3.12/site-packages/engineio/payload.py b/venv/lib/python3.12/site-packages/engineio/payload.py new file mode 100644 index 0000000..f0e9e34 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/payload.py @@ -0,0 +1,46 @@ +import urllib + +from . import packet + + +class Payload(object): + """Engine.IO payload.""" + max_decode_packets = 16 + + def __init__(self, packets=None, encoded_payload=None): + self.packets = packets or [] + if encoded_payload is not None: + self.decode(encoded_payload) + + def encode(self, jsonp_index=None): + """Encode the payload for transmission.""" + encoded_payload = '' + for pkt in self.packets: + if encoded_payload: + encoded_payload += '\x1e' + encoded_payload += pkt.encode(b64=True) + if jsonp_index is not None: + encoded_payload = '___eio[' + \ + str(jsonp_index) + \ + ']("' + \ + encoded_payload.replace('"', '\\"') + \ + '");' + return encoded_payload + + def decode(self, encoded_payload): + """Decode a transmitted payload.""" + self.packets = [] + + if len(encoded_payload) == 0: + return + + # JSONP POST payload starts with 'd=' + if encoded_payload.startswith('d='): + encoded_payload = urllib.parse.parse_qs( + encoded_payload)['d'][0] + + encoded_packets = encoded_payload.split('\x1e') + if len(encoded_packets) > self.max_decode_packets: + raise ValueError('Too many packets in payload') + self.packets = [packet.Packet(encoded_packet=encoded_packet) + for encoded_packet in encoded_packets] diff --git a/venv/lib/python3.12/site-packages/engineio/server.py b/venv/lib/python3.12/site-packages/engineio/server.py new file mode 100644 index 0000000..3926b22 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/server.py @@ -0,0 +1,479 @@ +import logging +import urllib + +from . import base_server +from . import exceptions +from . import packet +from . import socket + +default_logger = logging.getLogger('engineio.server') + + +class Server(base_server.BaseServer): + """An Engine.IO server. + + This class implements a fully compliant Engine.IO web server with support + for websocket and long-polling transports. + + :param async_mode: The asynchronous model to use. See the Deployment + section in the documentation for a description of the + available options. Valid async modes are "threading", + "eventlet", "gevent" and "gevent_uwsgi". If this + argument is not given, "eventlet" is tried first, then + "gevent_uwsgi", then "gevent", and finally "threading". + The first async mode that has all its dependencies + installed is the one that is chosen. + :param ping_interval: The interval in seconds at which the server pings + the client. The default is 25 seconds. For advanced + control, a two element tuple can be given, where + the first number is the ping interval and the second + is a grace period added by the server. + :param ping_timeout: The time in seconds that the client waits for the + server to respond before disconnecting. The default + is 20 seconds. + :param max_http_buffer_size: The maximum size that is accepted for incoming + messages. The default is 1,000,000 bytes. In + spite of its name, the value set in this + argument is enforced for HTTP long-polling and + WebSocket connections. + :param allow_upgrades: Whether to allow transport upgrades or not. The + default is ``True``. + :param http_compression: Whether to compress packages when using the + polling transport. The default is ``True``. + :param compression_threshold: Only compress messages when their byte size + is greater than this value. The default is + 1024 bytes. + :param cookie: If set to a string, it is the name of the HTTP cookie the + server sends back tot he client containing the client + session id. If set to a dictionary, the ``'name'`` key + contains the cookie name and other keys define cookie + attributes, where the value of each attribute can be a + string, a callable with no arguments, or a boolean. If set + to ``None`` (the default), a cookie is not sent to the + client. + :param cors_allowed_origins: Origin or list of origins that are allowed to + connect to this server. Only the same origin + is allowed by default. Set this argument to + ``'*'`` to allow all origins, or to ``[]`` to + disable CORS handling. + :param cors_credentials: Whether credentials (cookies, authentication) are + allowed in requests to this server. The default + is ``True``. + :param logger: To enable logging set to ``True`` or pass a logger object to + use. To disable logging set to ``False``. The default is + ``False``. Note that fatal errors are logged even when + ``logger`` is ``False``. + :param json: An alternative json module to use for encoding and decoding + packets. Custom json modules must have ``dumps`` and ``loads`` + functions that are compatible with the standard library + versions. + :param async_handlers: If set to ``True``, run message event handlers in + non-blocking threads. To run handlers synchronously, + set to ``False``. The default is ``True``. + :param monitor_clients: If set to ``True``, a background task will ensure + inactive clients are closed. Set to ``False`` to + disable the monitoring task (not recommended). The + default is ``True``. + :param transports: The list of allowed transports. Valid transports + are ``'polling'`` and ``'websocket'``. Defaults to + ``['polling', 'websocket']``. + :param kwargs: Reserved for future extensions, any additional parameters + given as keyword arguments will be silently ignored. + """ + def send(self, sid, data): + """Send a message to a client. + + :param sid: The session id of the recipient client. + :param data: The data to send to the client. Data can be of type + ``str``, ``bytes``, ``list`` or ``dict``. If a ``list`` + or ``dict``, the data will be serialized as JSON. + """ + self.send_packet(sid, packet.Packet(packet.MESSAGE, data=data)) + + def send_packet(self, sid, pkt): + """Send a raw packet to a client. + + :param sid: The session id of the recipient client. + :param pkt: The packet to send to the client. + """ + try: + socket = self._get_socket(sid) + except KeyError: + # the socket is not available + self.logger.warning('Cannot send to sid %s', sid) + return + socket.send(pkt) + + def get_session(self, sid): + """Return the user session for a client. + + :param sid: The session id of the client. + + The return value is a dictionary. Modifications made to this + dictionary are not guaranteed to be preserved unless + ``save_session()`` is called, or when the ``session`` context manager + is used. + """ + socket = self._get_socket(sid) + return socket.session + + def save_session(self, sid, session): + """Store the user session for a client. + + :param sid: The session id of the client. + :param session: The session dictionary. + """ + socket = self._get_socket(sid) + socket.session = session + + def session(self, sid): + """Return the user session for a client with context manager syntax. + + :param sid: The session id of the client. + + This is a context manager that returns the user session dictionary for + the client. Any changes that are made to this dictionary inside the + context manager block are saved back to the session. Example usage:: + + @eio.on('connect') + def on_connect(sid, environ): + username = authenticate_user(environ) + if not username: + return False + with eio.session(sid) as session: + session['username'] = username + + @eio.on('message') + def on_message(sid, msg): + with eio.session(sid) as session: + print('received message from ', session['username']) + """ + class _session_context_manager(object): + def __init__(self, server, sid): + self.server = server + self.sid = sid + self.session = None + + def __enter__(self): + self.session = self.server.get_session(sid) + return self.session + + def __exit__(self, *args): + self.server.save_session(sid, self.session) + + return _session_context_manager(self, sid) + + def disconnect(self, sid=None): + """Disconnect a client. + + :param sid: The session id of the client to close. If this parameter + is not given, then all clients are closed. + """ + if sid is not None: + try: + socket = self._get_socket(sid) + except KeyError: # pragma: no cover + # the socket was already closed or gone + pass + else: + socket.close() + if sid in self.sockets: # pragma: no cover + del self.sockets[sid] + else: + for client in self.sockets.values(): + client.close() + self.sockets = {} + + def handle_request(self, environ, start_response): + """Handle an HTTP request from the client. + + This is the entry point of the Engine.IO application, using the same + interface as a WSGI application. For the typical usage, this function + is invoked by the :class:`Middleware` instance, but it can be invoked + directly when the middleware is not used. + + :param environ: The WSGI environment. + :param start_response: The WSGI ``start_response`` function. + + This function returns the HTTP response body to deliver to the client + as a byte sequence. + """ + if self.cors_allowed_origins != []: + # Validate the origin header if present + # This is important for WebSocket more than for HTTP, since + # browsers only apply CORS controls to HTTP. + origin = environ.get('HTTP_ORIGIN') + if origin: + allowed_origins = self._cors_allowed_origins(environ) + if allowed_origins is not None and origin not in \ + allowed_origins: + self._log_error_once( + origin + ' is not an accepted origin.', 'bad-origin') + r = self._bad_request('Not an accepted origin.') + start_response(r['status'], r['headers']) + return [r['response']] + + method = environ['REQUEST_METHOD'] + query = urllib.parse.parse_qs(environ.get('QUERY_STRING', '')) + jsonp = False + jsonp_index = None + + # make sure the client uses an allowed transport + transport = query.get('transport', ['polling'])[0] + if transport not in self.transports: + self._log_error_once('Invalid transport', 'bad-transport') + r = self._bad_request('Invalid transport') + start_response(r['status'], r['headers']) + return [r['response']] + + # make sure the client speaks a compatible Engine.IO version + sid = query['sid'][0] if 'sid' in query else None + if sid is None and query.get('EIO') != ['4']: + self._log_error_once( + 'The client is using an unsupported version of the Socket.IO ' + 'or Engine.IO protocols', 'bad-version') + r = self._bad_request( + 'The client is using an unsupported version of the Socket.IO ' + 'or Engine.IO protocols') + start_response(r['status'], r['headers']) + return [r['response']] + + if 'j' in query: + jsonp = True + try: + jsonp_index = int(query['j'][0]) + except (ValueError, KeyError, IndexError): + # Invalid JSONP index number + pass + + if jsonp and jsonp_index is None: + self._log_error_once('Invalid JSONP index number', + 'bad-jsonp-index') + r = self._bad_request('Invalid JSONP index number') + elif method == 'GET': + if sid is None: + # transport must be one of 'polling' or 'websocket'. + # if 'websocket', the HTTP_UPGRADE header must match. + upgrade_header = environ.get('HTTP_UPGRADE').lower() \ + if 'HTTP_UPGRADE' in environ else None + if transport == 'polling' \ + or transport == upgrade_header == 'websocket': + r = self._handle_connect(environ, start_response, + transport, jsonp_index) + else: + self._log_error_once('Invalid websocket upgrade', + 'bad-upgrade') + r = self._bad_request('Invalid websocket upgrade') + else: + if sid not in self.sockets: + self._log_error_once('Invalid session ' + sid, 'bad-sid') + r = self._bad_request('Invalid session') + else: + socket = self._get_socket(sid) + try: + packets = socket.handle_get_request( + environ, start_response) + if isinstance(packets, list): + r = self._ok(packets, jsonp_index=jsonp_index) + else: + r = packets + except exceptions.EngineIOError: + if sid in self.sockets: # pragma: no cover + self.disconnect(sid) + r = self._bad_request() + if sid in self.sockets and self.sockets[sid].closed: + del self.sockets[sid] + elif method == 'POST': + if sid is None or sid not in self.sockets: + self._log_error_once( + 'Invalid session ' + (sid or 'None'), 'bad-sid') + r = self._bad_request('Invalid session') + else: + socket = self._get_socket(sid) + try: + socket.handle_post_request(environ) + r = self._ok(jsonp_index=jsonp_index) + except exceptions.EngineIOError: + if sid in self.sockets: # pragma: no cover + self.disconnect(sid) + r = self._bad_request() + except: # pragma: no cover + # for any other unexpected errors, we log the error + # and keep going + self.logger.exception('post request handler error') + r = self._ok(jsonp_index=jsonp_index) + elif method == 'OPTIONS': + r = self._ok() + else: + self.logger.warning('Method %s not supported', method) + r = self._method_not_found() + + if not isinstance(r, dict): + return r + if self.http_compression and \ + len(r['response']) >= self.compression_threshold: + encodings = [e.split(';')[0].strip() for e in + environ.get('HTTP_ACCEPT_ENCODING', '').split(',')] + for encoding in encodings: + if encoding in self.compression_methods: + r['response'] = \ + getattr(self, '_' + encoding)(r['response']) + r['headers'] += [('Content-Encoding', encoding)] + break + cors_headers = self._cors_headers(environ) + start_response(r['status'], r['headers'] + cors_headers) + return [r['response']] + + def shutdown(self): + """Stop Socket.IO background tasks. + + This method stops background activity initiated by the Socket.IO + server. It must be called before shutting down the web server. + """ + self.logger.info('Socket.IO is shutting down') + if self.service_task_event: # pragma: no cover + self.service_task_event.set() + self.service_task_handle.join() + self.service_task_handle = None + + def start_background_task(self, target, *args, **kwargs): + """Start a background task using the appropriate async model. + + This is a utility function that applications can use to start a + background task using the method that is compatible with the + selected async mode. + + :param target: the target function to execute. + :param args: arguments to pass to the function. + :param kwargs: keyword arguments to pass to the function. + + This function returns an object that represents the background task, + on which the ``join()`` methond can be invoked to wait for the task to + complete. + """ + th = self._async['thread'](target=target, args=args, kwargs=kwargs) + th.start() + return th # pragma: no cover + + def sleep(self, seconds=0): + """Sleep for the requested amount of time using the appropriate async + model. + + This is a utility function that applications can use to put a task to + sleep without having to worry about using the correct call for the + selected async mode. + """ + return self._async['sleep'](seconds) + + def _handle_connect(self, environ, start_response, transport, + jsonp_index=None): + """Handle a client connection request.""" + if self.start_service_task: + # start the service task to monitor connected clients + self.start_service_task = False + self.service_task_handle = self.start_background_task( + self._service_task) + + sid = self.generate_id() + s = socket.Socket(self, sid) + self.sockets[sid] = s + + pkt = packet.Packet(packet.OPEN, { + 'sid': sid, + 'upgrades': self._upgrades(sid, transport), + 'pingTimeout': int(self.ping_timeout * 1000), + 'pingInterval': int( + self.ping_interval + self.ping_interval_grace_period) * 1000}) + s.send(pkt) + s.schedule_ping() + + # NOTE: some sections below are marked as "no cover" to workaround + # what seems to be a bug in the coverage package. All the lines below + # are covered by tests, but some are not reported as such for some + # reason + ret = self._trigger_event('connect', sid, environ, run_async=False) + if ret is not None and ret is not True: # pragma: no cover + del self.sockets[sid] + self.logger.warning('Application rejected connection') + return self._unauthorized(ret or None) + + if transport == 'websocket': # pragma: no cover + ret = s.handle_get_request(environ, start_response) + if s.closed and sid in self.sockets: + # websocket connection ended, so we are done + del self.sockets[sid] + return ret + else: # pragma: no cover + s.connected = True + headers = None + if self.cookie: + if isinstance(self.cookie, dict): + headers = [( + 'Set-Cookie', + self._generate_sid_cookie(sid, self.cookie) + )] + else: + headers = [( + 'Set-Cookie', + self._generate_sid_cookie(sid, { + 'name': self.cookie, 'path': '/', 'SameSite': 'Lax' + }) + )] + try: + return self._ok(s.poll(), headers=headers, + jsonp_index=jsonp_index) + except exceptions.QueueEmpty: + return self._bad_request() + + def _trigger_event(self, event, *args, **kwargs): + """Invoke an event handler.""" + run_async = kwargs.pop('run_async', False) + if event in self.handlers: + def run_handler(): + try: + return self.handlers[event](*args) + except: + self.logger.exception(event + ' handler error') + if event == 'connect': + # if connect handler raised error we reject the + # connection + return False + + if run_async: + return self.start_background_task(run_handler) + else: + return run_handler() + + def _service_task(self): # pragma: no cover + """Monitor connected clients and clean up those that time out.""" + self.service_task_event = self.create_event() + while not self.service_task_event.is_set(): + if len(self.sockets) == 0: + # nothing to do + if self.service_task_event.wait(timeout=self.ping_timeout): + break + continue + + # go through the entire client list in a ping interval cycle + sleep_interval = float(self.ping_timeout) / len(self.sockets) + + try: + # iterate over the current clients + for s in self.sockets.copy().values(): + if s.closed: + try: + del self.sockets[s.sid] + except KeyError: + # the socket could have also been removed by + # the _get_socket() method from another thread + pass + elif not s.closing: + s.check_ping_timeout() + if self.service_task_event.wait(timeout=sleep_interval): + raise KeyboardInterrupt() + except (SystemExit, KeyboardInterrupt): + self.logger.info('service task canceled') + break + except: + # an unexpected exception has occurred, log it and continue + self.logger.exception('service task exception') diff --git a/venv/lib/python3.12/site-packages/engineio/socket.py b/venv/lib/python3.12/site-packages/engineio/socket.py new file mode 100644 index 0000000..de8fd35 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/socket.py @@ -0,0 +1,250 @@ +import sys +import time + +from . import base_socket +from . import exceptions +from . import packet +from . import payload + + +class Socket(base_socket.BaseSocket): + """An Engine.IO socket.""" + def poll(self): + """Wait for packets to send to the client.""" + queue_empty = self.server.get_queue_empty_exception() + try: + packets = [self.queue.get( + timeout=self.server.ping_interval + self.server.ping_timeout)] + self.queue.task_done() + except queue_empty: + raise exceptions.QueueEmpty() + if packets == [None]: + return [] + while True: + try: + pkt = self.queue.get(block=False) + self.queue.task_done() + if pkt is None: + self.queue.put(None) + break + packets.append(pkt) + except queue_empty: + break + return packets + + def receive(self, pkt): + """Receive packet from the client.""" + packet_name = packet.packet_names[pkt.packet_type] \ + if pkt.packet_type < len(packet.packet_names) else 'UNKNOWN' + self.server.logger.info('%s: Received packet %s data %s', + self.sid, packet_name, + pkt.data if not isinstance(pkt.data, bytes) + else '') + if pkt.packet_type == packet.PONG: + self.schedule_ping() + elif pkt.packet_type == packet.MESSAGE: + self.server._trigger_event('message', self.sid, pkt.data, + run_async=self.server.async_handlers) + elif pkt.packet_type == packet.UPGRADE: + self.send(packet.Packet(packet.NOOP)) + elif pkt.packet_type == packet.CLOSE: + self.close(wait=False, abort=True) + else: + raise exceptions.UnknownPacketError() + + def check_ping_timeout(self): + """Make sure the client is still responding to pings.""" + if self.closed: + raise exceptions.SocketIsClosedError() + if self.last_ping and \ + time.time() - self.last_ping > self.server.ping_timeout: + self.server.logger.info('%s: Client is gone, closing socket', + self.sid) + # Passing abort=False here will cause close() to write a + # CLOSE packet. This has the effect of updating half-open sockets + # to their correct state of disconnected + self.close(wait=False, abort=False) + return False + return True + + def send(self, pkt): + """Send a packet to the client.""" + if not self.check_ping_timeout(): + return + else: + self.queue.put(pkt) + self.server.logger.info('%s: Sending packet %s data %s', + self.sid, packet.packet_names[pkt.packet_type], + pkt.data if not isinstance(pkt.data, bytes) + else '') + + def handle_get_request(self, environ, start_response): + """Handle a long-polling GET request from the client.""" + connections = [ + s.strip() + for s in environ.get('HTTP_CONNECTION', '').lower().split(',')] + transport = environ.get('HTTP_UPGRADE', '').lower() + if 'upgrade' in connections and transport in self.upgrade_protocols: + self.server.logger.info('%s: Received request to upgrade to %s', + self.sid, transport) + return getattr(self, '_upgrade_' + transport)(environ, + start_response) + if self.upgrading or self.upgraded: + # we are upgrading to WebSocket, do not return any more packets + # through the polling endpoint + return [packet.Packet(packet.NOOP)] + try: + packets = self.poll() + except exceptions.QueueEmpty: + exc = sys.exc_info() + self.close(wait=False) + raise exc[1].with_traceback(exc[2]) + return packets + + def handle_post_request(self, environ): + """Handle a long-polling POST request from the client.""" + length = int(environ.get('CONTENT_LENGTH', '0')) + if length > self.server.max_http_buffer_size: + raise exceptions.ContentTooLongError() + else: + body = environ['wsgi.input'].read(length).decode('utf-8') + p = payload.Payload(encoded_payload=body) + for pkt in p.packets: + self.receive(pkt) + + def close(self, wait=True, abort=False): + """Close the socket connection.""" + if not self.closed and not self.closing: + self.closing = True + self.server._trigger_event('disconnect', self.sid, run_async=False) + if not abort: + self.send(packet.Packet(packet.CLOSE)) + self.closed = True + self.queue.put(None) + if wait: + self.queue.join() + + def schedule_ping(self): + self.server.start_background_task(self._send_ping) + + def _send_ping(self): + self.last_ping = None + self.server.sleep(self.server.ping_interval) + if not self.closing and not self.closed: + self.last_ping = time.time() + self.send(packet.Packet(packet.PING)) + + def _upgrade_websocket(self, environ, start_response): + """Upgrade the connection from polling to websocket.""" + if self.upgraded: + raise IOError('Socket has been upgraded already') + if self.server._async['websocket'] is None: + # the selected async mode does not support websocket + return self.server._bad_request() + ws = self.server._async['websocket']( + self._websocket_handler, self.server) + return ws(environ, start_response) + + def _websocket_handler(self, ws): + """Engine.IO handler for websocket transport.""" + def websocket_wait(): + data = ws.wait() + if data and len(data) > self.server.max_http_buffer_size: + raise ValueError('packet is too large') + return data + + # try to set a socket timeout matching the configured ping interval + # and timeout + for attr in ['_sock', 'socket']: # pragma: no cover + if hasattr(ws, attr) and hasattr(getattr(ws, attr), 'settimeout'): + getattr(ws, attr).settimeout( + self.server.ping_interval + self.server.ping_timeout) + + if self.connected: + # the socket was already connected, so this is an upgrade + self.upgrading = True # hold packet sends during the upgrade + + pkt = websocket_wait() + decoded_pkt = packet.Packet(encoded_packet=pkt) + if decoded_pkt.packet_type != packet.PING or \ + decoded_pkt.data != 'probe': + self.server.logger.info( + '%s: Failed websocket upgrade, no PING packet', self.sid) + self.upgrading = False + return [] + ws.send(packet.Packet(packet.PONG, data='probe').encode()) + self.queue.put(packet.Packet(packet.NOOP)) # end poll + + pkt = websocket_wait() + decoded_pkt = packet.Packet(encoded_packet=pkt) + if decoded_pkt.packet_type != packet.UPGRADE: + self.upgraded = False + self.server.logger.info( + ('%s: Failed websocket upgrade, expected UPGRADE packet, ' + 'received %s instead.'), + self.sid, pkt) + self.upgrading = False + return [] + self.upgraded = True + self.upgrading = False + else: + self.connected = True + self.upgraded = True + + # start separate writer thread + def writer(): + while True: + packets = None + try: + packets = self.poll() + except exceptions.QueueEmpty: + break + if not packets: + # empty packet list returned -> connection closed + break + try: + for pkt in packets: + ws.send(pkt.encode()) + except: + break + ws.close() + + writer_task = self.server.start_background_task(writer) + + self.server.logger.info( + '%s: Upgrade to websocket successful', self.sid) + + while True: + p = None + try: + p = websocket_wait() + except Exception as e: + # if the socket is already closed, we can assume this is a + # downstream error of that + if not self.closed: # pragma: no cover + self.server.logger.info( + '%s: Unexpected error "%s", closing connection', + self.sid, str(e)) + break + if p is None: + # connection closed by client + break + pkt = packet.Packet(encoded_packet=p) + try: + self.receive(pkt) + except exceptions.UnknownPacketError: # pragma: no cover + pass + except exceptions.SocketIsClosedError: # pragma: no cover + self.server.logger.info('Receive error -- socket is closed') + break + except: # pragma: no cover + # if we get an unexpected exception we log the error and exit + # the connection properly + self.server.logger.exception('Unknown receive error') + break + + self.queue.put(None) # unlock the writer task so that it can exit + writer_task.join() + self.close(wait=False, abort=True) + + return [] diff --git a/venv/lib/python3.12/site-packages/engineio/static_files.py b/venv/lib/python3.12/site-packages/engineio/static_files.py new file mode 100644 index 0000000..77c8915 --- /dev/null +++ b/venv/lib/python3.12/site-packages/engineio/static_files.py @@ -0,0 +1,60 @@ +content_types = { + 'css': 'text/css', + 'gif': 'image/gif', + 'html': 'text/html', + 'jpg': 'image/jpeg', + 'js': 'application/javascript', + 'json': 'application/json', + 'png': 'image/png', + 'txt': 'text/plain', +} + + +def get_static_file(path, static_files): + """Return the local filename and content type for the requested static + file URL. + + :param path: the path portion of the requested URL. + :param static_files: a static file configuration dictionary. + + This function returns a dictionary with two keys, "filename" and + "content_type". If the requested URL does not match any static file, the + return value is None. + """ + extra_path = '' + if path in static_files: + f = static_files[path] + else: + f = None + while path != '': + path, last = path.rsplit('/', 1) + extra_path = '/' + last + extra_path + if path in static_files: + f = static_files[path] + break + elif path + '/' in static_files: + f = static_files[path + '/'] + break + if f: + if isinstance(f, str): + f = {'filename': f} + else: + f = f.copy() # in case it is mutated below + if f['filename'].endswith('/') and extra_path.startswith('/'): + extra_path = extra_path[1:] + f['filename'] += extra_path + if f['filename'].endswith('/'): + if '' in static_files: + if isinstance(static_files[''], str): + f['filename'] += static_files[''] + else: + f['filename'] += static_files['']['filename'] + if 'content_type' in static_files['']: + f['content_type'] = static_files['']['content_type'] + else: + f['filename'] += 'index.html' + if 'content_type' not in f: + ext = f['filename'].rsplit('.')[-1] + f['content_type'] = content_types.get( + ext, 'application/octet-stream') + return f diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/LICENSE b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/LICENSE new file mode 100644 index 0000000..d5dbb7e --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2016 Tomás Aparicio + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/METADATA new file mode 100644 index 0000000..287a97a --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/METADATA @@ -0,0 +1,213 @@ +Metadata-Version: 2.1 +Name: filetype +Version: 1.2.0 +Summary: Infer file type and MIME type of any file/buffer. No external dependencies. +Home-page: https://github.com/h2non/filetype.py +Author: Tomas Aparicio +Author-email: tomas@aparicio.me +License: MIT +Download-URL: https://github.com/h2non/filetype.py/tarball/master +Keywords: file libmagic magic infer numbers magicnumbers discovery mime type kind +Platform: any +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Console +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: MIT License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Topic :: System +Classifier: Topic :: System :: Filesystems +Classifier: Topic :: Utilities + +filetype.py |Build Status| |PyPI| |Pyversions| |API| +==================================================== + +Small and dependency free `Python`_ package to infer file type and MIME +type checking the `magic numbers`_ signature of a file or buffer. + +This is a Python port from `filetype`_ Go package. + +Features +-------- + +- Simple and friendly API +- Supports a `wide range`_ of file types +- Provides file extension and MIME type inference +- File discovery by extension or MIME type +- File discovery by kind (image, video, audio…) +- `Pluggable`_: add new custom type matchers +- `Fast`_, even processing large files +- Only first 261 bytes representing the max file header is required, so + you can just `pass a list of bytes`_ +- Dependency free (just Python code, no C extensions, no libmagic + bindings) +- Cross-platform file recognition + +Installation +------------ + +:: + + pip install filetype + +API +--- + +See `annotated API reference`_. + +Examples +-------- + +Simple file type checking +^^^^^^^^^^^^^^^^^^^^^^^^^ + +.. code-block:: python + + import filetype + + def main(): + kind = filetype.guess('tests/fixtures/sample.jpg') + if kind is None: + print('Cannot guess file type!') + return + + print('File extension: %s' % kind.extension) + print('File MIME type: %s' % kind.mime) + + if __name__ == '__main__': + main() + +Supported types +--------------- + +Image +^^^^^ + +- **dwg** - ``image/vnd.dwg`` +- **xcf** - ``image/x-xcf`` +- **jpg** - ``image/jpeg`` +- **jpx** - ``image/jpx`` +- **png** - ``image/png`` +- **apng** - ``image/apng`` +- **gif** - ``image/gif`` +- **webp** - ``image/webp`` +- **cr2** - ``image/x-canon-cr2`` +- **tif** - ``image/tiff`` +- **bmp** - ``image/bmp`` +- **jxr** - ``image/vnd.ms-photo`` +- **psd** - ``image/vnd.adobe.photoshop`` +- **ico** - ``image/x-icon`` +- **heic** - ``image/heic`` +- **avif** - ``image/avif`` + +Video +^^^^^ + +- **3gp** - ``video/3gpp`` +- **mp4** - ``video/mp4`` +- **m4v** - ``video/x-m4v`` +- **mkv** - ``video/x-matroska`` +- **webm** - ``video/webm`` +- **mov** - ``video/quicktime`` +- **avi** - ``video/x-msvideo`` +- **wmv** - ``video/x-ms-wmv`` +- **mpg** - ``video/mpeg`` +- **flv** - ``video/x-flv`` + +Audio +^^^^^ + +- **aac** - ``audio/aac`` +- **mid** - ``audio/midi`` +- **mp3** - ``audio/mpeg`` +- **m4a** - ``audio/mp4`` +- **ogg** - ``audio/ogg`` +- **flac** - ``audio/x-flac`` +- **wav** - ``audio/x-wav`` +- **amr** - ``audio/amr`` +- **aiff** - ``audio/x-aiff`` + +Archive +^^^^^^^ + +- **br** - ``application/x-brotli`` +- **rpm** - ``application/x-rpm`` +- **dcm** - ``application/dicom`` +- **epub** - ``application/epub+zip`` +- **zip** - ``application/zip`` +- **tar** - ``application/x-tar`` +- **rar** - ``application/x-rar-compressed`` +- **gz** - ``application/gzip`` +- **bz2** - ``application/x-bzip2`` +- **7z** - ``application/x-7z-compressed`` +- **xz** - ``application/x-xz`` +- **pdf** - ``application/pdf`` +- **exe** - ``application/x-msdownload`` +- **swf** - ``application/x-shockwave-flash`` +- **rtf** - ``application/rtf`` +- **eot** - ``application/octet-stream`` +- **ps** - ``application/postscript`` +- **sqlite** - ``application/x-sqlite3`` +- **nes** - ``application/x-nintendo-nes-rom`` +- **crx** - ``application/x-google-chrome-extension`` +- **cab** - ``application/vnd.ms-cab-compressed`` +- **deb** - ``application/x-deb`` +- **ar** - ``application/x-unix-archive`` +- **Z** - ``application/x-compress`` +- **lzo** - ``application/x-lzop`` +- **lz** - ``application/x-lzip`` +- **lz4** - ``application/x-lz4`` +- **zstd** - ``application/zstd`` + +Document +^^^^^^^^ + +- **doc** - ``application/msword`` +- **docx** - ``application/vnd.openxmlformats-officedocument.wordprocessingml.document`` +- **odt** - ``application/vnd.oasis.opendocument.text`` +- **xls** - ``application/vnd.ms-excel`` +- **xlsx** - ``application/vnd.openxmlformats-officedocument.spreadsheetml.sheet`` +- **ods** - ``application/vnd.oasis.opendocument.spreadsheet`` +- **ppt** - ``application/vnd.ms-powerpoint`` +- **pptx** - ``application/vnd.openxmlformats-officedocument.presentationml.presentation`` +- **odp** - ``application/vnd.oasis.opendocument.presentation`` + +Font +^^^^ + +- **woff** - ``application/font-woff`` +- **woff2** - ``application/font-woff`` +- **ttf** - ``application/font-sfnt`` +- **otf** - ``application/font-sfnt`` + +Application +^^^^^^^^^^^ + +- **wasm** - ``application/wasm`` + +.. _Python: http://python.org +.. _magic numbers: https://en.wikipedia.org/wiki/Magic_number_(programming)#Magic_numbers_in_files +.. _filetype: https://github.com/h2non/filetype +.. _wide range: #supported-types +.. _Pluggable: #add-additional-file-type-matchers +.. _Fast: #benchmarks +.. _pass a list of bytes: #file-header +.. _annotated API reference: https://h2non.github.io/filetype.py/ + +.. |Build Status| image:: https://travis-ci.org/h2non/filetype.py.svg?branch=master + :target: https://travis-ci.org/h2non/filetype.py +.. |PyPI| image:: https://img.shields.io/pypi/v/filetype.svg?maxAge=2592000?style=flat-square + :target: https://pypi.python.org/pypi/filetype +.. |Pyversions| image:: https://img.shields.io/pypi/pyversions/filetype.svg?style=flat-square + :target: https://pypi.python.org/pypi/filetype +.. |API| image:: https://img.shields.io/badge/api-docs-green.svg + :target: https://h2non.github.io/filetype.py + + diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/RECORD new file mode 100644 index 0000000..dff4c31 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/RECORD @@ -0,0 +1,42 @@ +../../../bin/filetype,sha256=HMsY1a6Vbd-LUJIJGXMq4kye3fHfgPq-Je1tIpWAceE,245 +filetype-1.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +filetype-1.2.0.dist-info/LICENSE,sha256=jkTiqjWzcb3MhWvPDSRCpBDdVf3maw38L83wdtl5Rqw,1082 +filetype-1.2.0.dist-info/METADATA,sha256=MPLH6RLq9ns07GM7qWCYU3h-oeJfoTHx9YW8BmH6v1E,6512 +filetype-1.2.0.dist-info/RECORD,, +filetype-1.2.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +filetype-1.2.0.dist-info/WHEEL,sha256=ADKeyaGyKF5DwBNE0sRE5pvW-bSkFMJfBuhzZ3rceP4,110 +filetype-1.2.0.dist-info/entry_points.txt,sha256=Zek5WP3znYaTL7Rwzo0gdSFP-mr2fRR2XvwAA773YDY,53 +filetype-1.2.0.dist-info/top_level.txt,sha256=9E4F1bIRPoq5TGtC-BHwM1_svcsWYRiC0N_qAGrlW0Y,9 +filetype-1.2.0.dist-info/zip-safe,sha256=AbpHGcgLb-kRsJGnwFEktk7uzpZOCcBY74-YBdrKVGs,1 +filetype/__init__.py,sha256=7c1C2XIbB7md1oI-0nwBzxoD52he_7NYry3YQV5OXa8,223 +filetype/__main__.py,sha256=4-2VK-0hB2mLL_HukB8cOa0jsQKLq95gG4UhCPqF0rg,803 +filetype/__pycache__/__init__.cpython-312.pyc,, +filetype/__pycache__/__main__.cpython-312.pyc,, +filetype/__pycache__/filetype.cpython-312.pyc,, +filetype/__pycache__/helpers.cpython-312.pyc,, +filetype/__pycache__/match.cpython-312.pyc,, +filetype/__pycache__/utils.cpython-312.pyc,, +filetype/filetype.py,sha256=SBYUBugfBQSO9z7zyWaXOak6UpLUlmZZ--5FpN0fybM,2122 +filetype/helpers.py,sha256=O0hofWlmG8J_X81IuQ8KszvjgnUb-O6BzO-wUJRTLV0,2947 +filetype/match.py,sha256=XUHst4XDmYlJtfYAMlGuySl2IWia2UoCb8NIDYiCRgI,3288 +filetype/types/__init__.py,sha256=baH8xCYyatykxtCUccgGGIwNdit6x5jGsXxWTvpo4t8,2085 +filetype/types/__pycache__/__init__.cpython-312.pyc,, +filetype/types/__pycache__/application.cpython-312.pyc,, +filetype/types/__pycache__/archive.cpython-312.pyc,, +filetype/types/__pycache__/audio.cpython-312.pyc,, +filetype/types/__pycache__/base.cpython-312.pyc,, +filetype/types/__pycache__/document.cpython-312.pyc,, +filetype/types/__pycache__/font.cpython-312.pyc,, +filetype/types/__pycache__/image.cpython-312.pyc,, +filetype/types/__pycache__/isobmff.cpython-312.pyc,, +filetype/types/__pycache__/video.cpython-312.pyc,, +filetype/types/application.py,sha256=6Knc4Y38GbfuoSjdPl29vIsusjNIPjLWVk22nxCnS9I,498 +filetype/types/archive.py,sha256=kZWEHJmJ1NmQT0Hm-JmEHI1TXg5NrzxJ4YCbfV-6y8c,17006 +filetype/types/audio.py,sha256=oOAS-cdA175rELcK_17w-gylJkmSh8FTrAoVAOwsfUA,4960 +filetype/types/base.py,sha256=dvvqVjuSqwtbh2qyP7QnmeWUWUsfrHwJ_rOEgJmDQZ8,647 +filetype/types/document.py,sha256=mxOhuymNIpsqMWCgy-Fm8vkSgDoSeCXYADxmO1JPx6Q,7513 +filetype/types/font.py,sha256=nP5Ey-EcKMU4phGYtIlQ08I5cecWnr5vzDLVbiPOiyY,2924 +filetype/types/image.py,sha256=r8pINANPJZbCEmZKn8F74fFffk4INtDin_GtQtQImZs,9130 +filetype/types/isobmff.py,sha256=zLXCbTET6wp_9yq8jE3bhBRTaCdSAKma5ElyHVGd2Sk,958 +filetype/types/video.py,sha256=DfkFd5ofnEK25r_n71LxjX3nAAgO8xJ7Op_lL9uEbNc,5371 +filetype/utils.py,sha256=sjZCMfYawZ6RWN1Dr3jDmsqIjLSEBFubNgi8HROjaPQ,2089 diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/WHEEL new file mode 100644 index 0000000..6d38aa0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/WHEEL @@ -0,0 +1,6 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.35.1) +Root-Is-Purelib: true +Tag: py2-none-any +Tag: py3-none-any + diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/entry_points.txt new file mode 100644 index 0000000..2909098 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +filetype = filetype.__main__:main + diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/top_level.txt new file mode 100644 index 0000000..fb14e2f --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/top_level.txt @@ -0,0 +1 @@ +filetype diff --git a/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/zip-safe b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/zip-safe new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype-1.2.0.dist-info/zip-safe @@ -0,0 +1 @@ + diff --git a/venv/lib/python3.12/site-packages/filetype/__init__.py b/venv/lib/python3.12/site-packages/filetype/__init__.py new file mode 100644 index 0000000..3d0610e --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/__init__.py @@ -0,0 +1,10 @@ +# -*- coding: utf-8 -*- + +from __future__ import absolute_import + +from .filetype import * # noqa +from .helpers import * # noqa +from .match import * # noqa + +# Current package semver version +__version__ = version = '1.2.0' diff --git a/venv/lib/python3.12/site-packages/filetype/__main__.py b/venv/lib/python3.12/site-packages/filetype/__main__.py new file mode 100644 index 0000000..7df5c4f --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/__main__.py @@ -0,0 +1,37 @@ +import sys + +import filetype + + +def guess(path): + kind = filetype.guess(path) + if kind is None: + print('{}: File type determination failure.'.format(path)) + else: + print('{}: {} ({})'.format(path, kind.extension, kind.mime)) + + +def main(): + import argparse + + parser = argparse.ArgumentParser( + prog='filetype', description='Determine type of FILEs.' + ) + parser.add_argument('-f', '--file', nargs='+') + parser.add_argument( + '-v', '--version', action='version', + version='%(prog)s ' + filetype.version, + help='output version information and exit' + ) + + args = parser.parse_args() + if len(sys.argv) < 2: + parser.print_help() + sys.exit(1) + + for i in args.file: + guess(i) + + +if __name__ == '__main__': + main() diff --git a/venv/lib/python3.12/site-packages/filetype/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..15ec771d2f01d3b7fbca863ae90d40b985424392 GIT binary patch literal 360 zcmX|*zfQw25XSAKNvl>>7X)IVY$!;?G)N2x!NSbM)Wu4hYhvO2k?j=HiIped85npH z7G|pw11#MtRV++6&~n4w@9sX`cdy-U8=2U6HZ>(+#EP*nlCnE)?9NbRJd8Yj9#>D06=&nVT+H9n(NZTEdck~{^HiX@5U zG&Z(m^+y7Uirm7Xha3}u+G~31wNfuQB(gi<5GlQIb3;!(b!NSbX_P1X&71c(Z{B=w z|4`K!;52i6F?UG<;Dy)(6!L}BMK0U}7+_cgtNj(OLLB-YtcI|}xkL~~>+=9mIRuEb z?*~FqgEeS`PsDyD3w^a%qWsU#1E;@pb`Q8`wnA_!*9X)9`@X#i8?ZI)h64+R1(E3$ z8u$lsyb^FOD)joO1}w<0q~cqy^?LMw%f6_d)AFgT7~GCxP+E0 z+jOn6t*@C@u}Vp@t_ZKqrar&fG>iz7*LZ;NXW?9xI1UR}sAan>vR0-g(`7^Cj!SHZ zr(mdLm532ysA9T#hSn_`JECQ}{_mHme7QtYC7L(0>x8D##L1d8XF92G$nAyH2C+9% zMeBB|QgicV`*QNbg_L8tBvIk+W{xQ~ZE)OE3Y=kgEo2R|}-V zNFWW?07rOuo!^Mg@hZm#)<6pKLf{Suy25xM4OTo7UnIBg%sY94{gXXFwV!L06EoE^N;|#ZYI`4A* z95K&bSR5u5iOnRZ<}k$f8!YBcWJa9AkSKs5aW!u;3`8eI4G}M%dJztTmLvM6bE0u! zMq;Sw92W%=oS!*sfoEv!x%y^Doo%bLU3KDc?s`uG+T1A!X_3})F9O0!2Tiom#2(tq zKgb@Ui6>~Gi(-9cSB`J3-#5A=(?8`qGs!mpjU>D3LN5x!lm7q|j`ZRn{zgZ+&{i%S zDKo9~aWuAbdH3q})$f{jzkVE@?8;h4o@&cePvq%iS=p7h<-4Oh%5!ye_tws>Ey(A3 z%luLPn-?`f1(ul{d>xE1eTOUh4HN_6-A&kSvqUnPhrkQyUta#GRL0dJS)vB_6i?*5 t$5~H;5IzI37hw2hBn)rDmm_0vwD$o(@vZt}Y3ffT|FFzEg5LIW{Rd%Ba{d4S literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/__pycache__/filetype.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/__pycache__/filetype.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7a148335e48f7fa7d5787b08f0902f3d23dd5e5d GIT binary patch literal 2841 zcmcgu&2Jk;6rWkI-Plf=gqAi`O*&Me#Uj}BOQIGks+v>{w5Dpp0SmA;-m$%@_d_$| z6j!bkP$gQZL?jO7SR^DA<G&|7JWkT~()?5>lLz=<%@zI{70?_=io zKK7e|fee8$_Ik1YMjs(R<3~JL9{%ajt^uoF$gHOhwO&1S+i%ch$w zCn@1(IbkPnl5)yU0o`Tq0@`P1?etArPTLvy%C!4({f|(6j&=vFIq5fBidP&r@P&Fr zVSbr*ldh$zjhxX<&c1VbYNl(>wgX`fs><7bc+-AyWR<+6l z#oSg?IYBejBSAJ4*TR-(vw+up;cD$3=UNsGI_LoRs+`SP5)`6^*ydSLmqo1rUG?YY zi!88I1C7?4CZAw)ZN~Xk(GMo@k6oVD!$Zr9Gb(SIr~$#(}KC0@*%jUWJvrWV?X5K|56R zcj$ba0jMMzGo*vTM6Ka%f(d>7r-ga}arz$LpheQ8PyL;&m%_B}Jql1wV$c=er$ zfSjQ*>6)(N@?}F{ap{^@9nY3{myC%l&SW%v72G7Afr&%#$T1*`hytGnQC?cZgo4cMf-qDzvW|Vv;t6?rB^b0Jxsw-}d#Aaw=ahviYDs!2%D68=ORPqSp>EWr|_hi1S#BI4%^+ z!hFC%Xu+|$UvPmBo7lg$g{=qNS{bkpm2!!066>%Od*L$0Adp-_zq$!Hkr;*viHO1G zFw6VuTvbp+JO|U~aJ>Lzk^C`2hWFhvA7%$J0KS;{Hp}i!em(u=^!>dL#!o%mv;UJf zA17hU;}q#1+M4tTDjHg=0oh!^RWE#2B2H!%HYGi5x`Is!#z$18LXMF6bj+>4Z3BKE zA`O(Z6FKwx=Nf~vwk?^(Jbo>#^I>-t(9omkfG&-{6`R|m+%^tknIfBoO9B$g`t!3LGv{<^|hDSom0klu|lKy>5jjzn_vM>C&d;jXlg$KK* zSNo=aG1DJk{P5z^@Y03v%~6eM&M1{~*>0v%skPw0g;y#9Q56V`c0%kz4&BpDMRy8; z6-CFBK+DTStBRa@&Gqe8lb;cXVF{6zuK;MK1e6lfDEmT5705K@h@)|%|8GD literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/__pycache__/helpers.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/__pycache__/helpers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fcb09724c6edf42ded1781033040896baa07c0a8 GIT binary patch literal 3763 zcmcgv&2Jk;6rZuzpBu+@4M`i?XarG{4J9kuUTRf|5KScxZBdg8mXNjfPV7zgOEc>f zqaZ55feIvgYmT{A{3%>4 zP{<>=rk5(suT+G76@%WDh?N5yl&8o5+X1avj_T62t`(F*fxo*Tsaxal?84(*TCP0OTS zJgFLO)9MWh25Ype&3KW9@X))Gposh67Ko=P=sicb(WhmEzQ9{}y@yhN4xufyF^3Sx z-<2`yUETAs8JeTl*S#Fb9T-tgrC0=C6 z+rB`6nxx*5Z?0K3CGx{5;|qCd{{d_AiqwQBSe4Adf?9=04%PBn(1j!*We7ASL9F6}{y-RCid*XlziX-=@4_u%^NFhqQi82i!Jw+p6n+Cun)@ z^@aDZ>D&tFdp?*$P;g!BG3fYIZ&BM9Ao-ne!s4~Q+gg9mtOPzG0T6#1#3OWg0hK1c zQGQa3-!DF1++NvL$_x5hF*N{ZHYch;2cvya7v{0)x-QLxw~h~o_8fq~dH z6LGvG=8rhIxLw{=FYl~&RjsRNXXD^xoq7!p#KAi{2Bf#);V*ip0sKV<$o_&&!}NV& zG9|=_tBtJGBSSj!Haw(rFGE^7W(1~d!sP5ozxda6MRc7b16n#89?qH5aLzzP3%^X9 zs~+4On%}sjPdsUSyR$XCXzUDh(PR*6>({QMv4NS+b0D)FND;jm_2~uyYi#{2K*VqlK=n! literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/__pycache__/match.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/__pycache__/match.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6102e24a7dc88ee24391628fed4e8ce99f9430d6 GIT binary patch literal 4161 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/types/__pycache__/application.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/types/__pycache__/application.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a602163e3d9551aa2c10e93cd9f261eaac1c7f8b GIT binary patch literal 1139 zcmYjPJ8#rL5T5npa(Cp&1BjGFpyQ?Bf|vv<1P4foPzpj3B#u_yzJxL_$Ru~b*FG*`9s9jFj2n6)yl zz75vE4r~xBy97oi(Vp5O*qmAjBA*2;j72f7vZ4$Yy}({(#TY9V13PxAj8AV4+fn3u zjvafo&|F7WqDgdQf4xsbL%ynAMR-eE5cf_X?zIbB@cI<|=dWb?q`vWwy^`$*`^HDI z*S(EE0}N%+P!cWh0+!_1M$AHiEgE{Fi+aR3AHcjMOQ{!nF{O$2XyMU(lAC|_WPWjJ z;c=QPm|sb9lsdjG1f@dWUTpq(ZdPjnGXq|=omIxoIVK#NFWbUgXXROQjfHEb@0HD{ z5m#&B&FPt0Q+P4E9w8kC6lTTqnN-n~Ak6<1oQ@j2fK@gNQt;_scc(EVt|I(y!hW{! z%H5s&oV~O^a;`Q0W_*8aq7}Xg4|T|0J^?kCZzB<$zOd-XHB1L^4UHCT;Xb%z0^b@4!|Y-G8->%f*EBm@Xt4mCaa2e^;9awBFo=XS$T_%KouwOp@s zlq>R48PL<++03UeOzpE678enk@MUOpcXs!|&iXs!2*}mDZ6K4SpFoC7hd^>Aeg;`a zPR=c~1BP?UQySFVx-acPN?+7%zk4!3sata>nr>m5_i2H>dRqAn_V@F(y zo@ixTFfM11ay~%%ijElBJDu)J{0g4S`eGd6P$h(%WPnWlfU)DuX;Rv`bprTHQ~v_Z CB?m76 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/types/__pycache__/archive.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/types/__pycache__/archive.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..7c63c79313861d54f3ad58ea6b3a9f32be526e74 GIT binary patch literal 27395 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 ZK49z6VSB7wP6DUH_DSd@UqFYg_iyIw?)U%z literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/types/__pycache__/base.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/types/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..04c9daac47a8e8d045cc66d28b5c3d6c66ad7d8d GIT binary patch literal 1548 zcmb_c&1(}u6rb5_l1=)NYDKh)9jhJ!+C>FH5k07=mm(@2a#=Pz(`GgM;mo$0m_w0* z6$Fp<=(YH#c!>v577v2|Ks9>tu>7>6#NTX|v- z@(GpUDCUd794xkoL9P-`HVCJJyeee22JIO2f;T*YGeps2a1Ev{B1nUB(l9t}6u7ZL z8m1`n!UlPjyERInn`3&J7s1QoC6Ep_l&xK-M6t0QThuF;Z zJfT!1nHzG}675(>7Ko%3@%)gNv!GMKyip%85L={2d&GfNHhKnVbf|U6HeIS4>4bwh zIZogQBAv+<@h}mg@}sa`NKGZ$%c-gDm61W=HNe96J9aAygdND1>)jL5zATjI$`x1H z4@C2n4SB5DZNF*99RMAkUOaiqR=~=M7~I_zp==}$d9zU{yXh*i7l z02hZUwu;&XVx7F-JGW^*n|OcV=%)GB+Bd+|yitOn;9Ap>HBXP+MVH^kEh4eWwy7*- zlLeE)qfAbKlob%&iUxrsOrv=c#5(y{n|=Q1>7%|iC#PWJU+yl$c{zij$8N@4yVLsS z5%Igx2QldD-__>d)aLuvd6T zAKmgs$?Eii_iGD%YvE5kqeekuw@3mq8;_}Ojyg?em!jl)5Vu7D&rWAH}W=(^S{2;_rNbNfLFnzdh9o8V0>J!-Lp&P&pOsnt;Bfi?k^`zt6Uv=BL zrR+F7@*GEE-=$V8Blr&_9o?F`R&oy*Bo;wpuWu6_KI>m>0*S(ePhA4BK|UL1(fU#~ zipO>=Qkwp3(BgqX0aiP>+9~CGY_!L|lxXn;iX#IM8HYM5{zOXIKTqqD!3{sJPp$J= dQWxX`7?5dQm7M~m^sBX>E^MCpMqtuMegOP5N>~5@ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/types/__pycache__/document.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/types/__pycache__/document.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b3d83b3bf47333af3984d74824ccf7e0e1b822c4 GIT binary patch literal 10081 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/types/__pycache__/image.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/types/__pycache__/image.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6d09196500e62645e2ce8af546a601fa5e4a402e GIT binary patch literal 14663 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 Cr;gA7 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/filetype/types/__pycache__/isobmff.cpython-312.pyc b/venv/lib/python3.12/site-packages/filetype/types/__pycache__/isobmff.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..218acefd6aa4d8c906d8edc16ef874d9c6a4765f GIT binary patch literal 1946 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 pz-^ 57 and + buf[0] == 0x50 and buf[1] == 0x4B and + buf[2] == 0x3 and buf[3] == 0x4 and + buf[30] == 0x6D and buf[31] == 0x69 and + buf[32] == 0x6D and buf[33] == 0x65 and + buf[34] == 0x74 and buf[35] == 0x79 and + buf[36] == 0x70 and buf[37] == 0x65 and + buf[38] == 0x61 and buf[39] == 0x70 and + buf[40] == 0x70 and buf[41] == 0x6C and + buf[42] == 0x69 and buf[43] == 0x63 and + buf[44] == 0x61 and buf[45] == 0x74 and + buf[46] == 0x69 and buf[47] == 0x6F and + buf[48] == 0x6E and buf[49] == 0x2F and + buf[50] == 0x65 and buf[51] == 0x70 and + buf[52] == 0x75 and buf[53] == 0x62 and + buf[54] == 0x2B and buf[55] == 0x7A and + buf[56] == 0x69 and buf[57] == 0x70) + + +class Zip(Type): + """ + Implements the Zip archive type matcher. + """ + MIME = 'application/zip' + EXTENSION = 'zip' + + def __init__(self): + super(Zip, self).__init__( + mime=Zip.MIME, + extension=Zip.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x50 and buf[1] == 0x4B and + (buf[2] == 0x3 or buf[2] == 0x5 or + buf[2] == 0x7) and + (buf[3] == 0x4 or buf[3] == 0x6 or + buf[3] == 0x8)) + + +class Tar(Type): + """ + Implements the Tar archive type matcher. + """ + MIME = 'application/x-tar' + EXTENSION = 'tar' + + def __init__(self): + super(Tar, self).__init__( + mime=Tar.MIME, + extension=Tar.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 261 and + buf[257] == 0x75 and + buf[258] == 0x73 and + buf[259] == 0x74 and + buf[260] == 0x61 and + buf[261] == 0x72) + + +class Rar(Type): + """ + Implements the RAR archive type matcher. + """ + MIME = 'application/x-rar-compressed' + EXTENSION = 'rar' + + def __init__(self): + super(Rar, self).__init__( + mime=Rar.MIME, + extension=Rar.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 6 and + buf[0] == 0x52 and + buf[1] == 0x61 and + buf[2] == 0x72 and + buf[3] == 0x21 and + buf[4] == 0x1A and + buf[5] == 0x7 and + (buf[6] == 0x0 or + buf[6] == 0x1)) + + +class Gz(Type): + """ + Implements the GZ archive type matcher. + """ + MIME = 'application/gzip' + EXTENSION = 'gz' + + def __init__(self): + super(Gz, self).__init__( + mime=Gz.MIME, + extension=Gz.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 2 and + buf[0] == 0x1F and + buf[1] == 0x8B and + buf[2] == 0x8) + + +class Bz2(Type): + """ + Implements the BZ2 archive type matcher. + """ + MIME = 'application/x-bzip2' + EXTENSION = 'bz2' + + def __init__(self): + super(Bz2, self).__init__( + mime=Bz2.MIME, + extension=Bz2.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 2 and + buf[0] == 0x42 and + buf[1] == 0x5A and + buf[2] == 0x68) + + +class SevenZ(Type): + """ + Implements the SevenZ (7z) archive type matcher. + """ + MIME = 'application/x-7z-compressed' + EXTENSION = '7z' + + def __init__(self): + super(SevenZ, self).__init__( + mime=SevenZ.MIME, + extension=SevenZ.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 5 and + buf[0] == 0x37 and + buf[1] == 0x7A and + buf[2] == 0xBC and + buf[3] == 0xAF and + buf[4] == 0x27 and + buf[5] == 0x1C) + + +class Pdf(Type): + """ + Implements the PDF archive type matcher. + """ + MIME = 'application/pdf' + EXTENSION = 'pdf' + + def __init__(self): + super(Pdf, self).__init__( + mime=Pdf.MIME, + extension=Pdf.EXTENSION + ) + + def match(self, buf): + # Detect BOM and skip first 3 bytes + if (len(buf) > 3 and + buf[0] == 0xEF and + buf[1] == 0xBB and + buf[2] == 0xBF): # noqa E129 + buf = buf[3:] + + return (len(buf) > 3 and + buf[0] == 0x25 and + buf[1] == 0x50 and + buf[2] == 0x44 and + buf[3] == 0x46) + + +class Exe(Type): + """ + Implements the EXE archive type matcher. + """ + MIME = 'application/x-msdownload' + EXTENSION = 'exe' + + def __init__(self): + super(Exe, self).__init__( + mime=Exe.MIME, + extension=Exe.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 1 and + buf[0] == 0x4D and + buf[1] == 0x5A) + + +class Swf(Type): + """ + Implements the SWF archive type matcher. + """ + MIME = 'application/x-shockwave-flash' + EXTENSION = 'swf' + + def __init__(self): + super(Swf, self).__init__( + mime=Swf.MIME, + extension=Swf.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 2 and + (buf[0] == 0x43 or + buf[0] == 0x46) and + buf[1] == 0x57 and + buf[2] == 0x53) + + +class Rtf(Type): + """ + Implements the RTF archive type matcher. + """ + MIME = 'application/rtf' + EXTENSION = 'rtf' + + def __init__(self): + super(Rtf, self).__init__( + mime=Rtf.MIME, + extension=Rtf.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 4 and + buf[0] == 0x7B and + buf[1] == 0x5C and + buf[2] == 0x72 and + buf[3] == 0x74 and + buf[4] == 0x66) + + +class Nes(Type): + """ + Implements the NES archive type matcher. + """ + MIME = 'application/x-nintendo-nes-rom' + EXTENSION = 'nes' + + def __init__(self): + super(Nes, self).__init__( + mime=Nes.MIME, + extension=Nes.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x4E and + buf[1] == 0x45 and + buf[2] == 0x53 and + buf[3] == 0x1A) + + +class Crx(Type): + """ + Implements the CRX archive type matcher. + """ + MIME = 'application/x-google-chrome-extension' + EXTENSION = 'crx' + + def __init__(self): + super(Crx, self).__init__( + mime=Crx.MIME, + extension=Crx.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x43 and + buf[1] == 0x72 and + buf[2] == 0x32 and + buf[3] == 0x34) + + +class Cab(Type): + """ + Implements the CAB archive type matcher. + """ + MIME = 'application/vnd.ms-cab-compressed' + EXTENSION = 'cab' + + def __init__(self): + super(Cab, self).__init__( + mime=Cab.MIME, + extension=Cab.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + ((buf[0] == 0x4D and + buf[1] == 0x53 and + buf[2] == 0x43 and + buf[3] == 0x46) or + (buf[0] == 0x49 and + buf[1] == 0x53 and + buf[2] == 0x63 and + buf[3] == 0x28))) + + +class Eot(Type): + """ + Implements the EOT archive type matcher. + """ + MIME = 'application/octet-stream' + EXTENSION = 'eot' + + def __init__(self): + super(Eot, self).__init__( + mime=Eot.MIME, + extension=Eot.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 35 and + buf[34] == 0x4C and + buf[35] == 0x50 and + ((buf[8] == 0x02 and + buf[9] == 0x00 and + buf[10] == 0x01) or + (buf[8] == 0x01 and + buf[9] == 0x00 and + buf[10] == 0x00) or + (buf[8] == 0x02 and + buf[9] == 0x00 and + buf[10] == 0x02))) + + +class Ps(Type): + """ + Implements the PS archive type matcher. + """ + MIME = 'application/postscript' + EXTENSION = 'ps' + + def __init__(self): + super(Ps, self).__init__( + mime=Ps.MIME, + extension=Ps.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 1 and + buf[0] == 0x25 and + buf[1] == 0x21) + + +class Xz(Type): + """ + Implements the XS archive type matcher. + """ + MIME = 'application/x-xz' + EXTENSION = 'xz' + + def __init__(self): + super(Xz, self).__init__( + mime=Xz.MIME, + extension=Xz.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 5 and + buf[0] == 0xFD and + buf[1] == 0x37 and + buf[2] == 0x7A and + buf[3] == 0x58 and + buf[4] == 0x5A and + buf[5] == 0x00) + + +class Sqlite(Type): + """ + Implements the Sqlite DB archive type matcher. + """ + MIME = 'application/x-sqlite3' + EXTENSION = 'sqlite' + + def __init__(self): + super(Sqlite, self).__init__( + mime=Sqlite.MIME, + extension=Sqlite.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x53 and + buf[1] == 0x51 and + buf[2] == 0x4C and + buf[3] == 0x69) + + +class Deb(Type): + """ + Implements the DEB archive type matcher. + """ + MIME = 'application/x-deb' + EXTENSION = 'deb' + + def __init__(self): + super(Deb, self).__init__( + mime=Deb.MIME, + extension=Deb.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 20 and + buf[0] == 0x21 and + buf[1] == 0x3C and + buf[2] == 0x61 and + buf[3] == 0x72 and + buf[4] == 0x63 and + buf[5] == 0x68 and + buf[6] == 0x3E and + buf[7] == 0x0A and + buf[8] == 0x64 and + buf[9] == 0x65 and + buf[10] == 0x62 and + buf[11] == 0x69 and + buf[12] == 0x61 and + buf[13] == 0x6E and + buf[14] == 0x2D and + buf[15] == 0x62 and + buf[16] == 0x69 and + buf[17] == 0x6E and + buf[18] == 0x61 and + buf[19] == 0x72 and + buf[20] == 0x79) + + +class Ar(Type): + """ + Implements the AR archive type matcher. + """ + MIME = 'application/x-unix-archive' + EXTENSION = 'ar' + + def __init__(self): + super(Ar, self).__init__( + mime=Ar.MIME, + extension=Ar.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 6 and + buf[0] == 0x21 and + buf[1] == 0x3C and + buf[2] == 0x61 and + buf[3] == 0x72 and + buf[4] == 0x63 and + buf[5] == 0x68 and + buf[6] == 0x3E) + + +class Z(Type): + """ + Implements the Z archive type matcher. + """ + MIME = 'application/x-compress' + EXTENSION = 'Z' + + def __init__(self): + super(Z, self).__init__( + mime=Z.MIME, + extension=Z.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 1 and + ((buf[0] == 0x1F and + buf[1] == 0xA0) or + (buf[0] == 0x1F and + buf[1] == 0x9D))) + + +class Lzop(Type): + """ + Implements the Lzop archive type matcher. + """ + MIME = 'application/x-lzop' + EXTENSION = 'lzo' + + def __init__(self): + super(Lzop, self).__init__( + mime=Lzop.MIME, + extension=Lzop.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 7 and + buf[0] == 0x89 and + buf[1] == 0x4C and + buf[2] == 0x5A and + buf[3] == 0x4F and + buf[4] == 0x00 and + buf[5] == 0x0D and + buf[6] == 0x0A and + buf[7] == 0x1A) + + +class Lz(Type): + """ + Implements the Lz archive type matcher. + """ + MIME = 'application/x-lzip' + EXTENSION = 'lz' + + def __init__(self): + super(Lz, self).__init__( + mime=Lz.MIME, + extension=Lz.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x4C and + buf[1] == 0x5A and + buf[2] == 0x49 and + buf[3] == 0x50) + + +class Elf(Type): + """ + Implements the Elf archive type matcher + """ + MIME = 'application/x-executable' + EXTENSION = 'elf' + + def __init__(self): + super(Elf, self).__init__( + mime=Elf.MIME, + extension=Elf.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 52 and + buf[0] == 0x7F and + buf[1] == 0x45 and + buf[2] == 0x4C and + buf[3] == 0x46) + + +class Lz4(Type): + """ + Implements the Lz4 archive type matcher. + """ + MIME = 'application/x-lz4' + EXTENSION = 'lz4' + + def __init__(self): + super(Lz4, self).__init__( + mime=Lz4.MIME, + extension=Lz4.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x04 and + buf[1] == 0x22 and + buf[2] == 0x4D and + buf[3] == 0x18) + + +class Br(Type): + """Implements the Br image type matcher.""" + + MIME = 'application/x-brotli' + EXTENSION = 'br' + + def __init__(self): + super(Br, self).__init__( + mime=Br.MIME, + extension=Br.EXTENSION + ) + + def match(self, buf): + return buf[:4] == bytearray([0xce, 0xb2, 0xcf, 0x81]) + + +class Dcm(Type): + """Implements the Dcm image type matcher.""" + + MIME = 'application/dicom' + EXTENSION = 'dcm' + + def __init__(self): + super(Dcm, self).__init__( + mime=Dcm.MIME, + extension=Dcm.EXTENSION + ) + + def match(self, buf): + return buf[128:131] == bytearray([0x44, 0x49, 0x43, 0x4d]) + + +class Rpm(Type): + """Implements the Rpm image type matcher.""" + + MIME = 'application/x-rpm' + EXTENSION = 'rpm' + + def __init__(self): + super(Rpm, self).__init__( + mime=Rpm.MIME, + extension=Rpm.EXTENSION + ) + + def match(self, buf): + return buf[:4] == bytearray([0xed, 0xab, 0xee, 0xdb]) + + +class Zstd(Type): + """ + Implements the Zstd archive type matcher. + https://github.com/facebook/zstd/blob/dev/doc/zstd_compression_format.md + """ + MIME = 'application/zstd' + EXTENSION = 'zst' + MAGIC_SKIPPABLE_START = 0x184D2A50 + MAGIC_SKIPPABLE_MASK = 0xFFFFFFF0 + + def __init__(self): + super(Zstd, self).__init__( + mime=Zstd.MIME, + extension=Zstd.EXTENSION + ) + + @staticmethod + def _to_little_endian_int(buf): + # return int.from_bytes(buf, byteorder='little') + return struct.unpack(' 3 and + buf[0] in (0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28) and + buf[1] == 0xb5 and + buf[2] == 0x2f and + buf[3] == 0xfd) + if is_zstd: + return True + # skippable frames + if len(buf) < 8: + return False + magic = self._to_little_endian_int(buf[:4]) & Zstd.MAGIC_SKIPPABLE_MASK + if magic == Zstd.MAGIC_SKIPPABLE_START: + user_data_len = self._to_little_endian_int(buf[4:8]) + if len(buf) < 8 + user_data_len: + return False + next_frame = buf[8 + user_data_len:] + return self.match(next_frame) + return False diff --git a/venv/lib/python3.12/site-packages/filetype/types/audio.py b/venv/lib/python3.12/site-packages/filetype/types/audio.py new file mode 100644 index 0000000..3d1f20c --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/types/audio.py @@ -0,0 +1,212 @@ +# -*- coding: utf-8 -*- + +from __future__ import absolute_import + +from .base import Type + + +class Midi(Type): + """ + Implements the Midi audio type matcher. + """ + MIME = 'audio/midi' + EXTENSION = 'midi' + + def __init__(self): + super(Midi, self).__init__( + mime=Midi.MIME, + extension=Midi.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x4D and + buf[1] == 0x54 and + buf[2] == 0x68 and + buf[3] == 0x64) + + +class Mp3(Type): + """ + Implements the MP3 audio type matcher. + """ + MIME = 'audio/mpeg' + EXTENSION = 'mp3' + + def __init__(self): + super(Mp3, self).__init__( + mime=Mp3.MIME, + extension=Mp3.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 2 and + ((buf[0] == 0x49 and + buf[1] == 0x44 and + buf[2] == 0x33) or + (buf[0] == 0xFF and + buf[1] == 0xF2) or + (buf[0] == 0xFF and + buf[1] == 0xF3) or + (buf[0] == 0xFF and + buf[1] == 0xFB))) + + +class M4a(Type): + """ + Implements the M4A audio type matcher. + """ + MIME = 'audio/mp4' + EXTENSION = 'm4a' + + def __init__(self): + super(M4a, self).__init__( + mime=M4a.MIME, + extension=M4a.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 10 and + ((buf[4] == 0x66 and + buf[5] == 0x74 and + buf[6] == 0x79 and + buf[7] == 0x70 and + buf[8] == 0x4D and + buf[9] == 0x34 and + buf[10] == 0x41) or + (buf[0] == 0x4D and + buf[1] == 0x34 and + buf[2] == 0x41 and + buf[3] == 0x20))) + + +class Ogg(Type): + """ + Implements the OGG audio type matcher. + """ + MIME = 'audio/ogg' + EXTENSION = 'ogg' + + def __init__(self): + super(Ogg, self).__init__( + mime=Ogg.MIME, + extension=Ogg.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x4F and + buf[1] == 0x67 and + buf[2] == 0x67 and + buf[3] == 0x53) + + +class Flac(Type): + """ + Implements the FLAC audio type matcher. + """ + MIME = 'audio/x-flac' + EXTENSION = 'flac' + + def __init__(self): + super(Flac, self).__init__( + mime=Flac.MIME, + extension=Flac.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x66 and + buf[1] == 0x4C and + buf[2] == 0x61 and + buf[3] == 0x43) + + +class Wav(Type): + """ + Implements the WAV audio type matcher. + """ + MIME = 'audio/x-wav' + EXTENSION = 'wav' + + def __init__(self): + super(Wav, self).__init__( + mime=Wav.MIME, + extension=Wav.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 11 and + buf[0] == 0x52 and + buf[1] == 0x49 and + buf[2] == 0x46 and + buf[3] == 0x46 and + buf[8] == 0x57 and + buf[9] == 0x41 and + buf[10] == 0x56 and + buf[11] == 0x45) + + +class Amr(Type): + """ + Implements the AMR audio type matcher. + """ + MIME = 'audio/amr' + EXTENSION = 'amr' + + def __init__(self): + super(Amr, self).__init__( + mime=Amr.MIME, + extension=Amr.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 11 and + buf[0] == 0x23 and + buf[1] == 0x21 and + buf[2] == 0x41 and + buf[3] == 0x4D and + buf[4] == 0x52 and + buf[5] == 0x0A) + + +class Aac(Type): + """Implements the Aac audio type matcher.""" + + MIME = 'audio/aac' + EXTENSION = 'aac' + + def __init__(self): + super(Aac, self).__init__( + mime=Aac.MIME, + extension=Aac.EXTENSION + ) + + def match(self, buf): + return (buf[:2] == bytearray([0xff, 0xf1]) or + buf[:2] == bytearray([0xff, 0xf9])) + + +class Aiff(Type): + """ + Implements the AIFF audio type matcher. + """ + MIME = 'audio/x-aiff' + EXTENSION = 'aiff' + + def __init__(self): + super(Aiff, self).__init__( + mime=Aiff.MIME, + extension=Aiff.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 11 and + buf[0] == 0x46 and + buf[1] == 0x4F and + buf[2] == 0x52 and + buf[3] == 0x4D and + buf[8] == 0x41 and + buf[9] == 0x49 and + buf[10] == 0x46 and + buf[11] == 0x46) diff --git a/venv/lib/python3.12/site-packages/filetype/types/base.py b/venv/lib/python3.12/site-packages/filetype/types/base.py new file mode 100644 index 0000000..7c0c0d2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/types/base.py @@ -0,0 +1,29 @@ +# -*- coding: utf-8 -*- + + +class Type(object): + """ + Represents the file type object inherited by + specific file type matchers. + Provides convenient accessor and helper methods. + """ + def __init__(self, mime, extension): + self.__mime = mime + self.__extension = extension + + @property + def mime(self): + return self.__mime + + @property + def extension(self): + return self.__extension + + def is_extension(self, extension): + return self.__extension is extension + + def is_mime(self, mime): + return self.__mime is mime + + def match(self, buf): + raise NotImplementedError diff --git a/venv/lib/python3.12/site-packages/filetype/types/document.py b/venv/lib/python3.12/site-packages/filetype/types/document.py new file mode 100644 index 0000000..9f57e98 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/types/document.py @@ -0,0 +1,256 @@ +# -*- coding: utf-8 -*- + +from __future__ import absolute_import + +from .base import Type + + +class ZippedDocumentBase(Type): + def match(self, buf): + # start by checking for ZIP local file header signature + idx = self.search_signature(buf, 0, 6000) + if idx != 0: + return + + return self.match_document(buf) + + def match_document(self, buf): + raise NotImplementedError + + def compare_bytes(self, buf, subslice, start_offset): + sl = len(subslice) + + if start_offset + sl > len(buf): + return False + + return buf[start_offset:start_offset + sl] == subslice + + def search_signature(self, buf, start, rangeNum): + signature = b"PK\x03\x04" + length = len(buf) + + end = start + rangeNum + end = length if end > length else end + + if start >= end: + return -1 + + try: + return buf.index(signature, start, end) + except ValueError: + return -1 + + +class OpenDocument(ZippedDocumentBase): + def match_document(self, buf): + # Check if first file in archive is the identifying file + if not self.compare_bytes(buf, b"mimetype", 0x1E): + return + + # Check content of mimetype file if it matches current mime + return self.compare_bytes(buf, bytes(self.mime, "ASCII"), 0x26) + + +class OfficeOpenXml(ZippedDocumentBase): + def match_document(self, buf): + # Check if first file in archive is the identifying file + ft = self.match_filename(buf, 0x1E) + if ft: + return ft + + # Otherwise check that the fist file is one of these + if ( + not self.compare_bytes(buf, b"[Content_Types].xml", 0x1E) + and not self.compare_bytes(buf, b"_rels/.rels", 0x1E) + and not self.compare_bytes(buf, b"docProps", 0x1E) + ): + return + + # Loop through next 3 files and check if they match + # NOTE: OpenOffice/Libreoffice orders ZIP entry differently, so check the 4th file + # https://github.com/h2non/filetype/blob/d730d98ad5c990883148485b6fd5adbdd378364a/matchers/document.go#L134 + idx = 0 + for i in range(4): + # Search for next file header + idx = self.search_signature(buf, idx + 4, 6000) + if idx == -1: + return + + # Filename is at file header + 30 + ft = self.match_filename(buf, idx + 30) + if ft: + return ft + + def match_filename(self, buf, offset): + if self.compare_bytes(buf, b"word/", offset): + return ( + self.mime + == "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + ) + if self.compare_bytes(buf, b"ppt/", offset): + return ( + self.mime + == "application/vnd.openxmlformats-officedocument.presentationml.presentation" + ) + if self.compare_bytes(buf, b"xl/", offset): + return ( + self.mime + == "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + ) + + +class Doc(Type): + """ + Implements the Microsoft Word (Office 97-2003) document type matcher. + """ + + MIME = "application/msword" + EXTENSION = "doc" + + def __init__(self): + super(Doc, self).__init__(mime=Doc.MIME, extension=Doc.EXTENSION) + + def match(self, buf): + if len(buf) > 515 and buf[0:8] == b"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1": + if buf[512:516] == b"\xEC\xA5\xC1\x00": + return True + if ( + len(buf) > 2142 + and b"\x00\x0A\x00\x00\x00MSWordDoc\x00\x10\x00\x00\x00Word.Document.8\x00\xF49\xB2q" + in buf[2075:2142] + ): + return True + + return False + + +class Docx(OfficeOpenXml): + """ + Implements the Microsoft Word OOXML (Office 2007+) document type matcher. + """ + + MIME = "application/vnd.openxmlformats-officedocument.wordprocessingml.document" + EXTENSION = "docx" + + def __init__(self): + super(Docx, self).__init__(mime=Docx.MIME, extension=Docx.EXTENSION) + + +class Odt(OpenDocument): + """ + Implements the OpenDocument Text document type matcher. + """ + + MIME = "application/vnd.oasis.opendocument.text" + EXTENSION = "odt" + + def __init__(self): + super(Odt, self).__init__(mime=Odt.MIME, extension=Odt.EXTENSION) + + +class Xls(Type): + """ + Implements the Microsoft Excel (Office 97-2003) document type matcher. + """ + + MIME = "application/vnd.ms-excel" + EXTENSION = "xls" + + def __init__(self): + super(Xls, self).__init__(mime=Xls.MIME, extension=Xls.EXTENSION) + + def match(self, buf): + if len(buf) > 520 and buf[0:8] == b"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1": + if buf[512:516] == b"\xFD\xFF\xFF\xFF" and ( + buf[518] == 0x00 or buf[518] == 0x02 + ): + return True + if buf[512:520] == b"\x09\x08\x10\x00\x00\x06\x05\x00": + return True + if ( + len(buf) > 2095 + and b"\xE2\x00\x00\x00\x5C\x00\x70\x00\x04\x00\x00Calc" + in buf[1568:2095] + ): + return True + + return False + + +class Xlsx(OfficeOpenXml): + """ + Implements the Microsoft Excel OOXML (Office 2007+) document type matcher. + """ + + MIME = "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet" + EXTENSION = "xlsx" + + def __init__(self): + super(Xlsx, self).__init__(mime=Xlsx.MIME, extension=Xlsx.EXTENSION) + + +class Ods(OpenDocument): + """ + Implements the OpenDocument Spreadsheet document type matcher. + """ + + MIME = "application/vnd.oasis.opendocument.spreadsheet" + EXTENSION = "ods" + + def __init__(self): + super(Ods, self).__init__(mime=Ods.MIME, extension=Ods.EXTENSION) + + +class Ppt(Type): + """ + Implements the Microsoft PowerPoint (Office 97-2003) document type matcher. + """ + + MIME = "application/vnd.ms-powerpoint" + EXTENSION = "ppt" + + def __init__(self): + super(Ppt, self).__init__(mime=Ppt.MIME, extension=Ppt.EXTENSION) + + def match(self, buf): + if len(buf) > 524 and buf[0:8] == b"\xD0\xCF\x11\xE0\xA1\xB1\x1A\xE1": + if buf[512:516] == b"\xA0\x46\x1D\xF0": + return True + if buf[512:516] == b"\x00\x6E\x1E\xF0": + return True + if buf[512:516] == b"\x0F\x00\xE8\x03": + return True + if buf[512:516] == b"\xFD\xFF\xFF\xFF" and buf[522:524] == b"\x00\x00": + return True + if ( + len(buf) > 2096 + and buf[2072:2096] + == b"\x00\xB9\x29\xE8\x11\x00\x00\x00MS PowerPoint 97" + ): + return True + + return False + + +class Pptx(OfficeOpenXml): + """ + Implements the Microsoft PowerPoint OOXML (Office 2007+) document type matcher. + """ + + MIME = "application/vnd.openxmlformats-officedocument.presentationml.presentation" + EXTENSION = "pptx" + + def __init__(self): + super(Pptx, self).__init__(mime=Pptx.MIME, extension=Pptx.EXTENSION) + + +class Odp(OpenDocument): + """ + Implements the OpenDocument Presentation document type matcher. + """ + + MIME = "application/vnd.oasis.opendocument.presentation" + EXTENSION = "odp" + + def __init__(self): + super(Odp, self).__init__(mime=Odp.MIME, extension=Odp.EXTENSION) diff --git a/venv/lib/python3.12/site-packages/filetype/types/font.py b/venv/lib/python3.12/site-packages/filetype/types/font.py new file mode 100644 index 0000000..461f5c4 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/types/font.py @@ -0,0 +1,115 @@ +# -*- coding: utf-8 -*- + +from __future__ import absolute_import + +from .base import Type + + +class Woff(Type): + """ + Implements the WOFF font type matcher. + """ + MIME = 'application/font-woff' + EXTENSION = 'woff' + + def __init__(self): + super(Woff, self).__init__( + mime=Woff.MIME, + extension=Woff.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 7 and + buf[0] == 0x77 and + buf[1] == 0x4F and + buf[2] == 0x46 and + buf[3] == 0x46 and + ((buf[4] == 0x00 and + buf[5] == 0x01 and + buf[6] == 0x00 and + buf[7] == 0x00) or + (buf[4] == 0x4F and + buf[5] == 0x54 and + buf[6] == 0x54 and + buf[7] == 0x4F) or + (buf[4] == 0x74 and + buf[5] == 0x72 and + buf[6] == 0x75 and + buf[7] == 0x65))) + + +class Woff2(Type): + """ + Implements the WOFF2 font type matcher. + """ + MIME = 'application/font-woff' + EXTENSION = 'woff2' + + def __init__(self): + super(Woff2, self).__init__( + mime=Woff2.MIME, + extension=Woff2.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 7 and + buf[0] == 0x77 and + buf[1] == 0x4F and + buf[2] == 0x46 and + buf[3] == 0x32 and + ((buf[4] == 0x00 and + buf[5] == 0x01 and + buf[6] == 0x00 and + buf[7] == 0x00) or + (buf[4] == 0x4F and + buf[5] == 0x54 and + buf[6] == 0x54 and + buf[7] == 0x4F) or + (buf[4] == 0x74 and + buf[5] == 0x72 and + buf[6] == 0x75 and + buf[7] == 0x65))) + + +class Ttf(Type): + """ + Implements the TTF font type matcher. + """ + MIME = 'application/font-sfnt' + EXTENSION = 'ttf' + + def __init__(self): + super(Ttf, self).__init__( + mime=Ttf.MIME, + extension=Ttf.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 4 and + buf[0] == 0x00 and + buf[1] == 0x01 and + buf[2] == 0x00 and + buf[3] == 0x00 and + buf[4] == 0x00) + + +class Otf(Type): + """ + Implements the OTF font type matcher. + """ + MIME = 'application/font-sfnt' + EXTENSION = 'otf' + + def __init__(self): + super(Otf, self).__init__( + mime=Otf.MIME, + extension=Otf.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 4 and + buf[0] == 0x4F and + buf[1] == 0x54 and + buf[2] == 0x54 and + buf[3] == 0x4F and + buf[4] == 0x00) diff --git a/venv/lib/python3.12/site-packages/filetype/types/image.py b/venv/lib/python3.12/site-packages/filetype/types/image.py new file mode 100644 index 0000000..2d4d269 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/types/image.py @@ -0,0 +1,383 @@ +# -*- coding: utf-8 -*- + +from __future__ import absolute_import + +from .base import Type +from .isobmff import IsoBmff + + +class Jpeg(Type): + """ + Implements the JPEG image type matcher. + """ + MIME = 'image/jpeg' + EXTENSION = 'jpg' + + def __init__(self): + super(Jpeg, self).__init__( + mime=Jpeg.MIME, + extension=Jpeg.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 2 and + buf[0] == 0xFF and + buf[1] == 0xD8 and + buf[2] == 0xFF) + + +class Jpx(Type): + """ + Implements the JPEG2000 image type matcher. + """ + + MIME = "image/jpx" + EXTENSION = "jpx" + + def __init__(self): + super(Jpx, self).__init__(mime=Jpx.MIME, extension=Jpx.EXTENSION) + + def match(self, buf): + return ( + len(buf) > 50 + and buf[0] == 0x00 + and buf[1] == 0x00 + and buf[2] == 0x00 + and buf[3] == 0x0C + and buf[16:24] == b"ftypjp2 " + ) + + +class Apng(Type): + """ + Implements the APNG image type matcher. + """ + MIME = 'image/apng' + EXTENSION = 'apng' + + def __init__(self): + super(Apng, self).__init__( + mime=Apng.MIME, + extension=Apng.EXTENSION + ) + + def match(self, buf): + if (len(buf) > 8 and + buf[:8] == bytearray([0x89, 0x50, 0x4e, 0x47, + 0x0d, 0x0a, 0x1a, 0x0a])): + # cursor in buf, skip already readed 8 bytes + i = 8 + while len(buf) > i: + data_length = int.from_bytes(buf[i:i+4], byteorder="big") + i += 4 + + chunk_type = buf[i:i+4].decode("ascii", errors='ignore') + i += 4 + + # acTL chunk in APNG should appears first than IDAT + # IEND is end of PNG + if (chunk_type == "IDAT" or chunk_type == "IEND"): + return False + elif (chunk_type == "acTL"): + return True + + # move to the next chunk by skipping data and crc (4 bytes) + i += data_length + 4 + + return False + + +class Png(Type): + """ + Implements the PNG image type matcher. + """ + MIME = 'image/png' + EXTENSION = 'png' + + def __init__(self): + super(Png, self).__init__( + mime=Png.MIME, + extension=Png.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x89 and + buf[1] == 0x50 and + buf[2] == 0x4E and + buf[3] == 0x47) + + +class Gif(Type): + """ + Implements the GIF image type matcher. + """ + MIME = 'image/gif' + EXTENSION = 'gif' + + def __init__(self): + super(Gif, self).__init__( + mime=Gif.MIME, + extension=Gif.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 2 and + buf[0] == 0x47 and + buf[1] == 0x49 and + buf[2] == 0x46) + + +class Webp(Type): + """ + Implements the WEBP image type matcher. + """ + MIME = 'image/webp' + EXTENSION = 'webp' + + def __init__(self): + super(Webp, self).__init__( + mime=Webp.MIME, + extension=Webp.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 13 and + buf[0] == 0x52 and + buf[1] == 0x49 and + buf[2] == 0x46 and + buf[3] == 0x46 and + buf[8] == 0x57 and + buf[9] == 0x45 and + buf[10] == 0x42 and + buf[11] == 0x50 and + buf[12] == 0x56 and + buf[13] == 0x50) + + +class Cr2(Type): + """ + Implements the CR2 image type matcher. + """ + MIME = 'image/x-canon-cr2' + EXTENSION = 'cr2' + + def __init__(self): + super(Cr2, self).__init__( + mime=Cr2.MIME, + extension=Cr2.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 9 and + ((buf[0] == 0x49 and buf[1] == 0x49 and + buf[2] == 0x2A and buf[3] == 0x0) or + (buf[0] == 0x4D and buf[1] == 0x4D and + buf[2] == 0x0 and buf[3] == 0x2A)) and + buf[8] == 0x43 and buf[9] == 0x52) + + +class Tiff(Type): + """ + Implements the TIFF image type matcher. + """ + MIME = 'image/tiff' + EXTENSION = 'tif' + + def __init__(self): + super(Tiff, self).__init__( + mime=Tiff.MIME, + extension=Tiff.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 9 and + ((buf[0] == 0x49 and buf[1] == 0x49 and + buf[2] == 0x2A and buf[3] == 0x0) or + (buf[0] == 0x4D and buf[1] == 0x4D and + buf[2] == 0x0 and buf[3] == 0x2A)) + and not (buf[8] == 0x43 and buf[9] == 0x52)) + + +class Bmp(Type): + """ + Implements the BMP image type matcher. + """ + MIME = 'image/bmp' + EXTENSION = 'bmp' + + def __init__(self): + super(Bmp, self).__init__( + mime=Bmp.MIME, + extension=Bmp.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 1 and + buf[0] == 0x42 and + buf[1] == 0x4D) + + +class Jxr(Type): + """ + Implements the JXR image type matcher. + """ + MIME = 'image/vnd.ms-photo' + EXTENSION = 'jxr' + + def __init__(self): + super(Jxr, self).__init__( + mime=Jxr.MIME, + extension=Jxr.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 2 and + buf[0] == 0x49 and + buf[1] == 0x49 and + buf[2] == 0xBC) + + +class Psd(Type): + """ + Implements the PSD image type matcher. + """ + MIME = 'image/vnd.adobe.photoshop' + EXTENSION = 'psd' + + def __init__(self): + super(Psd, self).__init__( + mime=Psd.MIME, + extension=Psd.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x38 and + buf[1] == 0x42 and + buf[2] == 0x50 and + buf[3] == 0x53) + + +class Ico(Type): + """ + Implements the ICO image type matcher. + """ + MIME = 'image/x-icon' + EXTENSION = 'ico' + + def __init__(self): + super(Ico, self).__init__( + mime=Ico.MIME, + extension=Ico.EXTENSION, + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x00 and + buf[1] == 0x00 and + buf[2] == 0x01 and + buf[3] == 0x00) + + +class Heic(IsoBmff): + """ + Implements the HEIC image type matcher. + """ + MIME = 'image/heic' + EXTENSION = 'heic' + + def __init__(self): + super(Heic, self).__init__( + mime=Heic.MIME, + extension=Heic.EXTENSION + ) + + def match(self, buf): + if not self._is_isobmff(buf): + return False + + major_brand, minor_version, compatible_brands = self._get_ftyp(buf) + if major_brand == 'heic': + return True + if major_brand in ['mif1', 'msf1'] and 'heic' in compatible_brands: + return True + return False + + +class Dcm(Type): + + MIME = 'application/dicom' + EXTENSION = 'dcm' + OFFSET = 128 + + def __init__(self): + super(Dcm, self).__init__( + mime=Dcm.MIME, + extension=Dcm.EXTENSION + ) + + def match(self, buf): + return (len(buf) > Dcm.OFFSET + 4 and + buf[Dcm.OFFSET + 0] == 0x44 and + buf[Dcm.OFFSET + 1] == 0x49 and + buf[Dcm.OFFSET + 2] == 0x43 and + buf[Dcm.OFFSET + 3] == 0x4D) + + +class Dwg(Type): + """Implements the Dwg image type matcher.""" + + MIME = 'image/vnd.dwg' + EXTENSION = 'dwg' + + def __init__(self): + super(Dwg, self).__init__( + mime=Dwg.MIME, + extension=Dwg.EXTENSION + ) + + def match(self, buf): + return buf[:4] == bytearray([0x41, 0x43, 0x31, 0x30]) + + +class Xcf(Type): + """Implements the Xcf image type matcher.""" + + MIME = 'image/x-xcf' + EXTENSION = 'xcf' + + def __init__(self): + super(Xcf, self).__init__( + mime=Xcf.MIME, + extension=Xcf.EXTENSION + ) + + def match(self, buf): + return buf[:10] == bytearray([0x67, 0x69, 0x6d, 0x70, 0x20, + 0x78, 0x63, 0x66, 0x20, 0x76]) + + +class Avif(IsoBmff): + """ + Implements the AVIF image type matcher. + """ + MIME = 'image/avif' + EXTENSION = 'avif' + + def __init__(self): + super(Avif, self).__init__( + mime=Avif.MIME, + extension=Avif.EXTENSION + ) + + def match(self, buf): + if not self._is_isobmff(buf): + return False + + major_brand, minor_version, compatible_brands = self._get_ftyp(buf) + if major_brand == 'avif': + return True + if major_brand in ['mif1', 'msf1'] and 'avif' in compatible_brands: + return True + return False diff --git a/venv/lib/python3.12/site-packages/filetype/types/isobmff.py b/venv/lib/python3.12/site-packages/filetype/types/isobmff.py new file mode 100644 index 0000000..2ac0ffe --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/types/isobmff.py @@ -0,0 +1,33 @@ +# -*- coding: utf-8 -*- +from __future__ import absolute_import +import codecs + +from .base import Type + + +class IsoBmff(Type): + """ + Implements the ISO-BMFF base type. + """ + def __init__(self, mime, extension): + super(IsoBmff, self).__init__( + mime=mime, + extension=extension + ) + + def _is_isobmff(self, buf): + if len(buf) < 16 or buf[4:8] != b'ftyp': + return False + if len(buf) < int(codecs.encode(buf[0:4], 'hex'), 16): + return False + return True + + def _get_ftyp(self, buf): + ftyp_len = int(codecs.encode(buf[0:4], 'hex'), 16) + major_brand = buf[8:12].decode(errors='ignore') + minor_version = int(codecs.encode(buf[12:16], 'hex'), 16) + compatible_brands = [] + for i in range(16, ftyp_len, 4): + compatible_brands.append(buf[i:i+4].decode(errors='ignore')) + + return major_brand, minor_version, compatible_brands diff --git a/venv/lib/python3.12/site-packages/filetype/types/video.py b/venv/lib/python3.12/site-packages/filetype/types/video.py new file mode 100644 index 0000000..336b252 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/types/video.py @@ -0,0 +1,223 @@ +# -*- coding: utf-8 -*- + +from __future__ import absolute_import + +from .base import Type +from .isobmff import IsoBmff + + +class Mp4(IsoBmff): + """ + Implements the MP4 video type matcher. + """ + MIME = 'video/mp4' + EXTENSION = 'mp4' + + def __init__(self): + super(Mp4, self).__init__( + mime=Mp4.MIME, + extension=Mp4.EXTENSION + ) + + def match(self, buf): + if not self._is_isobmff(buf): + return False + + major_brand, minor_version, compatible_brands = self._get_ftyp(buf) + for brand in compatible_brands: + if brand in ['mp41', 'mp42', 'isom']: + return True + return major_brand in ['mp41', 'mp42', 'isom'] + + +class M4v(Type): + """ + Implements the M4V video type matcher. + """ + MIME = 'video/x-m4v' + EXTENSION = 'm4v' + + def __init__(self): + super(M4v, self).__init__( + mime=M4v.MIME, + extension=M4v.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 10 and + buf[0] == 0x0 and buf[1] == 0x0 and + buf[2] == 0x0 and buf[3] == 0x1C and + buf[4] == 0x66 and buf[5] == 0x74 and + buf[6] == 0x79 and buf[7] == 0x70 and + buf[8] == 0x4D and buf[9] == 0x34 and + buf[10] == 0x56) + + +class Mkv(Type): + """ + Implements the MKV video type matcher. + """ + MIME = 'video/x-matroska' + EXTENSION = 'mkv' + + def __init__(self): + super(Mkv, self).__init__( + mime=Mkv.MIME, + extension=Mkv.EXTENSION + ) + + def match(self, buf): + contains_ebml_element = buf.startswith(b'\x1A\x45\xDF\xA3') + contains_doctype_element = buf.find(b'\x42\x82\x88matroska') > -1 + return contains_ebml_element and contains_doctype_element + + +class Webm(Type): + """ + Implements the WebM video type matcher. + """ + MIME = 'video/webm' + EXTENSION = 'webm' + + def __init__(self): + super(Webm, self).__init__( + mime=Webm.MIME, + extension=Webm.EXTENSION + ) + + def match(self, buf): + contains_ebml_element = buf.startswith(b'\x1A\x45\xDF\xA3') + contains_doctype_element = buf.find(b'\x42\x82\x84webm') > -1 + return contains_ebml_element and contains_doctype_element + + +class Mov(IsoBmff): + """ + Implements the MOV video type matcher. + """ + MIME = 'video/quicktime' + EXTENSION = 'mov' + + def __init__(self): + super(Mov, self).__init__( + mime=Mov.MIME, + extension=Mov.EXTENSION + ) + + def match(self, buf): + if not self._is_isobmff(buf): + return False + + major_brand, minor_version, compatible_brands = self._get_ftyp(buf) + return major_brand == 'qt ' + + +class Avi(Type): + """ + Implements the AVI video type matcher. + """ + MIME = 'video/x-msvideo' + EXTENSION = 'avi' + + def __init__(self): + super(Avi, self).__init__( + mime=Avi.MIME, + extension=Avi.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 11 and + buf[0] == 0x52 and + buf[1] == 0x49 and + buf[2] == 0x46 and + buf[3] == 0x46 and + buf[8] == 0x41 and + buf[9] == 0x56 and + buf[10] == 0x49 and + buf[11] == 0x20) + + +class Wmv(Type): + """ + Implements the WMV video type matcher. + """ + MIME = 'video/x-ms-wmv' + EXTENSION = 'wmv' + + def __init__(self): + super(Wmv, self).__init__( + mime=Wmv.MIME, + extension=Wmv.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 9 and + buf[0] == 0x30 and + buf[1] == 0x26 and + buf[2] == 0xB2 and + buf[3] == 0x75 and + buf[4] == 0x8E and + buf[5] == 0x66 and + buf[6] == 0xCF and + buf[7] == 0x11 and + buf[8] == 0xA6 and + buf[9] == 0xD9) + + +class Flv(Type): + """ + Implements the FLV video type matcher. + """ + MIME = 'video/x-flv' + EXTENSION = 'flv' + + def __init__(self): + super(Flv, self).__init__( + mime=Flv.MIME, + extension=Flv.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x46 and + buf[1] == 0x4C and + buf[2] == 0x56 and + buf[3] == 0x01) + + +class Mpeg(Type): + """ + Implements the MPEG video type matcher. + """ + MIME = 'video/mpeg' + EXTENSION = 'mpg' + + def __init__(self): + super(Mpeg, self).__init__( + mime=Mpeg.MIME, + extension=Mpeg.EXTENSION + ) + + def match(self, buf): + return (len(buf) > 3 and + buf[0] == 0x0 and + buf[1] == 0x0 and + buf[2] == 0x1 and + buf[3] >= 0xb0 and + buf[3] <= 0xbf) + + +class M3gp(Type): + """Implements the 3gp image type matcher.""" + + MIME = 'video/3gpp' + EXTENSION = '3gp' + + def __init__(self): + super(M3gp, self).__init__( + mime=M3gp.MIME, + extension=M3gp.EXTENSION + ) + + def match(self, buf): + return buf[:7] == bytearray([0x66, 0x74, 0x79, 0x70, 0x33, 0x67, 0x70]) diff --git a/venv/lib/python3.12/site-packages/filetype/utils.py b/venv/lib/python3.12/site-packages/filetype/utils.py new file mode 100644 index 0000000..c954876 --- /dev/null +++ b/venv/lib/python3.12/site-packages/filetype/utils.py @@ -0,0 +1,84 @@ +# -*- coding: utf-8 -*- + +# Python 2.7 workaround +try: + import pathlib +except ImportError: + pass + + +_NUM_SIGNATURE_BYTES = 8192 + + +def get_signature_bytes(path): + """ + Reads file from disk and returns the first 8192 bytes + of data representing the magic number header signature. + + Args: + path: path string to file. + + Returns: + First 8192 bytes of the file content as bytearray type. + """ + with open(path, 'rb') as fp: + return bytearray(fp.read(_NUM_SIGNATURE_BYTES)) + + +def signature(array): + """ + Returns the first 8192 bytes of the given bytearray + as part of the file header signature. + + Args: + array: bytearray to extract the header signature. + + Returns: + First 8192 bytes of the file content as bytearray type. + """ + length = len(array) + index = _NUM_SIGNATURE_BYTES if length > _NUM_SIGNATURE_BYTES else length + + return array[:index] + + +def get_bytes(obj): + """ + Infers the input type and reads the first 8192 bytes, + returning a sliced bytearray. + + Args: + obj: path to readable, file-like object(with read() method), bytes, + bytearray or memoryview + + Returns: + First 8192 bytes of the file content as bytearray type. + + Raises: + TypeError: if obj is not a supported type. + """ + if isinstance(obj, bytearray): + return signature(obj) + + if isinstance(obj, str): + return get_signature_bytes(obj) + + if isinstance(obj, bytes): + return signature(obj) + + if isinstance(obj, memoryview): + return bytearray(signature(obj).tolist()) + + if isinstance(obj, pathlib.PurePath): + return get_signature_bytes(obj) + + if hasattr(obj, 'read'): + if hasattr(obj, 'tell') and hasattr(obj, 'seek'): + start_pos = obj.tell() + obj.seek(0) + magic_bytes = obj.read(_NUM_SIGNATURE_BYTES) + obj.seek(start_pos) + return get_bytes(magic_bytes) + return get_bytes(obj.read(_NUM_SIGNATURE_BYTES)) + + raise TypeError('Unsupported type as file input: %s' % type(obj)) diff --git a/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/LICENSE.txt b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/LICENSE.txt new file mode 100644 index 0000000..9d227a0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2010 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/METADATA b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/METADATA new file mode 100644 index 0000000..5a02107 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/METADATA @@ -0,0 +1,101 @@ +Metadata-Version: 2.1 +Name: Flask +Version: 3.0.3 +Summary: A simple framework for building complex web applications. +Maintainer-email: Pallets +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Framework :: Flask +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI +Classifier: Topic :: Internet :: WWW/HTTP :: WSGI :: Application +Classifier: Topic :: Software Development :: Libraries :: Application Frameworks +Classifier: Typing :: Typed +Requires-Dist: Werkzeug>=3.0.0 +Requires-Dist: Jinja2>=3.1.2 +Requires-Dist: itsdangerous>=2.1.2 +Requires-Dist: click>=8.1.3 +Requires-Dist: blinker>=1.6.2 +Requires-Dist: importlib-metadata>=3.6.0; python_version < '3.10' +Requires-Dist: asgiref>=3.2 ; extra == "async" +Requires-Dist: python-dotenv ; extra == "dotenv" +Project-URL: Changes, https://flask.palletsprojects.com/changes/ +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://flask.palletsprojects.com/ +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Source, https://github.com/pallets/flask/ +Provides-Extra: async +Provides-Extra: dotenv + +# Flask + +Flask is a lightweight [WSGI][] web application framework. It is designed +to make getting started quick and easy, with the ability to scale up to +complex applications. It began as a simple wrapper around [Werkzeug][] +and [Jinja][], and has become one of the most popular Python web +application frameworks. + +Flask offers suggestions, but doesn't enforce any dependencies or +project layout. It is up to the developer to choose the tools and +libraries they want to use. There are many extensions provided by the +community that make adding new functionality easy. + +[WSGI]: https://wsgi.readthedocs.io/ +[Werkzeug]: https://werkzeug.palletsprojects.com/ +[Jinja]: https://jinja.palletsprojects.com/ + + +## Installing + +Install and update from [PyPI][] using an installer such as [pip][]: + +``` +$ pip install -U Flask +``` + +[PyPI]: https://pypi.org/project/Flask/ +[pip]: https://pip.pypa.io/en/stable/getting-started/ + + +## A Simple Example + +```python +# save this as app.py +from flask import Flask + +app = Flask(__name__) + +@app.route("/") +def hello(): + return "Hello, World!" +``` + +``` +$ flask run + * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) +``` + + +## Contributing + +For guidance on setting up a development environment and how to make a +contribution to Flask, see the [contributing guidelines][]. + +[contributing guidelines]: https://github.com/pallets/flask/blob/main/CONTRIBUTING.rst + + +## Donate + +The Pallets organization develops and supports Flask and the libraries +it uses. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, [please +donate today][]. + +[please donate today]: https://palletsprojects.com/donate + diff --git a/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/RECORD b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/RECORD new file mode 100644 index 0000000..5fdb0cb --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/RECORD @@ -0,0 +1,58 @@ +../../../bin/flask,sha256=ESb7wTe4zBbj3BNL62ywjJNvGC_7vPrO48EBpZSs0Fs,237 +flask-3.0.3.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +flask-3.0.3.dist-info/LICENSE.txt,sha256=SJqOEQhQntmKN7uYPhHg9-HTHwvY-Zp5yESOf_N9B-o,1475 +flask-3.0.3.dist-info/METADATA,sha256=exPahy4aahjV-mYqd9qb5HNP8haB_IxTuaotoSvCtag,3177 +flask-3.0.3.dist-info/RECORD,, +flask-3.0.3.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +flask-3.0.3.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 +flask-3.0.3.dist-info/entry_points.txt,sha256=bBP7hTOS5fz9zLtC7sPofBZAlMkEvBxu7KqS6l5lvc4,40 +flask/__init__.py,sha256=6xMqdVA0FIQ2U1KVaGX3lzNCdXPzoHPaa0hvQCNcfSk,2625 +flask/__main__.py,sha256=bYt9eEaoRQWdejEHFD8REx9jxVEdZptECFsV7F49Ink,30 +flask/__pycache__/__init__.cpython-312.pyc,, +flask/__pycache__/__main__.cpython-312.pyc,, +flask/__pycache__/app.cpython-312.pyc,, +flask/__pycache__/blueprints.cpython-312.pyc,, +flask/__pycache__/cli.cpython-312.pyc,, +flask/__pycache__/config.cpython-312.pyc,, +flask/__pycache__/ctx.cpython-312.pyc,, +flask/__pycache__/debughelpers.cpython-312.pyc,, +flask/__pycache__/globals.cpython-312.pyc,, +flask/__pycache__/helpers.cpython-312.pyc,, +flask/__pycache__/logging.cpython-312.pyc,, +flask/__pycache__/sessions.cpython-312.pyc,, +flask/__pycache__/signals.cpython-312.pyc,, +flask/__pycache__/templating.cpython-312.pyc,, +flask/__pycache__/testing.cpython-312.pyc,, +flask/__pycache__/typing.cpython-312.pyc,, +flask/__pycache__/views.cpython-312.pyc,, +flask/__pycache__/wrappers.cpython-312.pyc,, +flask/app.py,sha256=7-lh6cIj27riTE1Q18Ok1p5nOZ8qYiMux4Btc6o6mNc,60143 +flask/blueprints.py,sha256=7INXPwTkUxfOQXOOv1yu52NpHPmPGI5fMTMFZ-BG9yY,4430 +flask/cli.py,sha256=OOaf_Efqih1i2in58j-5ZZZmQnPpaSfiUFbEjlL9bzw,35825 +flask/config.py,sha256=bLzLVAj-cq-Xotu9erqOFte0xSFaVXyfz0AkP4GbwmY,13312 +flask/ctx.py,sha256=4atDhJJ_cpV1VMq4qsfU4E_61M1oN93jlS2H9gjrl58,15120 +flask/debughelpers.py,sha256=PGIDhStW_efRjpaa3zHIpo-htStJOR41Ip3OJWPYBwo,6080 +flask/globals.py,sha256=XdQZmStBmPIs8t93tjx6pO7Bm3gobAaONWkFcUHaGas,1713 +flask/helpers.py,sha256=tYrcQ_73GuSZVEgwFr-eMmV69UriFQDBmt8wZJIAqvg,23084 +flask/json/__init__.py,sha256=hLNR898paqoefdeAhraa5wyJy-bmRB2k2dV4EgVy2Z8,5602 +flask/json/__pycache__/__init__.cpython-312.pyc,, +flask/json/__pycache__/provider.cpython-312.pyc,, +flask/json/__pycache__/tag.cpython-312.pyc,, +flask/json/provider.py,sha256=q6iB83lSiopy80DZPrU-9mGcWwrD0mvLjiv9fHrRZgc,7646 +flask/json/tag.py,sha256=DhaNwuIOhdt2R74oOC9Y4Z8ZprxFYiRb5dUP5byyINw,9281 +flask/logging.py,sha256=8sM3WMTubi1cBb2c_lPkWpN0J8dMAqrgKRYLLi1dCVI,2377 +flask/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +flask/sansio/README.md,sha256=-0X1tECnilmz1cogx-YhNw5d7guK7GKrq_DEV2OzlU0,228 +flask/sansio/__pycache__/app.cpython-312.pyc,, +flask/sansio/__pycache__/blueprints.cpython-312.pyc,, +flask/sansio/__pycache__/scaffold.cpython-312.pyc,, +flask/sansio/app.py,sha256=YG5Gf7JVf1c0yccWDZ86q5VSfJUidOVp27HFxFNxC7U,38053 +flask/sansio/blueprints.py,sha256=Tqe-7EkZ-tbWchm8iDoCfD848f0_3nLv6NNjeIPvHwM,24637 +flask/sansio/scaffold.py,sha256=WLV9TRQMMhGlXz-1OKtQ3lv6mtIBQZxdW2HezYrGxoI,30633 +flask/sessions.py,sha256=RU4lzm9MQW9CtH8rVLRTDm8USMJyT4LbvYe7sxM2__k,14807 +flask/signals.py,sha256=V7lMUww7CqgJ2ThUBn1PiatZtQanOyt7OZpu2GZI-34,750 +flask/templating.py,sha256=2TcXLT85Asflm2W9WOSFxKCmYn5e49w_Jkg9-NaaJWo,7537 +flask/testing.py,sha256=3BFXb3bP7R5r-XLBuobhczbxDu8-1LWRzYuhbr-lwaE,10163 +flask/typing.py,sha256=ZavK-wV28Yv8CQB7u73qZp_jLalpbWdrXS37QR1ftN0,3190 +flask/views.py,sha256=B66bTvYBBcHMYk4dA1ScZD0oTRTBl0I5smp1lRm9riI,6939 +flask/wrappers.py,sha256=m1j5tIJxIu8_sPPgTAB_G4TTh52Q-HoDuw_qHV5J59g,5831 diff --git a/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/WHEEL b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/WHEEL new file mode 100644 index 0000000..3b5e64b --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.9.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/entry_points.txt new file mode 100644 index 0000000..eec6733 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask-3.0.3.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[console_scripts] +flask=flask.cli:main + diff --git a/venv/lib/python3.12/site-packages/flask/__init__.py b/venv/lib/python3.12/site-packages/flask/__init__.py new file mode 100644 index 0000000..e86eb43 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/__init__.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import typing as t + +from . import json as json +from .app import Flask as Flask +from .blueprints import Blueprint as Blueprint +from .config import Config as Config +from .ctx import after_this_request as after_this_request +from .ctx import copy_current_request_context as copy_current_request_context +from .ctx import has_app_context as has_app_context +from .ctx import has_request_context as has_request_context +from .globals import current_app as current_app +from .globals import g as g +from .globals import request as request +from .globals import session as session +from .helpers import abort as abort +from .helpers import flash as flash +from .helpers import get_flashed_messages as get_flashed_messages +from .helpers import get_template_attribute as get_template_attribute +from .helpers import make_response as make_response +from .helpers import redirect as redirect +from .helpers import send_file as send_file +from .helpers import send_from_directory as send_from_directory +from .helpers import stream_with_context as stream_with_context +from .helpers import url_for as url_for +from .json import jsonify as jsonify +from .signals import appcontext_popped as appcontext_popped +from .signals import appcontext_pushed as appcontext_pushed +from .signals import appcontext_tearing_down as appcontext_tearing_down +from .signals import before_render_template as before_render_template +from .signals import got_request_exception as got_request_exception +from .signals import message_flashed as message_flashed +from .signals import request_finished as request_finished +from .signals import request_started as request_started +from .signals import request_tearing_down as request_tearing_down +from .signals import template_rendered as template_rendered +from .templating import render_template as render_template +from .templating import render_template_string as render_template_string +from .templating import stream_template as stream_template +from .templating import stream_template_string as stream_template_string +from .wrappers import Request as Request +from .wrappers import Response as Response + + +def __getattr__(name: str) -> t.Any: + if name == "__version__": + import importlib.metadata + import warnings + + warnings.warn( + "The '__version__' attribute is deprecated and will be removed in" + " Flask 3.1. Use feature detection or" + " 'importlib.metadata.version(\"flask\")' instead.", + DeprecationWarning, + stacklevel=2, + ) + return importlib.metadata.version("flask") + + raise AttributeError(name) diff --git a/venv/lib/python3.12/site-packages/flask/__main__.py b/venv/lib/python3.12/site-packages/flask/__main__.py new file mode 100644 index 0000000..4e28416 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/__main__.py @@ -0,0 +1,3 @@ +from .cli import main + +main() diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1d4997cbf96af5eddf033411c1ea0add3a99ade4 GIT binary patch literal 2471 zcmZXWOK;mo5XYB#QIE*7Wm|sR^i!6dNQs@klAx)Zr0pdEnzSge7lIO35^cV^T-kBp z07cOP?Wu`K!LP}+ziC0o;tG@6T>BlzkWMA+@0N-UFgqZF;C!G zxq7Ly1@sCV@sl_P<;{^o$OB>$Q?ZGoP(?vb*a@06lV-|JIcb^(ThdJ18Aqk6A7k~%ppyV_5kW;2*$wlB{IxKkrc!Z8f zE&-3yQOSdL#Tlbxl81oD>A2)F@C2QZJPbTZCnb*nPthsKqrlU2T5<(=hR#SH1D>U` zlE;DP=$zyUV2x^$C+)N|Pv<31*$d7hU6ecxyhN8I&j2seWy!O^D|AKj9B`FZC2PQ| zbXD>^aE;a^F95I6HOY&>>vUc667X4iR`Rla&Z*P7XN?rrLNG}4PHP?Sg(f9TfwR5kr1ZqlHFkIIYhOj(0xb+&!0gb8cz;od@{h4h9 zI{>*)?H=>FHw9EwqRTrT`SNz`?kjd?4NFV{=VMoan4*3+x3>`3U(L! zOI;(-4c|Xu8b(upgcIgMJP3HhhYHTAzMDu5SP($qU`-oMkK^F!HiX;-80j#f%LX%b z2ONzK3&37MyI_uQ8-nSE5Zr3^1cRQUW9%@9BJg1^(2(WKv^Z=-_7 zaL>_?9X!4-&4M$-(f2ITJ+TV4$8Ejsaqv)aW34ti55b!Hd!qZE?=$nXu@`iuaqNVr zU$Z{O{anwil^;|A)Vp-(;-z(ne+hm-o>1jfND!M0xWN-~l;++iho+5PsQAn8YUc75S^&PaGt+(f8D2CPgMTnW;b0k6PK{kh+^D-Kw|6nN=>~L7Ib}=ajaln=XfXI`}M0X)2b)T zRqbtsYF40`a0poo3fI&O*VOhb+t!*)2JG{|^;r_YCerVuLV+6qc{|qlW3fIqnLx@x-CppE(@ZiqGN=&f&Bq!<1_{EX=)~ zf^R@10j5LKw12;BbUlYP9NvYn7;ju>LCfGBBWUcg=0;6;k2g5&F^B^LOi;#Wkj!+36owSW9EM!RC`LvGCWchT)lg|hhDs() z=9i2>t|sFxmfXb5JU>mQTg=HhnMKS%!Icc3K`MU*>SyHVrt0SwWh5qNrxxkEq!uS9 z7NsW^>zAh{8R?g$=9TH^WG3ksRF-7q=Nao68tE5jmZa(y0F@`Erxxp{&M4~ wY>1E7E2zB1VUwGmQks)$SHuCd0px;WULf&-nURt4E`#Vp29{Q~A~v8101_=Y7ytkO literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/app.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28a2afef99da9918e0b2bab25256c204aeccb281 GIT binary patch literal 61097 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 w_3ENf?Sr0~ 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 TMr$RTHjLvlz;A}O&cQ6fj8hLSB?G9y{0DC^%E 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 UDqHJHtxD)q!EDpl#=ZyPdxO%hwAR0e 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/globals.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/globals.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4d9653d99e4340cb55577ef2f98160bf8d853a8d GIT binary patch literal 1856 zcmb`H&u<$=6vub{JKosN567vUG?^wPG?dz+s29{WLZLKKX%&$K#8zds@l5O`yE|rf z*0FuExDavT2FDzW%7wp!OQc-dt%8s$4!tExPvyd!S-W2C6JU?(lM#i)apnnBCmubIvt$bAZh{RYN%Ca!_pv7t2^GD7$AL}^D4vu&+T+tW z4}5Bf7vAC*@HFs(;P`@Gl(~yRiX1XrrCby{TJ%IQ0Ds?$&@vlrK-oBt!)81gT)qW`?0$2QV z+w}Ip$QqwE8mqi@*QPtB?TKjN2&W7FCHdYb9v^r{H;Ly#qWf0Mav>twi|G9OHD!C2 zTSL_6o`ngbyU1)bY^y2@L)CE6ayq?Lw>-q#4IsANMh-Duc(0orwW*Ix&WY3D1S3w7 z?-8`?yH&9@)3$g!jB^RW1gCkOpsLRpartnnGTNfZqjr-(wB>z>Ji?LRK&Cq!)h{T$ zZ}GYSW%wDrDz7Y;(Iye|3Bt7MJCGvW#x7;Zp^PBQ1=EqvawoGZ1PxcvIgD?qF}J3aB00Aig|%rV<~WUp1(tE z7PhLtum4kMp&ax81YO(O+CaTbWdz&we4D>RCh8&%=SG|dkSRSR7BXSq9M$Q*Xt3F& z7Ia#ihz6rOHgU?G@lecO7NZJ+mWBlF9k`z7QJ@J?d%;ZHVu3a^HAwc+s1(=>k1x~U zZFw$88^*5BeMSs}iLWq7h=b|Y0+oaE;gM~c%wsVDv-^bYb%^^tlnFHaF>bOF6>+sDwpk&y$wrC_40eNfFQNcpsfVfm(^*8OGTdz$E&f7SUhJK zLmxL3nG?&8i(x`=IRkbmXG{urUJO%WD8TTWat@>NdZSXO4yib-ZdUgQt9(Yhs>y1m zSJ@{!*DFopHY>KZQ)#q$ow^^FKe}G=EKaU9ARJDoSCKub)WUnB+-L`>n-0akO>VO# zNFXj2?+k|1sH&=eDGM)@i4$evALYHjqp=@Xepoq)l}=)dC$V`sE}g_KohA~wSXVpC zDvQ@18^;T`y2+!F`D5kQvjTb=(|&#UDjJ!Nbdv|Ab0wli&Jv3BA8a4q15$`|wS(TC5t2d5rtQ~)_-qnsW?;k7c&*rW?jpYt!Abwt~^lg8o f{2cgyEghw@@V^ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/helpers.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/helpers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..620ad956e5d94bfed1d65cfe70cac12314e94e51 GIT binary patch literal 24800 zcmd6Pd2Ae4nqO6SlWekih=)$pWUP}>EwDI7xenzGJsY@Ok8*2IE0-Jc8wWS_Y|=HmYT%F>UhwTy0)9Nd1#PvU{#I+%d$AtF zdd%8pHNIETv$a|i|E%p+6P`R~?Xa5hz0Hcqe=Q%yRGkOEt)15D_bPj~S8G;V`BSUi zS_AlvR?=Dvcn#JrYaPCKSi7wbYdxOq#5q0u}|cb^>mCyl8^s2{YvVk zgjpyQJ=4n-3vM@l$1T&dz1*OUa&_JrPG`+*KmDj59->F-QO6t_vK`#1FfSJ!kKS=? zE9cl*E?=UGUO?f}d5PC$gB%dROU*Yr8Ib zg<``Xie{gk?#-KSzinmZNcby;YgE(prMFPHsd@gh0pR`e&w!+g@O?{H^K?z~s??JS z?W*nok0-Q&YIQI8R&!}ZM*O!gYRTyM56{@1G1_l?{kCIR_T}L|W3Xu1hTC5p&RfQ1 z+pr7f<-Bbfy+y}BEd%q=VdM%{E{oYkjWN1gW8l+e7e+=*rz>;%g<}_=PoF$>{G~G) zyg!n2iiJVUp@FA4f|fEa0g`3+n!|a|$hk%)bK1gZ7?5r{Bz8v7J39 zZ8vK=eWtr-)V{ob&j`Tm$>%Qb85;BYi-iNJef#&gInVAKLUk;oyNA~C%AS5Z4@7cP zLt~|SG??b;qBZVwHldwX{JHyanbf|FYl*t+yQX(tPfe$8ZJMiTn>?|QXt)vm*{Y+r zqCcwsu=C%ErGUlwI@>;sAqss=m8!1&u zgmrkOiCPWA*@&-F1EB-;I4vf^c?@^A;m_TN3-F;ngby?8JLYOSCr|vhME!ijnyLEx ziTdlmH~o9xeR^g?Y9^7IiKU#)c&iK@hz&5)_yG#7zn6s?BJ!+zlDMK)+ z;%LFmfg_?T9-&&Um%)t{hYeH%Z4i#T9=bG$fvCZ`9X!@PyI?z}hu&vdZW(4aOP!RW z!?=tN3N+6ZFvdZaYZ%rTxUgeOjOUr?9WG=^=o$UsZqt zdo_40Cprao@4ntvz#6r^@ikT3ww42t3`GsTJ?KkPOvJG~aI1hN8zF=P{?U>^=oCq8 zf@fN46->h&va>m$uNqMCAKrTWL!0gu&?CGAat%@`1H?djmuXqH)zxL}P5mA(a2A}> z{}2b;LQ2;z6n?1R)FRq+bVAEPB>pS?pXk>j0WSr|l)MzeP$w0$d4;YdW2G43RH^a` zxCOqUf)q-teR@w9owOoZmsCEW%mmgTv9Q9 zGpYT&sqIe7Ow&`Ju9|sa zkVZ;sIE~Z#!xU741``ec)El}srah^BZx>{gue|(j5J!C}wN2Znx%y~C*Iq*p39^u0 ze-ecRi*}D&Z7VED8`E{M02)_x&9cl?3{puu5)met^oZSIxWn0g0~%8f9KjgL*`tQS zhE%B{n=g_M>m;x~tYMUDFF;Vih&kmrMW<8+UCZ=5$LT-?C>~K*7*0FNE-M`hk9=f% z1RnYIG6doeaQV$&5h^XzufJZLF5a@{>bFfr=M(i)PcJlWUX19C$MvOXw7Gs!i`Lcu zDz4QxE>>#IYrpf{Vr{I>m~Y*Dv;Ic?FPk^qI&iz{Zgcy5%i5b~KRElt=l`}9Ri`d4 zwrGu8e!If+#i-Vj{OWJlbFKgF9!F2Uz2kVjey8GiB>HbEjv0}Erytu~`R`*W{bUpF zeYUz9k3ZY2ArH&QGoHmpl(z;5O zf`RjoWW*uOe7x05odwe-iTpa(zvwx}gwYKh;|(HdX#Gy9`qJ2tSP7?+0L2PWWw2aH z0!<9W*-N*pg=J}_`^4H1kI8_{pJ6h0c2GsSP{ZzPxcqifTYOfJS3ILH)HlsEx6jol zr=q`ZYN;^3IH)yl__RL)wf?=BGnzRD^_j3 zm77T(nQJ)uv-r`)I(qb#+W_eAC6e05t;edOpH=F(ma#t&rUv3sHs^%qwmh5-D5deD z7BGMbpEX$e6=0)NF#*5KdVq!<8ZZ@_vSpv(O|mb{F;uw-gNzU!6v75z!6v=Pgn|ae z4eGi9cAg`B$IL^^F)i@;fR><|9k;V4L@aZ9A}`Vt4LAm1ri|Djb3kbyM)C3h41O3V z!$M9==?>yF^TT)psvQFZ4MPEfOd+*2S3qw}U#XKo$mTsw79slX+WB6X!yZ^e7DIxL z=;X3jXcP<$qwu>AP&tpaO0=Q40rM8H6>xkqvU3I3!)T3SuT(6lak6U!G-!0B?TzO0 zd1w-tqzAe-+MfgCp-QBTV1{Tez)Rp1Q5}(5<=I}rm-5Bp6|_uhGiHHUm}43lj?w)+9-3fG@zlx?Dk%(+kfDmM-ntgF|_^3)0 z*JPgy#Zg*Imk^|%bZft7->_k!ZW@Q#EC|%kZ`74QhXo<~lbezl_4_?5O9-BU0~jr;X+RZxV~ZXnz;UQ%1LGQ z-Sko4$0Z-P$XL2+V#-R zI4|rw;tM=DUy*XZ(Gcl9UwLa!1~{Q6<#)yh?!{R$MZwR=I3+ssXTT~F-@wp&i!fzI z3FjH}U1_p)0u|xbD1a1wlpxb{$aG<3F!u?TndnsY)349%OE6?kD>$UFC@5V-Z(SKS z3scPAQe;>A1e9SQL>71{R~TWg!MFsj7H)tnR}28`=j)oHv8pZrHT|LZEdU{?&Lg`N z%pp`QZx{$KncGTc!4nMLp$LRSdKCOTwfHL4tLaK-!PKG2=b_2hm5n{AvyLI$i9)=0 z5g59>jX#&%{FB-jmmsfKEi`Pn*N~iTNX|9vo{8^XsH&Md`0cS9$KHKwzM=WXvFXvN z*g|5>y~Os}#P-{l<`TPRV!K#(|2S5vN}GjjKdFFeT8^THf(w84pk1m?LknR9@;yUj zSH$rLJyKtK3WY~$_Y?5xOz0DliReVk(m#q#RFL%pp&T(kg8Fhscq_0t#!DAoAhM)Y z=z~IAfHTD!DncF#(hBag_;kab3NpFjT_-^z)nOncyVDIYCO8iAkNRbhrvUo9Tg>Lz&CQ5TqZSk6W2)4x;n9XXWwK_Mmh>>0aBQc@n@MlV@feq( zZwxt@N*@R})(#Sf<0mPkyR1oLCv6e(^qgmS|LJ#>yKJI2&$6%^mA5LP;YgC@K?s0wfpjtNdHFot|nt^uMXWdkZJ zM2^pp;d_TJ=tIb4j+%!r@5~;yC_2Np1MZpyo9|<{%l_1U|CJL&%0R{yD42)=Plc4D zX&QpxvS<{c_BiBa4NvlA8+ei{!XNy#t?o_j+pC(rglWlSB)bFwFn!y=17j3pW%tlS zAqlq;=1c3oq1AK5sz9G~z z@K#z#=V|bFn6WIfswCq}R+i$503DJ+&SAP7q03QRN|geOTr$cCiVRpd$EXHfKEc}?SsOAEWeh>RMBfwe#r;@UUY~NqlVsM9BcI52*oZt15GPo*kIoA+)IHZUlzKNYBD1k zVuw(4M|1q1VB*R^?IKmLD+6S?GHws|rG~v+-c9)sWG^L`C+{CgMbP5g;j|vt?Z4`l(Q#242{9F0E zga(dRi0%oy6=0!Mt-v~%YT&PZ6ys2Xp!Ogk)k=ZQ`lhm(A2r7U2_-@@ugKYMgKIzr znlqUIn3xlIcVjeVAgoisL5D);2nZ69Iiy*YYSW|RP=RH-K(rKB%M;Xh2`zofqPO_f z|AB%_E~829*W0ytGpmK$W*fHMe)iLYcN?CXi9hwr#M)c&+uo=BcN0fvVnT`&oS!J515t3cYf ze5}P!SgF8FH}&kLOXp9ipBW$DSSev_31Q>kfd)w>42Y0CqCN!+BIJY)+X2gD@6PW+ zgQ3wd6eZgv6+WD>{FggGAmnfv9CpbCukLB*2$Up{@VwC7T%RYfebASkb*=Hgo#*(`EDmw83k^{gk z;giZbMWY>BoYLTuxU2kQaNAHgR>YpcUCD>1Vh+-yC@gOu68nP4I02fS=kyg80dNID z=#d+cWPx%9vDz*CDSnG&dss#nWmt4&(pl(W4m)x(fuR?;CD>qtM@l*-fNO4X7>*mJ zmM(+bdbf=i|~>m!jx;mZwHg-TmZ5oK}2)gQGnLC zQ>$(M!PEDe+h?2G?=?R@+x+;agLBO%?=?R^+x+}ryf&A3WhVB@gTzQ0DFmm!^j}d3 z6XS|eNxjdH2VRRzL{>_RgN~^6`mtN&wM2r{I!hTpM0B@_dp5*U1YQwJC>h&)57fPKiW2^(Eut4NZD1S_ySG#OxVvgI;? zr=W`Z>X)x=NC52h4*O1p$)oy)?u9<&YeeE_aS)DmN*91=Zj*4@pkNZSq~x0`2vab{ ziFptc7y=`Tc$ZB!^(Oy7;t%dqHjla;%IsOWQ?diV5H>X1kWf&7MXuhLKS?M&D|3I) z$CW{;j!T<9EI(iat0@$-T#C!}c9YRkecE)#3R#scTdI6^ggnZq61teP3Ux~{7xP?7*adgkvD4H7ysj@3lvn6+l~{K8Tmep{Nl5-v!Oxs; zq26v{H?N}rcGICXths(=`pT_cw=W}rI(cS3mUzGWo$edY-s+oa-g!6HHosx(duOJe zn~kkqs9AllCOKP^oU7T51k70Tz1X_h*t+?6Vt(z0n{R*cHrcj~>;I;@LRqq5b;0LQ ze}$IcN6tvVPgdel#Fr*_S-R(|5F^N>3zY5wg177wXg1QPWg~AuiMa;OWko4q`$6P;)iK!n8W~cNkQ&Zx zDrdWFyHc1LOfZvCIj00o%6?`dY{d&ee-4hE2i5(0{;sC`d zx)6`(%Iq0};sr0YNG~S0NTtiOhnjBVhU5ARP8#>LeUJhpa3)|E1xQ&m4tZ20-+9divkKkU2JctgLj_4~0~eX|WaXW~2O z6HSxdzx`EITh+$C>(4gV9@`V6e)}I1ryThFUntPR41^a>Rtp5|Wb?zVd|FsC5&&lf zd*Ab|`~iv|FZ+ZbuV65U9H~&96^w__Q_`E3eSRGM#5XHwA4f9Q4F%1-n#SgoQvFL8 zPo-Z?Up&=)^7PpkPC>t-jSJZR~>3s}6wa!iPgEAl0|^X$0oLLZJ1b3j(h2U^%4Y zj1o4PC`@YeRdw%=zcYR#IajrDrfU1b#XM~1ASr`e&PV{v!EdpHd2(Kh$y#krC!bzC`pj^s3DMuIm1)xvlIhBdQShL zSS-iTg62pEm3u%~pXlOS{yU|I0bLUV3A+qUv_u;r z0U_|y)6Da37_l9PL_6tLnG7=rxu24iTik=AiMIDqTsMf|qg@P}Gru?>rcem67+Mvt z6Kf&i&;nBRlu@>wLg?=Z_)upk+#p8fAhCLgU8HFG)lQ-s>J+suIMXoexToPSxx#8A zPeUeC&LiO&6e>Tez{K(3n&fumcxfgTIR+sOnmpz1C#0hUZ&uaSz9h0nK!S)#vZhY6 zp?tD(Zl%scka&LpdM=`H3K4vqmtCMeILMnM{RwyQl!rr#jY=jNEjqCIu@O%#BRlbf z*BCOo%i|DQ4!vGJ*H~Pd#W0gtndDN&i%1FcJ3&T0PaM-Jrw2icM{BNaQ%QH6}5J{xdf^Z=eXrrFrw&W{* zTCs6KC4N!cA;!x%D12K!wVb%E{FLzwpu!D%hh%UO`$7xVYt8mA_ z&dEo40yuAXo)9)TxVbWkGMS;_%Sh29p6YXOzjq*lpkkre$!+3o%&kns3gZzy1tLiH zw~`6EKjr7|pigB)0jSU*^JW&h2n`ldRG&~;pCq)-1ZkwZA*MgD);CMv1M&2yB^O_LbPbvF`oh2H4u&3}Kr0I!U)=T58*h2vWT0|46 zLFsZXCo;^koK|;=^521GpfZ?4tZnDNgwEZ5MvL}_(eo+gf5TG zwRxoO7Q}HCL?cQOBGnP=#!EK}L8Fu*8RVs25P#!c5Mr-Mr@w_%Df|y}5baCt^Cv~< zZGu?ftKwa3rr}Rj(M_Gl_+LQIpUR_nV3gQ?sP+PMr9$UE790?uv~9?r1_XT|h;o;6 z`5ac0-w!FdkLZsN<)urfJD*})kbS}$iM_q(6eK{G(+k(${{08`Ww^g`^w4jY$B%J4vF4L;!&o_`&QRN{Bh^A=T7F@-%HBfSHAO6B=c8p5E~LD9k(|g~*r~l^c0T z`1wE#*0hM15Pd7PI*?|JenO^lS4MKm0-&F)z7ByYgz{>?hChGPfq%{GGzUVm&|oP~ z6oNoa5IR8WAq~YJz0mx?xgXka$nlw3&WPa6G z&wC$IdWDL#Yyo&YG`uj&gA!;4>1`r5OlPz37C6#NDZzEP09!$xu0oV4m3o0kA{PV% zdZs}B;d;>(nrLCiE+U8*HDRGD4En-w3FwnwS1Oj#(^l_?@P11Qjq zOEH?9QeBzG=;Yx^a>$)U8M!KBu2jK^o~3G%C9JWq>nm`lA)-1$FOJgXDqY6tGESE_ z=`ukVg6)$3iUvX-u>pnloj7!Pk6dZbq5!|_x1w5Y%k?AENA4xI%_g>eq1Dz_F4SzB zU%z9arS;~y56;c6-ZZ}fA=0+_b=&3}S5u*-^~>g(M9mjb)LqnSR|@Q#d&8T;>Y_!G!3KL_{aYv5;RX4)qb- zmuBx7&Q9f{D<0c}NFF6-?Kwoq(M7a!j9 zAGN7n`cTurC3sL@Z+q$d3+IlVOrJjY!pTz?+TQ5kR4Dkg%CuH;Qkcmdm+SdoLYIKJagS}3gOz??E+SmcVsE(91m!NAfbAhEd!%fg4P zKpzXqRo}TGSrM!&s?ZBxU>Vpll^*#|SC4~8Z70%5#D!m%z$ zERuFXJ|xk#yXc*!y^T1=id03}zB1vJ&qWxFelJOZ^uYY6XOK`bHxy!=qC*xKHLZug zs>?h)zGnxxqBcswZAPwk9%`9Y$XII-hvZqnu*JMEYX>qE;Drmp_uGV}rTVUp+>&Eb zNv6mAorVC)x&Xc(LUNGHbO=YF)RY@`aw?YDbF>~rb7jWGay?10@-V>ve=4@>&EAxd ze1hr6oNHi=&Re+Pv=HX@Wt@QdKC*18{b?`7Xi8Sde0_%i(FKP$sm#|eU%<``$<{k( z6P@$%#v2E}h(^HMTMy2*9{F?x7yiAdMHK&rRPaB3=IbJWJ}QxA#pF7F@BcOAmA~_? zAeC++e7MI2oG=!Sw8##;bK3KxW-F!C4Nyd8+2;{&AY`)qvvS*?$azrT7d0H5MbTXT z478|H@I65Bvt^$k->J?-NlbO zQj(5J=y95mY`9g`4!%SEi4_ic+ticbzW#`Gr3sBsZqU6Q{<~O7#7m>%_qEtWY_h>? zQ%|kfg!ab~tKy&fM~A(uKVpskepWT6R!)8Mab+7-zk-$Mjcmu66gZYfzlI~pzV~PT z(PWk5|MN5@^bv3L`KXAm$rJvd1q&y$V57voA*Ma->w}D_A;~S0XW6p^eH)=R5;l~# zNYa6rEFIDy{8YY_+JQke-9ZjyW#^3Fo+md_+q z+78(z2qZbV5y%#ym~$H5Xp6b8~+#L!p}i`4IMv=D2cK<7NjJRCX! zur5YS@{Na$1)xkas1tmcK>3OmY#TZDVp@?%PpSsug8q-)garyR1^4;N|mHf;tZL@ zSw2{e9ZaQ47>wCb%lSisU6W1=Sn0I$0=3wQ3(~j~@-DXa4L2`(J*yrp=skx?M9sOQ@d`lMr&Gg zv-N}4sY(>%^^v^tGc@SK8!1aMfo!C8Q>K$L zEk8opp-V5J(&H#hYWLS{xbZS$&y@Afn@FL(UNc>T!=LW7{OOjDxBR4eE_wJT=4|qr zx#nYcYgmc_B|;a!A@F^-D-kA#uh(`A8=5AjXF)jUQU!c&0aSK9iS1aELc( zzMe{@u$}(FQ=Hy-L!9u`veGlOx|3R^bD>15WYH$;o#XfdQ^4klLnwV!gOWTBO6;Wl z=k&r6x^Rj1)Q%_UoLN=t1U(DD-p0>lB$vWsQ@->WdP?_rvr{RGSUztt9A8f%&ezE~ zt+r#*FzFa7?p~=j{0M+f0mgU}UPrC)qtLKOQU^U5ukljd#S1K!kS2DX9^R(QKk`fa zsYG4J=@w+yqZ)mQYOnYus#c0o*OHOb(#PTS(_>mv&LtafkdqFd((9N)xfEL|4~>7L z*IefGOu7Se6xDF#R&ZXISiV&_SD4?SMaFqvZzQX_Pj_Fs)ZLwIVrR*Cd&pt!pW#Kb zC)UnO9p@C0v*(0ch1ZRJE8N{N>NDSCFALuzSIc;fTvb3}x6Ak@b+9x*i;3?AZ>I&| zWg;pcKR`v?X%`hjXi9^WRbkqT$5i=^WC;J_&bxr})tc~#XkPFlb%R8a^RMYrzP4hQ zYRvgQJ-SU7UP>xqLjM`vpt6|IYJU-uog{mDhoPz1kUhkEO7*^2<4wuVcj-NrgYVPh zN}wss`I7EA@Xg@JGfvh9`nwLXD{(wpz4CX7ea&nNm74vV{$@s(H}pBr(TijxIHw6@ zqhC?RKwKW4^DpUPRbRe%8F5?(&L>Um%H>=%&Uz&E5~ptG`rrj{#dd?bORt?jl|J$8 zsT0qi?LGrfoH+a2<@1@H#|X#{y3n~TVh{WUDt(JC19YL(Gxwh$ZZOiA{cHI12+yA+C z;B)PX|E?LI)Bla?y8V7M_Wsd#kA5C|Y^kzBKc;`Vs#f2#xcNCz4Tqo9X|itzXm~&@1P0R$mm~IIypN-C`A$aDLyq#cC?mP$@yB zT5VP9BGq54*BV+D8>qBOtE^sXq*6iGp4ZRmi_z8kGde@$!g>gIE~L(g!u^WIr3$*U zw6{gyv6O1oU)8_t*a8Trb?uCP77*I>=K0m@#rMGz{C&S-=TZgkFJ01W^rpql+D2o3 z!=>>n>t3*)U_C;!hLkSf(jT{3&zF8xYn|Hv6_pdZ!9Lb zhyw~%FV=CfUTfL6*uceATKzFy09|a-D(jb;`SwJ#9j!F%Sfua!HO68EzR?Eeq>4&$ os#=ZG(#!f2`V(I`x)w>?ICxiI_p3;y-mnzaBJ01P6641I1;-UWL;wH) literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/logging.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/logging.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4c0839d5f00b8d70e80071da314822a03a707bba GIT binary patch literal 3261 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 V;%?h34##8bhev-ZP=&4ae*vePifjM? literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/signals.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/signals.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e1a8880c61211f243bc8642d167a2d69b50c576 GIT binary patch literal 1213 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 h%OAU{*IiJ))=^I1LK4 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/views.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/views.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..76dc93edf60756de6bce2830221c4f0bda2e5087 GIT binary patch literal 6993 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 KJ}2-J^ZysG2o2T% literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/__pycache__/wrappers.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/__pycache__/wrappers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0b70c8a1535d063d44c9650ff4bc94fae065a4fc GIT binary patch literal 6114 zcma)AU2GKB6~427-d*o{*IpZ(gu+0;bP241P(mGOLJ}uH5|e<_G+RaE@y=cE+Ot2o zGmG)oASX=~(<;hORZ*#xnyN2E=|k1$_PGz0swK1njXH^BGKLNPN3}z@Mt0_fAAvk1) ziedbR%}6a;j7nStaI6@UaMbLo#fu3E#{egb-GIA{xS6V@i)jfb%${1Nn2~VO%+`8~ zy$a*u>FvG<%l{&VwYtq*t-si>un>EO8L2m!k>-hy!Y)-YF0nnpW_WjiP0oe#+0Th2 zuQ=U$z22~OyV|H*V|Y(Kp&O_8Yb|cscuOA}AAe!=Y>79C0En*Tx%eq=HSrbyTya@N zrY%X+U1|xz>$avhoA_ivvzlhr)+WssZ;C4LP2H|wB66x_@{%j6J9=^}xBiItx1eFp zii*LCp_icPVwgvYQ6t1-M))x1jYzS}h~h2gy~T|#yv4n@gpt5olHPdI=ry|EjC|y- z!iwF%^g&z8n3Tk%S76e>#2lk(CuA^Jc1;F$N@@1)N=EXO&{_X_nt0Vpu}| z8x%5L;i_=;s5U02dC68=7B|$%Io050y=B^JwXQyG>efs_RZsC6uT64csdj}YRXjD_ zE>%F!>qfHyrKx(|P|sBPtg4HtRt@U43Q0+M9Gon5wxZiaY^klLs$1$v39PM=iSuQ- zgeS@b);eBR=Nc__RtHnN0U?{FUUC=3;_C`c^d-HnTCGXR7E)qKlE~t=6kI zZp&L!lb=k`THqrBCZ71~D2jM5Z(x>-nKo}t6=nq-3OXuyJ~$DuB2lCmP0=`0H8{RE zO|?-bZK@<$b+Tmx`?AN1Oi--@(KK7MRvBuQGD{{_lb5RHYDsN?q##jWNA1GV`kd2E zF0R!Y20VAH-AxXx&Z}b}bmA>xY66J%Mx$D?e`wiaw<^DS)h9`i{WRFmYWJ@?SUy3o zXteBVeM;m0kt@;J@}Cd@91-Q#K>!z-?c}k}^ zIoF>&HBC%BfAk01lPAZy zhd9<2H_H~ut$zLDaHUb>!!=RSOEX*yKgF#Q_ODyRvwU*@@EKk|Gi+8ThnsVDrBQ#l zuy6mcRkit^CdlXn+9i5?(%ehB8sYh?-Hr~QKTcv6eU#j{TfQxLNO%utQ=k*Qi)o<@tN*)N|emp>Qxx2X3|sub$-U!~}U9j8iSUpTcF-vR*Y2 zFB(Fv;P@k^gOb;!_YwmfoN`0dKrzSdwTuyoN{!lNwJ!4j*0C$9ccKHAg)1NeV09VB z>_)&@a99K0-a?3@4On`OtB{^V(N&xkoFyzP_d}A00r5s zo%IdtlRZXMTQMxKrGA#mzH{WlkxuvaYq^aVkGyx}YA$~{m+z$VH#0eLKd4sO6!vs& z`T~G^+4P(;ue?5JgyxkqO!Uty)AZGv#|V8y{(;8`dk0I&NAzjWwt`PpEt?B$x=yf!;;{-4KAu=mYCY?x9OZFXsxK zRNmwDD8iZL%S=qLrSpj=~77kv${YLU{{bzrYeCY zpc+zPuvfo$AWg1{EjZ)6*0kqT6Fy9?1nUa!x}JKM3zO}FHP-jL6<%H_sArJBQAz5C z!Htm-b$?-RVPC)imQG;aphCxP%Z2vpwFPvYD z-0aRQ9=?_vSUmn|X8Q-@S2DXg@m=2#A})c!FO-!z_Cjc$y^RLIFCrCYM?fSWaby{u zrV?{CQ=b`M#mBx!{+NjJ0z$ zRFqXZ0K*jK_ZYgZ3tAC%_GVN-da0uEddZ$^a*Yeo5SsjeDwTZPiCQh>2PdPM4c*X) zfhHNq%pNuPWNXTa*Qzy6-#gJVGL7Y=B)-B;s>#F-S}W`xJA$2r<`#aMW|42J>Vg~B zcjBeJ(YM>$6)|a@#PHPuyB<$p=(-%=^7r`GJ4u!vyqI{TI{kr8`>> zew;mc4d?X4`zJn2J@wDju1g30k=nbIU;|s0!mRfZ8n$6b54x5nFY+I<9pqAO{S*LM zI8HEIzox-rJejc}}qdON-uRcs)A{}>cI zHml^7v3yhvK_+JdDot5#l2NEAbThml$z{zYz75FJxubBg8?UQ%T>z%N+1K^@{9dQ8 z9>)NcFNI=>q3gN9_a3>N+xLg9S8@kBsRLhK&)oMVizJ3_WbXg$l)&uQRv(!BxTlZ3pEw!{|7zQj@Smdq@*yWCxZM)Jd2+DtGb`F^n(Tz2Dc-NRE;ZdmlGgl(&Qk?B7EFAA-hOR{RET!1+!=1=LXX8UxBKvPf(_e<7(ZO3` z7VB9eXsHL#m!VX&-@^e~+9Yw=00(GkyTtWGAM)q`-BHugegEFv6&?D5VUTA=iduq{ z!Q%xz<<`?c-QA-bp<=`c^QaLyjCmfT9=#an38PE)%dt08egG{dW#8P5G#3|LAl846 z1L~$b_hP|soMnxS;^!M0=$9K}#zM}T;gqmsMiJiigwLfc8nxvP5Dg(EHT194n97<2 zsqfhM^C+CWK!;vkGV=O$w9YTK(3~LoqW6$Jw9%;VwB3)v#I1I)KKObqKQ+A64x!#D z=@4J?8$lectm&0&`V7~6i6`7j-v$mvH?ps+AkilvGSj+VNLvXhuXhczo#FejgNSZ{mEyKk7}on7e`k$_3j-KS?Dz9{&vr=cjw}|f!AU$ zs{+?pfzJH|r7-RW7~@FS}o>ZA_cjivu+sOykJL&OPUKrJ$JU05|v&YAtak9Zm-c6T)2eS{EyA$gB zo%mt*dhL6H>Ojhz)+mOhu%ak8*tSnt-)C&s4Yub7J8**?{EYS8VCoIF>t;Ce)?;rx gb|bRmcI=Fz3@y&wX7qnsgdbFPF3#U!_>;^07do6?JOBUy literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/app.py b/venv/lib/python3.12/site-packages/flask/app.py new file mode 100644 index 0000000..7622b5e --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/app.py @@ -0,0 +1,1498 @@ +from __future__ import annotations + +import collections.abc as cabc +import os +import sys +import typing as t +import weakref +from datetime import timedelta +from inspect import iscoroutinefunction +from itertools import chain +from types import TracebackType +from urllib.parse import quote as _url_quote + +import click +from werkzeug.datastructures import Headers +from werkzeug.datastructures import ImmutableDict +from werkzeug.exceptions import BadRequestKeyError +from werkzeug.exceptions import HTTPException +from werkzeug.exceptions import InternalServerError +from werkzeug.routing import BuildError +from werkzeug.routing import MapAdapter +from werkzeug.routing import RequestRedirect +from werkzeug.routing import RoutingException +from werkzeug.routing import Rule +from werkzeug.serving import is_running_from_reloader +from werkzeug.wrappers import Response as BaseResponse + +from . import cli +from . import typing as ft +from .ctx import AppContext +from .ctx import RequestContext +from .globals import _cv_app +from .globals import _cv_request +from .globals import current_app +from .globals import g +from .globals import request +from .globals import request_ctx +from .globals import session +from .helpers import get_debug_flag +from .helpers import get_flashed_messages +from .helpers import get_load_dotenv +from .helpers import send_from_directory +from .sansio.app import App +from .sansio.scaffold import _sentinel +from .sessions import SecureCookieSessionInterface +from .sessions import SessionInterface +from .signals import appcontext_tearing_down +from .signals import got_request_exception +from .signals import request_finished +from .signals import request_started +from .signals import request_tearing_down +from .templating import Environment +from .wrappers import Request +from .wrappers import Response + +if t.TYPE_CHECKING: # pragma: no cover + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIEnvironment + + from .testing import FlaskClient + from .testing import FlaskCliRunner + +T_shell_context_processor = t.TypeVar( + "T_shell_context_processor", bound=ft.ShellContextProcessorCallable +) +T_teardown = t.TypeVar("T_teardown", bound=ft.TeardownCallable) +T_template_filter = t.TypeVar("T_template_filter", bound=ft.TemplateFilterCallable) +T_template_global = t.TypeVar("T_template_global", bound=ft.TemplateGlobalCallable) +T_template_test = t.TypeVar("T_template_test", bound=ft.TemplateTestCallable) + + +def _make_timedelta(value: timedelta | int | None) -> timedelta | None: + if value is None or isinstance(value, timedelta): + return value + + return timedelta(seconds=value) + + +class Flask(App): + """The flask object implements a WSGI application and acts as the central + object. It is passed the name of the module or package of the + application. Once it is created it will act as a central registry for + the view functions, the URL rules, template configuration and much more. + + The name of the package is used to resolve resources from inside the + package or the folder the module is contained in depending on if the + package parameter resolves to an actual python package (a folder with + an :file:`__init__.py` file inside) or a standard module (just a ``.py`` file). + + For more information about resource loading, see :func:`open_resource`. + + Usually you create a :class:`Flask` instance in your main module or + in the :file:`__init__.py` file of your package like this:: + + from flask import Flask + app = Flask(__name__) + + .. admonition:: About the First Parameter + + The idea of the first parameter is to give Flask an idea of what + belongs to your application. This name is used to find resources + on the filesystem, can be used by extensions to improve debugging + information and a lot more. + + So it's important what you provide there. If you are using a single + module, `__name__` is always the correct value. If you however are + using a package, it's usually recommended to hardcode the name of + your package there. + + For example if your application is defined in :file:`yourapplication/app.py` + you should create it with one of the two versions below:: + + app = Flask('yourapplication') + app = Flask(__name__.split('.')[0]) + + Why is that? The application will work even with `__name__`, thanks + to how resources are looked up. However it will make debugging more + painful. Certain extensions can make assumptions based on the + import name of your application. For example the Flask-SQLAlchemy + extension will look for the code in your application that triggered + an SQL query in debug mode. If the import name is not properly set + up, that debugging information is lost. (For example it would only + pick up SQL queries in `yourapplication.app` and not + `yourapplication.views.frontend`) + + .. versionadded:: 0.7 + The `static_url_path`, `static_folder`, and `template_folder` + parameters were added. + + .. versionadded:: 0.8 + The `instance_path` and `instance_relative_config` parameters were + added. + + .. versionadded:: 0.11 + The `root_path` parameter was added. + + .. versionadded:: 1.0 + The ``host_matching`` and ``static_host`` parameters were added. + + .. versionadded:: 1.0 + The ``subdomain_matching`` parameter was added. Subdomain + matching needs to be enabled manually now. Setting + :data:`SERVER_NAME` does not implicitly enable it. + + :param import_name: the name of the application package + :param static_url_path: can be used to specify a different path for the + static files on the web. Defaults to the name + of the `static_folder` folder. + :param static_folder: The folder with static files that is served at + ``static_url_path``. Relative to the application ``root_path`` + or an absolute path. Defaults to ``'static'``. + :param static_host: the host to use when adding the static route. + Defaults to None. Required when using ``host_matching=True`` + with a ``static_folder`` configured. + :param host_matching: set ``url_map.host_matching`` attribute. + Defaults to False. + :param subdomain_matching: consider the subdomain relative to + :data:`SERVER_NAME` when matching routes. Defaults to False. + :param template_folder: the folder that contains the templates that should + be used by the application. Defaults to + ``'templates'`` folder in the root path of the + application. + :param instance_path: An alternative instance path for the application. + By default the folder ``'instance'`` next to the + package or module is assumed to be the instance + path. + :param instance_relative_config: if set to ``True`` relative filenames + for loading the config are assumed to + be relative to the instance path instead + of the application root. + :param root_path: The path to the root of the application files. + This should only be set manually when it can't be detected + automatically, such as for namespace packages. + """ + + default_config = ImmutableDict( + { + "DEBUG": None, + "TESTING": False, + "PROPAGATE_EXCEPTIONS": None, + "SECRET_KEY": None, + "PERMANENT_SESSION_LIFETIME": timedelta(days=31), + "USE_X_SENDFILE": False, + "SERVER_NAME": None, + "APPLICATION_ROOT": "/", + "SESSION_COOKIE_NAME": "session", + "SESSION_COOKIE_DOMAIN": None, + "SESSION_COOKIE_PATH": None, + "SESSION_COOKIE_HTTPONLY": True, + "SESSION_COOKIE_SECURE": False, + "SESSION_COOKIE_SAMESITE": None, + "SESSION_REFRESH_EACH_REQUEST": True, + "MAX_CONTENT_LENGTH": None, + "SEND_FILE_MAX_AGE_DEFAULT": None, + "TRAP_BAD_REQUEST_ERRORS": None, + "TRAP_HTTP_EXCEPTIONS": False, + "EXPLAIN_TEMPLATE_LOADING": False, + "PREFERRED_URL_SCHEME": "http", + "TEMPLATES_AUTO_RELOAD": None, + "MAX_COOKIE_SIZE": 4093, + } + ) + + #: The class that is used for request objects. See :class:`~flask.Request` + #: for more information. + request_class: type[Request] = Request + + #: The class that is used for response objects. See + #: :class:`~flask.Response` for more information. + response_class: type[Response] = Response + + #: the session interface to use. By default an instance of + #: :class:`~flask.sessions.SecureCookieSessionInterface` is used here. + #: + #: .. versionadded:: 0.8 + session_interface: SessionInterface = SecureCookieSessionInterface() + + def __init__( + self, + import_name: str, + static_url_path: str | None = None, + static_folder: str | os.PathLike[str] | None = "static", + static_host: str | None = None, + host_matching: bool = False, + subdomain_matching: bool = False, + template_folder: str | os.PathLike[str] | None = "templates", + instance_path: str | None = None, + instance_relative_config: bool = False, + root_path: str | None = None, + ): + super().__init__( + import_name=import_name, + static_url_path=static_url_path, + static_folder=static_folder, + static_host=static_host, + host_matching=host_matching, + subdomain_matching=subdomain_matching, + template_folder=template_folder, + instance_path=instance_path, + instance_relative_config=instance_relative_config, + root_path=root_path, + ) + + #: The Click command group for registering CLI commands for this + #: object. The commands are available from the ``flask`` command + #: once the application has been discovered and blueprints have + #: been registered. + self.cli = cli.AppGroup() + + # Set the name of the Click group in case someone wants to add + # the app's commands to another CLI tool. + self.cli.name = self.name + + # Add a static route using the provided static_url_path, static_host, + # and static_folder if there is a configured static_folder. + # Note we do this without checking if static_folder exists. + # For one, it might be created while the server is running (e.g. during + # development). Also, Google App Engine stores static files somewhere + if self.has_static_folder: + assert ( + bool(static_host) == host_matching + ), "Invalid static_host/host_matching combination" + # Use a weakref to avoid creating a reference cycle between the app + # and the view function (see #3761). + self_ref = weakref.ref(self) + self.add_url_rule( + f"{self.static_url_path}/", + endpoint="static", + host=static_host, + view_func=lambda **kw: self_ref().send_static_file(**kw), # type: ignore # noqa: B950 + ) + + def get_send_file_max_age(self, filename: str | None) -> int | None: + """Used by :func:`send_file` to determine the ``max_age`` cache + value for a given file path if it wasn't passed. + + By default, this returns :data:`SEND_FILE_MAX_AGE_DEFAULT` from + the configuration of :data:`~flask.current_app`. This defaults + to ``None``, which tells the browser to use conditional requests + instead of a timed cache, which is usually preferable. + + Note this is a duplicate of the same method in the Flask + class. + + .. versionchanged:: 2.0 + The default configuration is ``None`` instead of 12 hours. + + .. versionadded:: 0.9 + """ + value = current_app.config["SEND_FILE_MAX_AGE_DEFAULT"] + + if value is None: + return None + + if isinstance(value, timedelta): + return int(value.total_seconds()) + + return value # type: ignore[no-any-return] + + def send_static_file(self, filename: str) -> Response: + """The view function used to serve files from + :attr:`static_folder`. A route is automatically registered for + this view at :attr:`static_url_path` if :attr:`static_folder` is + set. + + Note this is a duplicate of the same method in the Flask + class. + + .. versionadded:: 0.5 + + """ + if not self.has_static_folder: + raise RuntimeError("'static_folder' must be set to serve static_files.") + + # send_file only knows to call get_send_file_max_age on the app, + # call it here so it works for blueprints too. + max_age = self.get_send_file_max_age(filename) + return send_from_directory( + t.cast(str, self.static_folder), filename, max_age=max_age + ) + + def open_resource(self, resource: str, mode: str = "rb") -> t.IO[t.AnyStr]: + """Open a resource file relative to :attr:`root_path` for + reading. + + For example, if the file ``schema.sql`` is next to the file + ``app.py`` where the ``Flask`` app is defined, it can be opened + with: + + .. code-block:: python + + with app.open_resource("schema.sql") as f: + conn.executescript(f.read()) + + :param resource: Path to the resource relative to + :attr:`root_path`. + :param mode: Open the file in this mode. Only reading is + supported, valid values are "r" (or "rt") and "rb". + + Note this is a duplicate of the same method in the Flask + class. + + """ + if mode not in {"r", "rt", "rb"}: + raise ValueError("Resources can only be opened for reading.") + + return open(os.path.join(self.root_path, resource), mode) + + def open_instance_resource(self, resource: str, mode: str = "rb") -> t.IO[t.AnyStr]: + """Opens a resource from the application's instance folder + (:attr:`instance_path`). Otherwise works like + :meth:`open_resource`. Instance resources can also be opened for + writing. + + :param resource: the name of the resource. To access resources within + subfolders use forward slashes as separator. + :param mode: resource file opening mode, default is 'rb'. + """ + return open(os.path.join(self.instance_path, resource), mode) + + def create_jinja_environment(self) -> Environment: + """Create the Jinja environment based on :attr:`jinja_options` + and the various Jinja-related methods of the app. Changing + :attr:`jinja_options` after this will have no effect. Also adds + Flask-related globals and filters to the environment. + + .. versionchanged:: 0.11 + ``Environment.auto_reload`` set in accordance with + ``TEMPLATES_AUTO_RELOAD`` configuration option. + + .. versionadded:: 0.5 + """ + options = dict(self.jinja_options) + + if "autoescape" not in options: + options["autoescape"] = self.select_jinja_autoescape + + if "auto_reload" not in options: + auto_reload = self.config["TEMPLATES_AUTO_RELOAD"] + + if auto_reload is None: + auto_reload = self.debug + + options["auto_reload"] = auto_reload + + rv = self.jinja_environment(self, **options) + rv.globals.update( + url_for=self.url_for, + get_flashed_messages=get_flashed_messages, + config=self.config, + # request, session and g are normally added with the + # context processor for efficiency reasons but for imported + # templates we also want the proxies in there. + request=request, + session=session, + g=g, + ) + rv.policies["json.dumps_function"] = self.json.dumps + return rv + + def create_url_adapter(self, request: Request | None) -> MapAdapter | None: + """Creates a URL adapter for the given request. The URL adapter + is created at a point where the request context is not yet set + up so the request is passed explicitly. + + .. versionadded:: 0.6 + + .. versionchanged:: 0.9 + This can now also be called without a request object when the + URL adapter is created for the application context. + + .. versionchanged:: 1.0 + :data:`SERVER_NAME` no longer implicitly enables subdomain + matching. Use :attr:`subdomain_matching` instead. + """ + if request is not None: + # If subdomain matching is disabled (the default), use the + # default subdomain in all cases. This should be the default + # in Werkzeug but it currently does not have that feature. + if not self.subdomain_matching: + subdomain = self.url_map.default_subdomain or None + else: + subdomain = None + + return self.url_map.bind_to_environ( + request.environ, + server_name=self.config["SERVER_NAME"], + subdomain=subdomain, + ) + # We need at the very least the server name to be set for this + # to work. + if self.config["SERVER_NAME"] is not None: + return self.url_map.bind( + self.config["SERVER_NAME"], + script_name=self.config["APPLICATION_ROOT"], + url_scheme=self.config["PREFERRED_URL_SCHEME"], + ) + + return None + + def raise_routing_exception(self, request: Request) -> t.NoReturn: + """Intercept routing exceptions and possibly do something else. + + In debug mode, intercept a routing redirect and replace it with + an error if the body will be discarded. + + With modern Werkzeug this shouldn't occur, since it now uses a + 308 status which tells the browser to resend the method and + body. + + .. versionchanged:: 2.1 + Don't intercept 307 and 308 redirects. + + :meta private: + :internal: + """ + if ( + not self.debug + or not isinstance(request.routing_exception, RequestRedirect) + or request.routing_exception.code in {307, 308} + or request.method in {"GET", "HEAD", "OPTIONS"} + ): + raise request.routing_exception # type: ignore[misc] + + from .debughelpers import FormDataRoutingRedirect + + raise FormDataRoutingRedirect(request) + + def update_template_context(self, context: dict[str, t.Any]) -> None: + """Update the template context with some commonly used variables. + This injects request, session, config and g into the template + context as well as everything template context processors want + to inject. Note that the as of Flask 0.6, the original values + in the context will not be overridden if a context processor + decides to return a value with the same key. + + :param context: the context as a dictionary that is updated in place + to add extra variables. + """ + names: t.Iterable[str | None] = (None,) + + # A template may be rendered outside a request context. + if request: + names = chain(names, reversed(request.blueprints)) + + # The values passed to render_template take precedence. Keep a + # copy to re-apply after all context functions. + orig_ctx = context.copy() + + for name in names: + if name in self.template_context_processors: + for func in self.template_context_processors[name]: + context.update(self.ensure_sync(func)()) + + context.update(orig_ctx) + + def make_shell_context(self) -> dict[str, t.Any]: + """Returns the shell context for an interactive shell for this + application. This runs all the registered shell context + processors. + + .. versionadded:: 0.11 + """ + rv = {"app": self, "g": g} + for processor in self.shell_context_processors: + rv.update(processor()) + return rv + + def run( + self, + host: str | None = None, + port: int | None = None, + debug: bool | None = None, + load_dotenv: bool = True, + **options: t.Any, + ) -> None: + """Runs the application on a local development server. + + Do not use ``run()`` in a production setting. It is not intended to + meet security and performance requirements for a production server. + Instead, see :doc:`/deploying/index` for WSGI server recommendations. + + If the :attr:`debug` flag is set the server will automatically reload + for code changes and show a debugger in case an exception happened. + + If you want to run the application in debug mode, but disable the + code execution on the interactive debugger, you can pass + ``use_evalex=False`` as parameter. This will keep the debugger's + traceback screen active, but disable code execution. + + It is not recommended to use this function for development with + automatic reloading as this is badly supported. Instead you should + be using the :command:`flask` command line script's ``run`` support. + + .. admonition:: Keep in Mind + + Flask will suppress any server error with a generic error page + unless it is in debug mode. As such to enable just the + interactive debugger without the code reloading, you have to + invoke :meth:`run` with ``debug=True`` and ``use_reloader=False``. + Setting ``use_debugger`` to ``True`` without being in debug mode + won't catch any exceptions because there won't be any to + catch. + + :param host: the hostname to listen on. Set this to ``'0.0.0.0'`` to + have the server available externally as well. Defaults to + ``'127.0.0.1'`` or the host in the ``SERVER_NAME`` config variable + if present. + :param port: the port of the webserver. Defaults to ``5000`` or the + port defined in the ``SERVER_NAME`` config variable if present. + :param debug: if given, enable or disable debug mode. See + :attr:`debug`. + :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` + files to set environment variables. Will also change the working + directory to the directory containing the first file found. + :param options: the options to be forwarded to the underlying Werkzeug + server. See :func:`werkzeug.serving.run_simple` for more + information. + + .. versionchanged:: 1.0 + If installed, python-dotenv will be used to load environment + variables from :file:`.env` and :file:`.flaskenv` files. + + The :envvar:`FLASK_DEBUG` environment variable will override :attr:`debug`. + + Threaded mode is enabled by default. + + .. versionchanged:: 0.10 + The default port is now picked from the ``SERVER_NAME`` + variable. + """ + # Ignore this call so that it doesn't start another server if + # the 'flask run' command is used. + if os.environ.get("FLASK_RUN_FROM_CLI") == "true": + if not is_running_from_reloader(): + click.secho( + " * Ignoring a call to 'app.run()' that would block" + " the current 'flask' CLI command.\n" + " Only call 'app.run()' in an 'if __name__ ==" + ' "__main__"\' guard.', + fg="red", + ) + + return + + if get_load_dotenv(load_dotenv): + cli.load_dotenv() + + # if set, env var overrides existing value + if "FLASK_DEBUG" in os.environ: + self.debug = get_debug_flag() + + # debug passed to method overrides all other sources + if debug is not None: + self.debug = bool(debug) + + server_name = self.config.get("SERVER_NAME") + sn_host = sn_port = None + + if server_name: + sn_host, _, sn_port = server_name.partition(":") + + if not host: + if sn_host: + host = sn_host + else: + host = "127.0.0.1" + + if port or port == 0: + port = int(port) + elif sn_port: + port = int(sn_port) + else: + port = 5000 + + options.setdefault("use_reloader", self.debug) + options.setdefault("use_debugger", self.debug) + options.setdefault("threaded", True) + + cli.show_server_banner(self.debug, self.name) + + from werkzeug.serving import run_simple + + try: + run_simple(t.cast(str, host), port, self, **options) + finally: + # reset the first request information if the development server + # reset normally. This makes it possible to restart the server + # without reloader and that stuff from an interactive shell. + self._got_first_request = False + + def test_client(self, use_cookies: bool = True, **kwargs: t.Any) -> FlaskClient: + """Creates a test client for this application. For information + about unit testing head over to :doc:`/testing`. + + Note that if you are testing for assertions or exceptions in your + application code, you must set ``app.testing = True`` in order for the + exceptions to propagate to the test client. Otherwise, the exception + will be handled by the application (not visible to the test client) and + the only indication of an AssertionError or other exception will be a + 500 status code response to the test client. See the :attr:`testing` + attribute. For example:: + + app.testing = True + client = app.test_client() + + The test client can be used in a ``with`` block to defer the closing down + of the context until the end of the ``with`` block. This is useful if + you want to access the context locals for testing:: + + with app.test_client() as c: + rv = c.get('/?vodka=42') + assert request.args['vodka'] == '42' + + Additionally, you may pass optional keyword arguments that will then + be passed to the application's :attr:`test_client_class` constructor. + For example:: + + from flask.testing import FlaskClient + + class CustomClient(FlaskClient): + def __init__(self, *args, **kwargs): + self._authentication = kwargs.pop("authentication") + super(CustomClient,self).__init__( *args, **kwargs) + + app.test_client_class = CustomClient + client = app.test_client(authentication='Basic ....') + + See :class:`~flask.testing.FlaskClient` for more information. + + .. versionchanged:: 0.4 + added support for ``with`` block usage for the client. + + .. versionadded:: 0.7 + The `use_cookies` parameter was added as well as the ability + to override the client to be used by setting the + :attr:`test_client_class` attribute. + + .. versionchanged:: 0.11 + Added `**kwargs` to support passing additional keyword arguments to + the constructor of :attr:`test_client_class`. + """ + cls = self.test_client_class + if cls is None: + from .testing import FlaskClient as cls + return cls( # type: ignore + self, self.response_class, use_cookies=use_cookies, **kwargs + ) + + def test_cli_runner(self, **kwargs: t.Any) -> FlaskCliRunner: + """Create a CLI runner for testing CLI commands. + See :ref:`testing-cli`. + + Returns an instance of :attr:`test_cli_runner_class`, by default + :class:`~flask.testing.FlaskCliRunner`. The Flask app object is + passed as the first argument. + + .. versionadded:: 1.0 + """ + cls = self.test_cli_runner_class + + if cls is None: + from .testing import FlaskCliRunner as cls + + return cls(self, **kwargs) # type: ignore + + def handle_http_exception( + self, e: HTTPException + ) -> HTTPException | ft.ResponseReturnValue: + """Handles an HTTP exception. By default this will invoke the + registered error handlers and fall back to returning the + exception as response. + + .. versionchanged:: 1.0.3 + ``RoutingException``, used internally for actions such as + slash redirects during routing, is not passed to error + handlers. + + .. versionchanged:: 1.0 + Exceptions are looked up by code *and* by MRO, so + ``HTTPException`` subclasses can be handled with a catch-all + handler for the base ``HTTPException``. + + .. versionadded:: 0.3 + """ + # Proxy exceptions don't have error codes. We want to always return + # those unchanged as errors + if e.code is None: + return e + + # RoutingExceptions are used internally to trigger routing + # actions, such as slash redirects raising RequestRedirect. They + # are not raised or handled in user code. + if isinstance(e, RoutingException): + return e + + handler = self._find_error_handler(e, request.blueprints) + if handler is None: + return e + return self.ensure_sync(handler)(e) # type: ignore[no-any-return] + + def handle_user_exception( + self, e: Exception + ) -> HTTPException | ft.ResponseReturnValue: + """This method is called whenever an exception occurs that + should be handled. A special case is :class:`~werkzeug + .exceptions.HTTPException` which is forwarded to the + :meth:`handle_http_exception` method. This function will either + return a response value or reraise the exception with the same + traceback. + + .. versionchanged:: 1.0 + Key errors raised from request data like ``form`` show the + bad key in debug mode rather than a generic bad request + message. + + .. versionadded:: 0.7 + """ + if isinstance(e, BadRequestKeyError) and ( + self.debug or self.config["TRAP_BAD_REQUEST_ERRORS"] + ): + e.show_exception = True + + if isinstance(e, HTTPException) and not self.trap_http_exception(e): + return self.handle_http_exception(e) + + handler = self._find_error_handler(e, request.blueprints) + + if handler is None: + raise + + return self.ensure_sync(handler)(e) # type: ignore[no-any-return] + + def handle_exception(self, e: Exception) -> Response: + """Handle an exception that did not have an error handler + associated with it, or that was raised from an error handler. + This always causes a 500 ``InternalServerError``. + + Always sends the :data:`got_request_exception` signal. + + If :data:`PROPAGATE_EXCEPTIONS` is ``True``, such as in debug + mode, the error will be re-raised so that the debugger can + display it. Otherwise, the original exception is logged, and + an :exc:`~werkzeug.exceptions.InternalServerError` is returned. + + If an error handler is registered for ``InternalServerError`` or + ``500``, it will be used. For consistency, the handler will + always receive the ``InternalServerError``. The original + unhandled exception is available as ``e.original_exception``. + + .. versionchanged:: 1.1.0 + Always passes the ``InternalServerError`` instance to the + handler, setting ``original_exception`` to the unhandled + error. + + .. versionchanged:: 1.1.0 + ``after_request`` functions and other finalization is done + even for the default 500 response when there is no handler. + + .. versionadded:: 0.3 + """ + exc_info = sys.exc_info() + got_request_exception.send(self, _async_wrapper=self.ensure_sync, exception=e) + propagate = self.config["PROPAGATE_EXCEPTIONS"] + + if propagate is None: + propagate = self.testing or self.debug + + if propagate: + # Re-raise if called with an active exception, otherwise + # raise the passed in exception. + if exc_info[1] is e: + raise + + raise e + + self.log_exception(exc_info) + server_error: InternalServerError | ft.ResponseReturnValue + server_error = InternalServerError(original_exception=e) + handler = self._find_error_handler(server_error, request.blueprints) + + if handler is not None: + server_error = self.ensure_sync(handler)(server_error) + + return self.finalize_request(server_error, from_error_handler=True) + + def log_exception( + self, + exc_info: (tuple[type, BaseException, TracebackType] | tuple[None, None, None]), + ) -> None: + """Logs an exception. This is called by :meth:`handle_exception` + if debugging is disabled and right before the handler is called. + The default implementation logs the exception as error on the + :attr:`logger`. + + .. versionadded:: 0.8 + """ + self.logger.error( + f"Exception on {request.path} [{request.method}]", exc_info=exc_info + ) + + def dispatch_request(self) -> ft.ResponseReturnValue: + """Does the request dispatching. Matches the URL and returns the + return value of the view or error handler. This does not have to + be a response object. In order to convert the return value to a + proper response object, call :func:`make_response`. + + .. versionchanged:: 0.7 + This no longer does the exception handling, this code was + moved to the new :meth:`full_dispatch_request`. + """ + req = request_ctx.request + if req.routing_exception is not None: + self.raise_routing_exception(req) + rule: Rule = req.url_rule # type: ignore[assignment] + # if we provide automatic options for this URL and the + # request came with the OPTIONS method, reply automatically + if ( + getattr(rule, "provide_automatic_options", False) + and req.method == "OPTIONS" + ): + return self.make_default_options_response() + # otherwise dispatch to the handler for that endpoint + view_args: dict[str, t.Any] = req.view_args # type: ignore[assignment] + return self.ensure_sync(self.view_functions[rule.endpoint])(**view_args) # type: ignore[no-any-return] + + def full_dispatch_request(self) -> Response: + """Dispatches the request and on top of that performs request + pre and postprocessing as well as HTTP exception catching and + error handling. + + .. versionadded:: 0.7 + """ + self._got_first_request = True + + try: + request_started.send(self, _async_wrapper=self.ensure_sync) + rv = self.preprocess_request() + if rv is None: + rv = self.dispatch_request() + except Exception as e: + rv = self.handle_user_exception(e) + return self.finalize_request(rv) + + def finalize_request( + self, + rv: ft.ResponseReturnValue | HTTPException, + from_error_handler: bool = False, + ) -> Response: + """Given the return value from a view function this finalizes + the request by converting it into a response and invoking the + postprocessing functions. This is invoked for both normal + request dispatching as well as error handlers. + + Because this means that it might be called as a result of a + failure a special safe mode is available which can be enabled + with the `from_error_handler` flag. If enabled, failures in + response processing will be logged and otherwise ignored. + + :internal: + """ + response = self.make_response(rv) + try: + response = self.process_response(response) + request_finished.send( + self, _async_wrapper=self.ensure_sync, response=response + ) + except Exception: + if not from_error_handler: + raise + self.logger.exception( + "Request finalizing failed with an error while handling an error" + ) + return response + + def make_default_options_response(self) -> Response: + """This method is called to create the default ``OPTIONS`` response. + This can be changed through subclassing to change the default + behavior of ``OPTIONS`` responses. + + .. versionadded:: 0.7 + """ + adapter = request_ctx.url_adapter + methods = adapter.allowed_methods() # type: ignore[union-attr] + rv = self.response_class() + rv.allow.update(methods) + return rv + + def ensure_sync(self, func: t.Callable[..., t.Any]) -> t.Callable[..., t.Any]: + """Ensure that the function is synchronous for WSGI workers. + Plain ``def`` functions are returned as-is. ``async def`` + functions are wrapped to run and wait for the response. + + Override this method to change how the app runs async views. + + .. versionadded:: 2.0 + """ + if iscoroutinefunction(func): + return self.async_to_sync(func) + + return func + + def async_to_sync( + self, func: t.Callable[..., t.Coroutine[t.Any, t.Any, t.Any]] + ) -> t.Callable[..., t.Any]: + """Return a sync function that will run the coroutine function. + + .. code-block:: python + + result = app.async_to_sync(func)(*args, **kwargs) + + Override this method to change how the app converts async code + to be synchronously callable. + + .. versionadded:: 2.0 + """ + try: + from asgiref.sync import async_to_sync as asgiref_async_to_sync + except ImportError: + raise RuntimeError( + "Install Flask with the 'async' extra in order to use async views." + ) from None + + return asgiref_async_to_sync(func) + + def url_for( + self, + /, + endpoint: str, + *, + _anchor: str | None = None, + _method: str | None = None, + _scheme: str | None = None, + _external: bool | None = None, + **values: t.Any, + ) -> str: + """Generate a URL to the given endpoint with the given values. + + This is called by :func:`flask.url_for`, and can be called + directly as well. + + An *endpoint* is the name of a URL rule, usually added with + :meth:`@app.route() `, and usually the same name as the + view function. A route defined in a :class:`~flask.Blueprint` + will prepend the blueprint's name separated by a ``.`` to the + endpoint. + + In some cases, such as email messages, you want URLs to include + the scheme and domain, like ``https://example.com/hello``. When + not in an active request, URLs will be external by default, but + this requires setting :data:`SERVER_NAME` so Flask knows what + domain to use. :data:`APPLICATION_ROOT` and + :data:`PREFERRED_URL_SCHEME` should also be configured as + needed. This config is only used when not in an active request. + + Functions can be decorated with :meth:`url_defaults` to modify + keyword arguments before the URL is built. + + If building fails for some reason, such as an unknown endpoint + or incorrect values, the app's :meth:`handle_url_build_error` + method is called. If that returns a string, that is returned, + otherwise a :exc:`~werkzeug.routing.BuildError` is raised. + + :param endpoint: The endpoint name associated with the URL to + generate. If this starts with a ``.``, the current blueprint + name (if any) will be used. + :param _anchor: If given, append this as ``#anchor`` to the URL. + :param _method: If given, generate the URL associated with this + method for the endpoint. + :param _scheme: If given, the URL will have this scheme if it + is external. + :param _external: If given, prefer the URL to be internal + (False) or require it to be external (True). External URLs + include the scheme and domain. When not in an active + request, URLs are external by default. + :param values: Values to use for the variable parts of the URL + rule. Unknown keys are appended as query string arguments, + like ``?a=b&c=d``. + + .. versionadded:: 2.2 + Moved from ``flask.url_for``, which calls this method. + """ + req_ctx = _cv_request.get(None) + + if req_ctx is not None: + url_adapter = req_ctx.url_adapter + blueprint_name = req_ctx.request.blueprint + + # If the endpoint starts with "." and the request matches a + # blueprint, the endpoint is relative to the blueprint. + if endpoint[:1] == ".": + if blueprint_name is not None: + endpoint = f"{blueprint_name}{endpoint}" + else: + endpoint = endpoint[1:] + + # When in a request, generate a URL without scheme and + # domain by default, unless a scheme is given. + if _external is None: + _external = _scheme is not None + else: + app_ctx = _cv_app.get(None) + + # If called by helpers.url_for, an app context is active, + # use its url_adapter. Otherwise, app.url_for was called + # directly, build an adapter. + if app_ctx is not None: + url_adapter = app_ctx.url_adapter + else: + url_adapter = self.create_url_adapter(None) + + if url_adapter is None: + raise RuntimeError( + "Unable to build URLs outside an active request" + " without 'SERVER_NAME' configured. Also configure" + " 'APPLICATION_ROOT' and 'PREFERRED_URL_SCHEME' as" + " needed." + ) + + # When outside a request, generate a URL with scheme and + # domain by default. + if _external is None: + _external = True + + # It is an error to set _scheme when _external=False, in order + # to avoid accidental insecure URLs. + if _scheme is not None and not _external: + raise ValueError("When specifying '_scheme', '_external' must be True.") + + self.inject_url_defaults(endpoint, values) + + try: + rv = url_adapter.build( # type: ignore[union-attr] + endpoint, + values, + method=_method, + url_scheme=_scheme, + force_external=_external, + ) + except BuildError as error: + values.update( + _anchor=_anchor, _method=_method, _scheme=_scheme, _external=_external + ) + return self.handle_url_build_error(error, endpoint, values) + + if _anchor is not None: + _anchor = _url_quote(_anchor, safe="%!#$&'()*+,/:;=?@") + rv = f"{rv}#{_anchor}" + + return rv + + def make_response(self, rv: ft.ResponseReturnValue) -> Response: + """Convert the return value from a view function to an instance of + :attr:`response_class`. + + :param rv: the return value from the view function. The view function + must return a response. Returning ``None``, or the view ending + without returning, is not allowed. The following types are allowed + for ``view_rv``: + + ``str`` + A response object is created with the string encoded to UTF-8 + as the body. + + ``bytes`` + A response object is created with the bytes as the body. + + ``dict`` + A dictionary that will be jsonify'd before being returned. + + ``list`` + A list that will be jsonify'd before being returned. + + ``generator`` or ``iterator`` + A generator that returns ``str`` or ``bytes`` to be + streamed as the response. + + ``tuple`` + Either ``(body, status, headers)``, ``(body, status)``, or + ``(body, headers)``, where ``body`` is any of the other types + allowed here, ``status`` is a string or an integer, and + ``headers`` is a dictionary or a list of ``(key, value)`` + tuples. If ``body`` is a :attr:`response_class` instance, + ``status`` overwrites the exiting value and ``headers`` are + extended. + + :attr:`response_class` + The object is returned unchanged. + + other :class:`~werkzeug.wrappers.Response` class + The object is coerced to :attr:`response_class`. + + :func:`callable` + The function is called as a WSGI application. The result is + used to create a response object. + + .. versionchanged:: 2.2 + A generator will be converted to a streaming response. + A list will be converted to a JSON response. + + .. versionchanged:: 1.1 + A dict will be converted to a JSON response. + + .. versionchanged:: 0.9 + Previously a tuple was interpreted as the arguments for the + response object. + """ + + status = headers = None + + # unpack tuple returns + if isinstance(rv, tuple): + len_rv = len(rv) + + # a 3-tuple is unpacked directly + if len_rv == 3: + rv, status, headers = rv # type: ignore[misc] + # decide if a 2-tuple has status or headers + elif len_rv == 2: + if isinstance(rv[1], (Headers, dict, tuple, list)): + rv, headers = rv + else: + rv, status = rv # type: ignore[assignment,misc] + # other sized tuples are not allowed + else: + raise TypeError( + "The view function did not return a valid response tuple." + " The tuple must have the form (body, status, headers)," + " (body, status), or (body, headers)." + ) + + # the body must not be None + if rv is None: + raise TypeError( + f"The view function for {request.endpoint!r} did not" + " return a valid response. The function either returned" + " None or ended without a return statement." + ) + + # make sure the body is an instance of the response class + if not isinstance(rv, self.response_class): + if isinstance(rv, (str, bytes, bytearray)) or isinstance(rv, cabc.Iterator): + # let the response class set the status and headers instead of + # waiting to do it manually, so that the class can handle any + # special logic + rv = self.response_class( + rv, + status=status, + headers=headers, # type: ignore[arg-type] + ) + status = headers = None + elif isinstance(rv, (dict, list)): + rv = self.json.response(rv) + elif isinstance(rv, BaseResponse) or callable(rv): + # evaluate a WSGI callable, or coerce a different response + # class to the correct type + try: + rv = self.response_class.force_type( + rv, # type: ignore[arg-type] + request.environ, + ) + except TypeError as e: + raise TypeError( + f"{e}\nThe view function did not return a valid" + " response. The return type must be a string," + " dict, list, tuple with headers or status," + " Response instance, or WSGI callable, but it" + f" was a {type(rv).__name__}." + ).with_traceback(sys.exc_info()[2]) from None + else: + raise TypeError( + "The view function did not return a valid" + " response. The return type must be a string," + " dict, list, tuple with headers or status," + " Response instance, or WSGI callable, but it was a" + f" {type(rv).__name__}." + ) + + rv = t.cast(Response, rv) + # prefer the status if it was provided + if status is not None: + if isinstance(status, (str, bytes, bytearray)): + rv.status = status + else: + rv.status_code = status + + # extend existing headers with provided headers + if headers: + rv.headers.update(headers) # type: ignore[arg-type] + + return rv + + def preprocess_request(self) -> ft.ResponseReturnValue | None: + """Called before the request is dispatched. Calls + :attr:`url_value_preprocessors` registered with the app and the + current blueprint (if any). Then calls :attr:`before_request_funcs` + registered with the app and the blueprint. + + If any :meth:`before_request` handler returns a non-None value, the + value is handled as if it was the return value from the view, and + further request handling is stopped. + """ + names = (None, *reversed(request.blueprints)) + + for name in names: + if name in self.url_value_preprocessors: + for url_func in self.url_value_preprocessors[name]: + url_func(request.endpoint, request.view_args) + + for name in names: + if name in self.before_request_funcs: + for before_func in self.before_request_funcs[name]: + rv = self.ensure_sync(before_func)() + + if rv is not None: + return rv # type: ignore[no-any-return] + + return None + + def process_response(self, response: Response) -> Response: + """Can be overridden in order to modify the response object + before it's sent to the WSGI server. By default this will + call all the :meth:`after_request` decorated functions. + + .. versionchanged:: 0.5 + As of Flask 0.5 the functions registered for after request + execution are called in reverse order of registration. + + :param response: a :attr:`response_class` object. + :return: a new response object or the same, has to be an + instance of :attr:`response_class`. + """ + ctx = request_ctx._get_current_object() # type: ignore[attr-defined] + + for func in ctx._after_request_functions: + response = self.ensure_sync(func)(response) + + for name in chain(request.blueprints, (None,)): + if name in self.after_request_funcs: + for func in reversed(self.after_request_funcs[name]): + response = self.ensure_sync(func)(response) + + if not self.session_interface.is_null_session(ctx.session): + self.session_interface.save_session(self, ctx.session, response) + + return response + + def do_teardown_request( + self, + exc: BaseException | None = _sentinel, # type: ignore[assignment] + ) -> None: + """Called after the request is dispatched and the response is + returned, right before the request context is popped. + + This calls all functions decorated with + :meth:`teardown_request`, and :meth:`Blueprint.teardown_request` + if a blueprint handled the request. Finally, the + :data:`request_tearing_down` signal is sent. + + This is called by + :meth:`RequestContext.pop() `, + which may be delayed during testing to maintain access to + resources. + + :param exc: An unhandled exception raised while dispatching the + request. Detected from the current exception information if + not passed. Passed to each teardown function. + + .. versionchanged:: 0.9 + Added the ``exc`` argument. + """ + if exc is _sentinel: + exc = sys.exc_info()[1] + + for name in chain(request.blueprints, (None,)): + if name in self.teardown_request_funcs: + for func in reversed(self.teardown_request_funcs[name]): + self.ensure_sync(func)(exc) + + request_tearing_down.send(self, _async_wrapper=self.ensure_sync, exc=exc) + + def do_teardown_appcontext( + self, + exc: BaseException | None = _sentinel, # type: ignore[assignment] + ) -> None: + """Called right before the application context is popped. + + When handling a request, the application context is popped + after the request context. See :meth:`do_teardown_request`. + + This calls all functions decorated with + :meth:`teardown_appcontext`. Then the + :data:`appcontext_tearing_down` signal is sent. + + This is called by + :meth:`AppContext.pop() `. + + .. versionadded:: 0.9 + """ + if exc is _sentinel: + exc = sys.exc_info()[1] + + for func in reversed(self.teardown_appcontext_funcs): + self.ensure_sync(func)(exc) + + appcontext_tearing_down.send(self, _async_wrapper=self.ensure_sync, exc=exc) + + def app_context(self) -> AppContext: + """Create an :class:`~flask.ctx.AppContext`. Use as a ``with`` + block to push the context, which will make :data:`current_app` + point at this application. + + An application context is automatically pushed by + :meth:`RequestContext.push() ` + when handling a request, and when running a CLI command. Use + this to manually create a context outside of these situations. + + :: + + with app.app_context(): + init_db() + + See :doc:`/appcontext`. + + .. versionadded:: 0.9 + """ + return AppContext(self) + + def request_context(self, environ: WSGIEnvironment) -> RequestContext: + """Create a :class:`~flask.ctx.RequestContext` representing a + WSGI environment. Use a ``with`` block to push the context, + which will make :data:`request` point at this request. + + See :doc:`/reqcontext`. + + Typically you should not call this from your own code. A request + context is automatically pushed by the :meth:`wsgi_app` when + handling a request. Use :meth:`test_request_context` to create + an environment and context instead of this method. + + :param environ: a WSGI environment + """ + return RequestContext(self, environ) + + def test_request_context(self, *args: t.Any, **kwargs: t.Any) -> RequestContext: + """Create a :class:`~flask.ctx.RequestContext` for a WSGI + environment created from the given values. This is mostly useful + during testing, where you may want to run a function that uses + request data without dispatching a full request. + + See :doc:`/reqcontext`. + + Use a ``with`` block to push the context, which will make + :data:`request` point at the request for the created + environment. :: + + with app.test_request_context(...): + generate_report() + + When using the shell, it may be easier to push and pop the + context manually to avoid indentation. :: + + ctx = app.test_request_context(...) + ctx.push() + ... + ctx.pop() + + Takes the same arguments as Werkzeug's + :class:`~werkzeug.test.EnvironBuilder`, with some defaults from + the application. See the linked Werkzeug docs for most of the + available arguments. Flask-specific behavior is listed here. + + :param path: URL path being requested. + :param base_url: Base URL where the app is being served, which + ``path`` is relative to. If not given, built from + :data:`PREFERRED_URL_SCHEME`, ``subdomain``, + :data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`. + :param subdomain: Subdomain name to append to + :data:`SERVER_NAME`. + :param url_scheme: Scheme to use instead of + :data:`PREFERRED_URL_SCHEME`. + :param data: The request body, either as a string or a dict of + form keys and values. + :param json: If given, this is serialized as JSON and passed as + ``data``. Also defaults ``content_type`` to + ``application/json``. + :param args: other positional arguments passed to + :class:`~werkzeug.test.EnvironBuilder`. + :param kwargs: other keyword arguments passed to + :class:`~werkzeug.test.EnvironBuilder`. + """ + from .testing import EnvironBuilder + + builder = EnvironBuilder(self, *args, **kwargs) + + try: + return self.request_context(builder.get_environ()) + finally: + builder.close() + + def wsgi_app( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> cabc.Iterable[bytes]: + """The actual WSGI application. This is not implemented in + :meth:`__call__` so that middlewares can be applied without + losing a reference to the app object. Instead of doing this:: + + app = MyMiddleware(app) + + It's a better idea to do this instead:: + + app.wsgi_app = MyMiddleware(app.wsgi_app) + + Then you still have the original application object around and + can continue to call methods on it. + + .. versionchanged:: 0.7 + Teardown events for the request and app contexts are called + even if an unhandled error occurs. Other events may not be + called depending on when an error occurs during dispatch. + See :ref:`callbacks-and-errors`. + + :param environ: A WSGI environment. + :param start_response: A callable accepting a status code, + a list of headers, and an optional exception context to + start the response. + """ + ctx = self.request_context(environ) + error: BaseException | None = None + try: + try: + ctx.push() + response = self.full_dispatch_request() + except Exception as e: + error = e + response = self.handle_exception(e) + except: # noqa: B001 + error = sys.exc_info()[1] + raise + return response(environ, start_response) + finally: + if "werkzeug.debug.preserve_context" in environ: + environ["werkzeug.debug.preserve_context"](_cv_app.get()) + environ["werkzeug.debug.preserve_context"](_cv_request.get()) + + if error is not None and self.should_ignore_error(error): + error = None + + ctx.pop(error) + + def __call__( + self, environ: WSGIEnvironment, start_response: StartResponse + ) -> cabc.Iterable[bytes]: + """The WSGI server calls the Flask application object as the + WSGI application. This calls :meth:`wsgi_app`, which can be + wrapped to apply middleware. + """ + return self.wsgi_app(environ, start_response) diff --git a/venv/lib/python3.12/site-packages/flask/blueprints.py b/venv/lib/python3.12/site-packages/flask/blueprints.py new file mode 100644 index 0000000..aa9eacf --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/blueprints.py @@ -0,0 +1,129 @@ +from __future__ import annotations + +import os +import typing as t +from datetime import timedelta + +from .cli import AppGroup +from .globals import current_app +from .helpers import send_from_directory +from .sansio.blueprints import Blueprint as SansioBlueprint +from .sansio.blueprints import BlueprintSetupState as BlueprintSetupState # noqa +from .sansio.scaffold import _sentinel + +if t.TYPE_CHECKING: # pragma: no cover + from .wrappers import Response + + +class Blueprint(SansioBlueprint): + def __init__( + self, + name: str, + import_name: str, + static_folder: str | os.PathLike[str] | None = None, + static_url_path: str | None = None, + template_folder: str | os.PathLike[str] | None = None, + url_prefix: str | None = None, + subdomain: str | None = None, + url_defaults: dict[str, t.Any] | None = None, + root_path: str | None = None, + cli_group: str | None = _sentinel, # type: ignore + ) -> None: + super().__init__( + name, + import_name, + static_folder, + static_url_path, + template_folder, + url_prefix, + subdomain, + url_defaults, + root_path, + cli_group, + ) + + #: The Click command group for registering CLI commands for this + #: object. The commands are available from the ``flask`` command + #: once the application has been discovered and blueprints have + #: been registered. + self.cli = AppGroup() + + # Set the name of the Click group in case someone wants to add + # the app's commands to another CLI tool. + self.cli.name = self.name + + def get_send_file_max_age(self, filename: str | None) -> int | None: + """Used by :func:`send_file` to determine the ``max_age`` cache + value for a given file path if it wasn't passed. + + By default, this returns :data:`SEND_FILE_MAX_AGE_DEFAULT` from + the configuration of :data:`~flask.current_app`. This defaults + to ``None``, which tells the browser to use conditional requests + instead of a timed cache, which is usually preferable. + + Note this is a duplicate of the same method in the Flask + class. + + .. versionchanged:: 2.0 + The default configuration is ``None`` instead of 12 hours. + + .. versionadded:: 0.9 + """ + value = current_app.config["SEND_FILE_MAX_AGE_DEFAULT"] + + if value is None: + return None + + if isinstance(value, timedelta): + return int(value.total_seconds()) + + return value # type: ignore[no-any-return] + + def send_static_file(self, filename: str) -> Response: + """The view function used to serve files from + :attr:`static_folder`. A route is automatically registered for + this view at :attr:`static_url_path` if :attr:`static_folder` is + set. + + Note this is a duplicate of the same method in the Flask + class. + + .. versionadded:: 0.5 + + """ + if not self.has_static_folder: + raise RuntimeError("'static_folder' must be set to serve static_files.") + + # send_file only knows to call get_send_file_max_age on the app, + # call it here so it works for blueprints too. + max_age = self.get_send_file_max_age(filename) + return send_from_directory( + t.cast(str, self.static_folder), filename, max_age=max_age + ) + + def open_resource(self, resource: str, mode: str = "rb") -> t.IO[t.AnyStr]: + """Open a resource file relative to :attr:`root_path` for + reading. + + For example, if the file ``schema.sql`` is next to the file + ``app.py`` where the ``Flask`` app is defined, it can be opened + with: + + .. code-block:: python + + with app.open_resource("schema.sql") as f: + conn.executescript(f.read()) + + :param resource: Path to the resource relative to + :attr:`root_path`. + :param mode: Open the file in this mode. Only reading is + supported, valid values are "r" (or "rt") and "rb". + + Note this is a duplicate of the same method in the Flask + class. + + """ + if mode not in {"r", "rt", "rb"}: + raise ValueError("Resources can only be opened for reading.") + + return open(os.path.join(self.root_path, resource), mode) diff --git a/venv/lib/python3.12/site-packages/flask/cli.py b/venv/lib/python3.12/site-packages/flask/cli.py new file mode 100644 index 0000000..ecb292a --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/cli.py @@ -0,0 +1,1109 @@ +from __future__ import annotations + +import ast +import collections.abc as cabc +import importlib.metadata +import inspect +import os +import platform +import re +import sys +import traceback +import typing as t +from functools import update_wrapper +from operator import itemgetter +from types import ModuleType + +import click +from click.core import ParameterSource +from werkzeug import run_simple +from werkzeug.serving import is_running_from_reloader +from werkzeug.utils import import_string + +from .globals import current_app +from .helpers import get_debug_flag +from .helpers import get_load_dotenv + +if t.TYPE_CHECKING: + import ssl + + from _typeshed.wsgi import StartResponse + from _typeshed.wsgi import WSGIApplication + from _typeshed.wsgi import WSGIEnvironment + + from .app import Flask + + +class NoAppException(click.UsageError): + """Raised if an application cannot be found or loaded.""" + + +def find_best_app(module: ModuleType) -> Flask: + """Given a module instance this tries to find the best possible + application in the module or raises an exception. + """ + from . import Flask + + # Search for the most common names first. + for attr_name in ("app", "application"): + app = getattr(module, attr_name, None) + + if isinstance(app, Flask): + return app + + # Otherwise find the only object that is a Flask instance. + matches = [v for v in module.__dict__.values() if isinstance(v, Flask)] + + if len(matches) == 1: + return matches[0] + elif len(matches) > 1: + raise NoAppException( + "Detected multiple Flask applications in module" + f" '{module.__name__}'. Use '{module.__name__}:name'" + " to specify the correct one." + ) + + # Search for app factory functions. + for attr_name in ("create_app", "make_app"): + app_factory = getattr(module, attr_name, None) + + if inspect.isfunction(app_factory): + try: + app = app_factory() + + if isinstance(app, Flask): + return app + except TypeError as e: + if not _called_with_wrong_args(app_factory): + raise + + raise NoAppException( + f"Detected factory '{attr_name}' in module '{module.__name__}'," + " but could not call it without arguments. Use" + f" '{module.__name__}:{attr_name}(args)'" + " to specify arguments." + ) from e + + raise NoAppException( + "Failed to find Flask application or factory in module" + f" '{module.__name__}'. Use '{module.__name__}:name'" + " to specify one." + ) + + +def _called_with_wrong_args(f: t.Callable[..., Flask]) -> bool: + """Check whether calling a function raised a ``TypeError`` because + the call failed or because something in the factory raised the + error. + + :param f: The function that was called. + :return: ``True`` if the call failed. + """ + tb = sys.exc_info()[2] + + try: + while tb is not None: + if tb.tb_frame.f_code is f.__code__: + # In the function, it was called successfully. + return False + + tb = tb.tb_next + + # Didn't reach the function. + return True + finally: + # Delete tb to break a circular reference. + # https://docs.python.org/2/library/sys.html#sys.exc_info + del tb + + +def find_app_by_string(module: ModuleType, app_name: str) -> Flask: + """Check if the given string is a variable name or a function. Call + a function to get the app instance, or return the variable directly. + """ + from . import Flask + + # Parse app_name as a single expression to determine if it's a valid + # attribute name or function call. + try: + expr = ast.parse(app_name.strip(), mode="eval").body + except SyntaxError: + raise NoAppException( + f"Failed to parse {app_name!r} as an attribute name or function call." + ) from None + + if isinstance(expr, ast.Name): + name = expr.id + args = [] + kwargs = {} + elif isinstance(expr, ast.Call): + # Ensure the function name is an attribute name only. + if not isinstance(expr.func, ast.Name): + raise NoAppException( + f"Function reference must be a simple name: {app_name!r}." + ) + + name = expr.func.id + + # Parse the positional and keyword arguments as literals. + try: + args = [ast.literal_eval(arg) for arg in expr.args] + kwargs = { + kw.arg: ast.literal_eval(kw.value) + for kw in expr.keywords + if kw.arg is not None + } + except ValueError: + # literal_eval gives cryptic error messages, show a generic + # message with the full expression instead. + raise NoAppException( + f"Failed to parse arguments as literal values: {app_name!r}." + ) from None + else: + raise NoAppException( + f"Failed to parse {app_name!r} as an attribute name or function call." + ) + + try: + attr = getattr(module, name) + except AttributeError as e: + raise NoAppException( + f"Failed to find attribute {name!r} in {module.__name__!r}." + ) from e + + # If the attribute is a function, call it with any args and kwargs + # to get the real application. + if inspect.isfunction(attr): + try: + app = attr(*args, **kwargs) + except TypeError as e: + if not _called_with_wrong_args(attr): + raise + + raise NoAppException( + f"The factory {app_name!r} in module" + f" {module.__name__!r} could not be called with the" + " specified arguments." + ) from e + else: + app = attr + + if isinstance(app, Flask): + return app + + raise NoAppException( + "A valid Flask application was not obtained from" + f" '{module.__name__}:{app_name}'." + ) + + +def prepare_import(path: str) -> str: + """Given a filename this will try to calculate the python path, add it + to the search path and return the actual module name that is expected. + """ + path = os.path.realpath(path) + + fname, ext = os.path.splitext(path) + if ext == ".py": + path = fname + + if os.path.basename(path) == "__init__": + path = os.path.dirname(path) + + module_name = [] + + # move up until outside package structure (no __init__.py) + while True: + path, name = os.path.split(path) + module_name.append(name) + + if not os.path.exists(os.path.join(path, "__init__.py")): + break + + if sys.path[0] != path: + sys.path.insert(0, path) + + return ".".join(module_name[::-1]) + + +@t.overload +def locate_app( + module_name: str, app_name: str | None, raise_if_not_found: t.Literal[True] = True +) -> Flask: ... + + +@t.overload +def locate_app( + module_name: str, app_name: str | None, raise_if_not_found: t.Literal[False] = ... +) -> Flask | None: ... + + +def locate_app( + module_name: str, app_name: str | None, raise_if_not_found: bool = True +) -> Flask | None: + try: + __import__(module_name) + except ImportError: + # Reraise the ImportError if it occurred within the imported module. + # Determine this by checking whether the trace has a depth > 1. + if sys.exc_info()[2].tb_next: # type: ignore[union-attr] + raise NoAppException( + f"While importing {module_name!r}, an ImportError was" + f" raised:\n\n{traceback.format_exc()}" + ) from None + elif raise_if_not_found: + raise NoAppException(f"Could not import {module_name!r}.") from None + else: + return None + + module = sys.modules[module_name] + + if app_name is None: + return find_best_app(module) + else: + return find_app_by_string(module, app_name) + + +def get_version(ctx: click.Context, param: click.Parameter, value: t.Any) -> None: + if not value or ctx.resilient_parsing: + return + + flask_version = importlib.metadata.version("flask") + werkzeug_version = importlib.metadata.version("werkzeug") + + click.echo( + f"Python {platform.python_version()}\n" + f"Flask {flask_version}\n" + f"Werkzeug {werkzeug_version}", + color=ctx.color, + ) + ctx.exit() + + +version_option = click.Option( + ["--version"], + help="Show the Flask version.", + expose_value=False, + callback=get_version, + is_flag=True, + is_eager=True, +) + + +class ScriptInfo: + """Helper object to deal with Flask applications. This is usually not + necessary to interface with as it's used internally in the dispatching + to click. In future versions of Flask this object will most likely play + a bigger role. Typically it's created automatically by the + :class:`FlaskGroup` but you can also manually create it and pass it + onwards as click object. + """ + + def __init__( + self, + app_import_path: str | None = None, + create_app: t.Callable[..., Flask] | None = None, + set_debug_flag: bool = True, + ) -> None: + #: Optionally the import path for the Flask application. + self.app_import_path = app_import_path + #: Optionally a function that is passed the script info to create + #: the instance of the application. + self.create_app = create_app + #: A dictionary with arbitrary data that can be associated with + #: this script info. + self.data: dict[t.Any, t.Any] = {} + self.set_debug_flag = set_debug_flag + self._loaded_app: Flask | None = None + + def load_app(self) -> Flask: + """Loads the Flask app (if not yet loaded) and returns it. Calling + this multiple times will just result in the already loaded app to + be returned. + """ + if self._loaded_app is not None: + return self._loaded_app + + if self.create_app is not None: + app: Flask | None = self.create_app() + else: + if self.app_import_path: + path, name = ( + re.split(r":(?![\\/])", self.app_import_path, maxsplit=1) + [None] + )[:2] + import_name = prepare_import(path) + app = locate_app(import_name, name) + else: + for path in ("wsgi.py", "app.py"): + import_name = prepare_import(path) + app = locate_app(import_name, None, raise_if_not_found=False) + + if app is not None: + break + + if app is None: + raise NoAppException( + "Could not locate a Flask application. Use the" + " 'flask --app' option, 'FLASK_APP' environment" + " variable, or a 'wsgi.py' or 'app.py' file in the" + " current directory." + ) + + if self.set_debug_flag: + # Update the app's debug flag through the descriptor so that + # other values repopulate as well. + app.debug = get_debug_flag() + + self._loaded_app = app + return app + + +pass_script_info = click.make_pass_decorator(ScriptInfo, ensure=True) + +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) + + +def with_appcontext(f: F) -> F: + """Wraps a callback so that it's guaranteed to be executed with the + script's application context. + + Custom commands (and their options) registered under ``app.cli`` or + ``blueprint.cli`` will always have an app context available, this + decorator is not required in that case. + + .. versionchanged:: 2.2 + The app context is active for subcommands as well as the + decorated callback. The app context is always available to + ``app.cli`` command and parameter callbacks. + """ + + @click.pass_context + def decorator(ctx: click.Context, /, *args: t.Any, **kwargs: t.Any) -> t.Any: + if not current_app: + app = ctx.ensure_object(ScriptInfo).load_app() + ctx.with_resource(app.app_context()) + + return ctx.invoke(f, *args, **kwargs) + + return update_wrapper(decorator, f) # type: ignore[return-value] + + +class AppGroup(click.Group): + """This works similar to a regular click :class:`~click.Group` but it + changes the behavior of the :meth:`command` decorator so that it + automatically wraps the functions in :func:`with_appcontext`. + + Not to be confused with :class:`FlaskGroup`. + """ + + def command( # type: ignore[override] + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], click.Command]: + """This works exactly like the method of the same name on a regular + :class:`click.Group` but it wraps callbacks in :func:`with_appcontext` + unless it's disabled by passing ``with_appcontext=False``. + """ + wrap_for_ctx = kwargs.pop("with_appcontext", True) + + def decorator(f: t.Callable[..., t.Any]) -> click.Command: + if wrap_for_ctx: + f = with_appcontext(f) + return super(AppGroup, self).command(*args, **kwargs)(f) # type: ignore[no-any-return] + + return decorator + + def group( # type: ignore[override] + self, *args: t.Any, **kwargs: t.Any + ) -> t.Callable[[t.Callable[..., t.Any]], click.Group]: + """This works exactly like the method of the same name on a regular + :class:`click.Group` but it defaults the group class to + :class:`AppGroup`. + """ + kwargs.setdefault("cls", AppGroup) + return super().group(*args, **kwargs) # type: ignore[no-any-return] + + +def _set_app(ctx: click.Context, param: click.Option, value: str | None) -> str | None: + if value is None: + return None + + info = ctx.ensure_object(ScriptInfo) + info.app_import_path = value + return value + + +# This option is eager so the app will be available if --help is given. +# --help is also eager, so --app must be before it in the param list. +# no_args_is_help bypasses eager processing, so this option must be +# processed manually in that case to ensure FLASK_APP gets picked up. +_app_option = click.Option( + ["-A", "--app"], + metavar="IMPORT", + help=( + "The Flask application or factory function to load, in the form 'module:name'." + " Module can be a dotted import or file path. Name is not required if it is" + " 'app', 'application', 'create_app', or 'make_app', and can be 'name(args)' to" + " pass arguments." + ), + is_eager=True, + expose_value=False, + callback=_set_app, +) + + +def _set_debug(ctx: click.Context, param: click.Option, value: bool) -> bool | None: + # If the flag isn't provided, it will default to False. Don't use + # that, let debug be set by env in that case. + source = ctx.get_parameter_source(param.name) # type: ignore[arg-type] + + if source is not None and source in ( + ParameterSource.DEFAULT, + ParameterSource.DEFAULT_MAP, + ): + return None + + # Set with env var instead of ScriptInfo.load so that it can be + # accessed early during a factory function. + os.environ["FLASK_DEBUG"] = "1" if value else "0" + return value + + +_debug_option = click.Option( + ["--debug/--no-debug"], + help="Set debug mode.", + expose_value=False, + callback=_set_debug, +) + + +def _env_file_callback( + ctx: click.Context, param: click.Option, value: str | None +) -> str | None: + if value is None: + return None + + import importlib + + try: + importlib.import_module("dotenv") + except ImportError: + raise click.BadParameter( + "python-dotenv must be installed to load an env file.", + ctx=ctx, + param=param, + ) from None + + # Don't check FLASK_SKIP_DOTENV, that only disables automatically + # loading .env and .flaskenv files. + load_dotenv(value) + return value + + +# This option is eager so env vars are loaded as early as possible to be +# used by other options. +_env_file_option = click.Option( + ["-e", "--env-file"], + type=click.Path(exists=True, dir_okay=False), + help="Load environment variables from this file. python-dotenv must be installed.", + is_eager=True, + expose_value=False, + callback=_env_file_callback, +) + + +class FlaskGroup(AppGroup): + """Special subclass of the :class:`AppGroup` group that supports + loading more commands from the configured Flask app. Normally a + developer does not have to interface with this class but there are + some very advanced use cases for which it makes sense to create an + instance of this. see :ref:`custom-scripts`. + + :param add_default_commands: if this is True then the default run and + shell commands will be added. + :param add_version_option: adds the ``--version`` option. + :param create_app: an optional callback that is passed the script info and + returns the loaded app. + :param load_dotenv: Load the nearest :file:`.env` and :file:`.flaskenv` + files to set environment variables. Will also change the working + directory to the directory containing the first file found. + :param set_debug_flag: Set the app's debug flag. + + .. versionchanged:: 2.2 + Added the ``-A/--app``, ``--debug/--no-debug``, ``-e/--env-file`` options. + + .. versionchanged:: 2.2 + An app context is pushed when running ``app.cli`` commands, so + ``@with_appcontext`` is no longer required for those commands. + + .. versionchanged:: 1.0 + If installed, python-dotenv will be used to load environment variables + from :file:`.env` and :file:`.flaskenv` files. + """ + + def __init__( + self, + add_default_commands: bool = True, + create_app: t.Callable[..., Flask] | None = None, + add_version_option: bool = True, + load_dotenv: bool = True, + set_debug_flag: bool = True, + **extra: t.Any, + ) -> None: + params = list(extra.pop("params", None) or ()) + # Processing is done with option callbacks instead of a group + # callback. This allows users to make a custom group callback + # without losing the behavior. --env-file must come first so + # that it is eagerly evaluated before --app. + params.extend((_env_file_option, _app_option, _debug_option)) + + if add_version_option: + params.append(version_option) + + if "context_settings" not in extra: + extra["context_settings"] = {} + + extra["context_settings"].setdefault("auto_envvar_prefix", "FLASK") + + super().__init__(params=params, **extra) + + self.create_app = create_app + self.load_dotenv = load_dotenv + self.set_debug_flag = set_debug_flag + + if add_default_commands: + self.add_command(run_command) + self.add_command(shell_command) + self.add_command(routes_command) + + self._loaded_plugin_commands = False + + def _load_plugin_commands(self) -> None: + if self._loaded_plugin_commands: + return + + if sys.version_info >= (3, 10): + from importlib import metadata + else: + # Use a backport on Python < 3.10. We technically have + # importlib.metadata on 3.8+, but the API changed in 3.10, + # so use the backport for consistency. + import importlib_metadata as metadata + + for ep in metadata.entry_points(group="flask.commands"): + self.add_command(ep.load(), ep.name) + + self._loaded_plugin_commands = True + + def get_command(self, ctx: click.Context, name: str) -> click.Command | None: + self._load_plugin_commands() + # Look up built-in and plugin commands, which should be + # available even if the app fails to load. + rv = super().get_command(ctx, name) + + if rv is not None: + return rv + + info = ctx.ensure_object(ScriptInfo) + + # Look up commands provided by the app, showing an error and + # continuing if the app couldn't be loaded. + try: + app = info.load_app() + except NoAppException as e: + click.secho(f"Error: {e.format_message()}\n", err=True, fg="red") + return None + + # Push an app context for the loaded app unless it is already + # active somehow. This makes the context available to parameter + # and command callbacks without needing @with_appcontext. + if not current_app or current_app._get_current_object() is not app: # type: ignore[attr-defined] + ctx.with_resource(app.app_context()) + + return app.cli.get_command(ctx, name) + + def list_commands(self, ctx: click.Context) -> list[str]: + self._load_plugin_commands() + # Start with the built-in and plugin commands. + rv = set(super().list_commands(ctx)) + info = ctx.ensure_object(ScriptInfo) + + # Add commands provided by the app, showing an error and + # continuing if the app couldn't be loaded. + try: + rv.update(info.load_app().cli.list_commands(ctx)) + except NoAppException as e: + # When an app couldn't be loaded, show the error message + # without the traceback. + click.secho(f"Error: {e.format_message()}\n", err=True, fg="red") + except Exception: + # When any other errors occurred during loading, show the + # full traceback. + click.secho(f"{traceback.format_exc()}\n", err=True, fg="red") + + return sorted(rv) + + def make_context( + self, + info_name: str | None, + args: list[str], + parent: click.Context | None = None, + **extra: t.Any, + ) -> click.Context: + # Set a flag to tell app.run to become a no-op. If app.run was + # not in a __name__ == __main__ guard, it would start the server + # when importing, blocking whatever command is being called. + os.environ["FLASK_RUN_FROM_CLI"] = "true" + + # Attempt to load .env and .flask env files. The --env-file + # option can cause another file to be loaded. + if get_load_dotenv(self.load_dotenv): + load_dotenv() + + if "obj" not in extra and "obj" not in self.context_settings: + extra["obj"] = ScriptInfo( + create_app=self.create_app, set_debug_flag=self.set_debug_flag + ) + + return super().make_context(info_name, args, parent=parent, **extra) + + def parse_args(self, ctx: click.Context, args: list[str]) -> list[str]: + if not args and self.no_args_is_help: + # Attempt to load --env-file and --app early in case they + # were given as env vars. Otherwise no_args_is_help will not + # see commands from app.cli. + _env_file_option.handle_parse_result(ctx, {}, []) + _app_option.handle_parse_result(ctx, {}, []) + + return super().parse_args(ctx, args) + + +def _path_is_ancestor(path: str, other: str) -> bool: + """Take ``other`` and remove the length of ``path`` from it. Then join it + to ``path``. If it is the original value, ``path`` is an ancestor of + ``other``.""" + return os.path.join(path, other[len(path) :].lstrip(os.sep)) == other + + +def load_dotenv(path: str | os.PathLike[str] | None = None) -> bool: + """Load "dotenv" files in order of precedence to set environment variables. + + If an env var is already set it is not overwritten, so earlier files in the + list are preferred over later files. + + This is a no-op if `python-dotenv`_ is not installed. + + .. _python-dotenv: https://github.com/theskumar/python-dotenv#readme + + :param path: Load the file at this location instead of searching. + :return: ``True`` if a file was loaded. + + .. versionchanged:: 2.0 + The current directory is not changed to the location of the + loaded file. + + .. versionchanged:: 2.0 + When loading the env files, set the default encoding to UTF-8. + + .. versionchanged:: 1.1.0 + Returns ``False`` when python-dotenv is not installed, or when + the given path isn't a file. + + .. versionadded:: 1.0 + """ + try: + import dotenv + except ImportError: + if path or os.path.isfile(".env") or os.path.isfile(".flaskenv"): + click.secho( + " * Tip: There are .env or .flaskenv files present." + ' Do "pip install python-dotenv" to use them.', + fg="yellow", + err=True, + ) + + return False + + # Always return after attempting to load a given path, don't load + # the default files. + if path is not None: + if os.path.isfile(path): + return dotenv.load_dotenv(path, encoding="utf-8") + + return False + + loaded = False + + for name in (".env", ".flaskenv"): + path = dotenv.find_dotenv(name, usecwd=True) + + if not path: + continue + + dotenv.load_dotenv(path, encoding="utf-8") + loaded = True + + return loaded # True if at least one file was located and loaded. + + +def show_server_banner(debug: bool, app_import_path: str | None) -> None: + """Show extra startup messages the first time the server is run, + ignoring the reloader. + """ + if is_running_from_reloader(): + return + + if app_import_path is not None: + click.echo(f" * Serving Flask app '{app_import_path}'") + + if debug is not None: + click.echo(f" * Debug mode: {'on' if debug else 'off'}") + + +class CertParamType(click.ParamType): + """Click option type for the ``--cert`` option. Allows either an + existing file, the string ``'adhoc'``, or an import for a + :class:`~ssl.SSLContext` object. + """ + + name = "path" + + def __init__(self) -> None: + self.path_type = click.Path(exists=True, dir_okay=False, resolve_path=True) + + def convert( + self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + ) -> t.Any: + try: + import ssl + except ImportError: + raise click.BadParameter( + 'Using "--cert" requires Python to be compiled with SSL support.', + ctx, + param, + ) from None + + try: + return self.path_type(value, param, ctx) + except click.BadParameter: + value = click.STRING(value, param, ctx).lower() + + if value == "adhoc": + try: + import cryptography # noqa: F401 + except ImportError: + raise click.BadParameter( + "Using ad-hoc certificates requires the cryptography library.", + ctx, + param, + ) from None + + return value + + obj = import_string(value, silent=True) + + if isinstance(obj, ssl.SSLContext): + return obj + + raise + + +def _validate_key(ctx: click.Context, param: click.Parameter, value: t.Any) -> t.Any: + """The ``--key`` option must be specified when ``--cert`` is a file. + Modifies the ``cert`` param to be a ``(cert, key)`` pair if needed. + """ + cert = ctx.params.get("cert") + is_adhoc = cert == "adhoc" + + try: + import ssl + except ImportError: + is_context = False + else: + is_context = isinstance(cert, ssl.SSLContext) + + if value is not None: + if is_adhoc: + raise click.BadParameter( + 'When "--cert" is "adhoc", "--key" is not used.', ctx, param + ) + + if is_context: + raise click.BadParameter( + 'When "--cert" is an SSLContext object, "--key" is not used.', + ctx, + param, + ) + + if not cert: + raise click.BadParameter('"--cert" must also be specified.', ctx, param) + + ctx.params["cert"] = cert, value + + else: + if cert and not (is_adhoc or is_context): + raise click.BadParameter('Required when using "--cert".', ctx, param) + + return value + + +class SeparatedPathType(click.Path): + """Click option type that accepts a list of values separated by the + OS's path separator (``:``, ``;`` on Windows). Each value is + validated as a :class:`click.Path` type. + """ + + def convert( + self, value: t.Any, param: click.Parameter | None, ctx: click.Context | None + ) -> t.Any: + items = self.split_envvar_value(value) + # can't call no-arg super() inside list comprehension until Python 3.12 + super_convert = super().convert + return [super_convert(item, param, ctx) for item in items] + + +@click.command("run", short_help="Run a development server.") +@click.option("--host", "-h", default="127.0.0.1", help="The interface to bind to.") +@click.option("--port", "-p", default=5000, help="The port to bind to.") +@click.option( + "--cert", + type=CertParamType(), + help="Specify a certificate file to use HTTPS.", + is_eager=True, +) +@click.option( + "--key", + type=click.Path(exists=True, dir_okay=False, resolve_path=True), + callback=_validate_key, + expose_value=False, + help="The key file to use when specifying a certificate.", +) +@click.option( + "--reload/--no-reload", + default=None, + help="Enable or disable the reloader. By default the reloader " + "is active if debug is enabled.", +) +@click.option( + "--debugger/--no-debugger", + default=None, + help="Enable or disable the debugger. By default the debugger " + "is active if debug is enabled.", +) +@click.option( + "--with-threads/--without-threads", + default=True, + help="Enable or disable multithreading.", +) +@click.option( + "--extra-files", + default=None, + type=SeparatedPathType(), + help=( + "Extra files that trigger a reload on change. Multiple paths" + f" are separated by {os.path.pathsep!r}." + ), +) +@click.option( + "--exclude-patterns", + default=None, + type=SeparatedPathType(), + help=( + "Files matching these fnmatch patterns will not trigger a reload" + " on change. Multiple patterns are separated by" + f" {os.path.pathsep!r}." + ), +) +@pass_script_info +def run_command( + info: ScriptInfo, + host: str, + port: int, + reload: bool, + debugger: bool, + with_threads: bool, + cert: ssl.SSLContext | tuple[str, str | None] | t.Literal["adhoc"] | None, + extra_files: list[str] | None, + exclude_patterns: list[str] | None, +) -> None: + """Run a local development server. + + This server is for development purposes only. It does not provide + the stability, security, or performance of production WSGI servers. + + The reloader and debugger are enabled by default with the '--debug' + option. + """ + try: + app: WSGIApplication = info.load_app() + except Exception as e: + if is_running_from_reloader(): + # When reloading, print out the error immediately, but raise + # it later so the debugger or server can handle it. + traceback.print_exc() + err = e + + def app( + environ: WSGIEnvironment, start_response: StartResponse + ) -> cabc.Iterable[bytes]: + raise err from None + + else: + # When not reloading, raise the error immediately so the + # command fails. + raise e from None + + debug = get_debug_flag() + + if reload is None: + reload = debug + + if debugger is None: + debugger = debug + + show_server_banner(debug, info.app_import_path) + + run_simple( + host, + port, + app, + use_reloader=reload, + use_debugger=debugger, + threaded=with_threads, + ssl_context=cert, + extra_files=extra_files, + exclude_patterns=exclude_patterns, + ) + + +run_command.params.insert(0, _debug_option) + + +@click.command("shell", short_help="Run a shell in the app context.") +@with_appcontext +def shell_command() -> None: + """Run an interactive Python shell in the context of a given + Flask application. The application will populate the default + namespace of this shell according to its configuration. + + This is useful for executing small snippets of management code + without having to manually configure the application. + """ + import code + + banner = ( + f"Python {sys.version} on {sys.platform}\n" + f"App: {current_app.import_name}\n" + f"Instance: {current_app.instance_path}" + ) + ctx: dict[str, t.Any] = {} + + # Support the regular Python interpreter startup script if someone + # is using it. + startup = os.environ.get("PYTHONSTARTUP") + if startup and os.path.isfile(startup): + with open(startup) as f: + eval(compile(f.read(), startup, "exec"), ctx) + + ctx.update(current_app.make_shell_context()) + + # Site, customize, or startup script can set a hook to call when + # entering interactive mode. The default one sets up readline with + # tab and history completion. + interactive_hook = getattr(sys, "__interactivehook__", None) + + if interactive_hook is not None: + try: + import readline + from rlcompleter import Completer + except ImportError: + pass + else: + # rlcompleter uses __main__.__dict__ by default, which is + # flask.__main__. Use the shell context instead. + readline.set_completer(Completer(ctx).complete) + + interactive_hook() + + code.interact(banner=banner, local=ctx) + + +@click.command("routes", short_help="Show the routes for the app.") +@click.option( + "--sort", + "-s", + type=click.Choice(("endpoint", "methods", "domain", "rule", "match")), + default="endpoint", + help=( + "Method to sort routes by. 'match' is the order that Flask will match routes" + " when dispatching a request." + ), +) +@click.option("--all-methods", is_flag=True, help="Show HEAD and OPTIONS methods.") +@with_appcontext +def routes_command(sort: str, all_methods: bool) -> None: + """Show all registered routes with endpoints and methods.""" + rules = list(current_app.url_map.iter_rules()) + + if not rules: + click.echo("No routes were registered.") + return + + ignored_methods = set() if all_methods else {"HEAD", "OPTIONS"} + host_matching = current_app.url_map.host_matching + has_domain = any(rule.host if host_matching else rule.subdomain for rule in rules) + rows = [] + + for rule in rules: + row = [ + rule.endpoint, + ", ".join(sorted((rule.methods or set()) - ignored_methods)), + ] + + if has_domain: + row.append((rule.host if host_matching else rule.subdomain) or "") + + row.append(rule.rule) + rows.append(row) + + headers = ["Endpoint", "Methods"] + sorts = ["endpoint", "methods"] + + if has_domain: + headers.append("Host" if host_matching else "Subdomain") + sorts.append("domain") + + headers.append("Rule") + sorts.append("rule") + + try: + rows.sort(key=itemgetter(sorts.index(sort))) + except ValueError: + pass + + rows.insert(0, headers) + widths = [max(len(row[i]) for row in rows) for i in range(len(headers))] + rows.insert(1, ["-" * w for w in widths]) + template = " ".join(f"{{{i}:<{w}}}" for i, w in enumerate(widths)) + + for row in rows: + click.echo(template.format(*row)) + + +cli = FlaskGroup( + name="flask", + help="""\ +A general utility script for Flask applications. + +An application to load must be given with the '--app' option, +'FLASK_APP' environment variable, or with a 'wsgi.py' or 'app.py' file +in the current directory. +""", +) + + +def main() -> None: + cli.main() + + +if __name__ == "__main__": + main() diff --git a/venv/lib/python3.12/site-packages/flask/config.py b/venv/lib/python3.12/site-packages/flask/config.py new file mode 100644 index 0000000..7e3ba17 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/config.py @@ -0,0 +1,370 @@ +from __future__ import annotations + +import errno +import json +import os +import types +import typing as t + +from werkzeug.utils import import_string + +if t.TYPE_CHECKING: + import typing_extensions as te + + from .sansio.app import App + + +T = t.TypeVar("T") + + +class ConfigAttribute(t.Generic[T]): + """Makes an attribute forward to the config""" + + def __init__( + self, name: str, get_converter: t.Callable[[t.Any], T] | None = None + ) -> None: + self.__name__ = name + self.get_converter = get_converter + + @t.overload + def __get__(self, obj: None, owner: None) -> te.Self: ... + + @t.overload + def __get__(self, obj: App, owner: type[App]) -> T: ... + + def __get__(self, obj: App | None, owner: type[App] | None = None) -> T | te.Self: + if obj is None: + return self + + rv = obj.config[self.__name__] + + if self.get_converter is not None: + rv = self.get_converter(rv) + + return rv # type: ignore[no-any-return] + + def __set__(self, obj: App, value: t.Any) -> None: + obj.config[self.__name__] = value + + +class Config(dict): # type: ignore[type-arg] + """Works exactly like a dict but provides ways to fill it from files + or special dictionaries. There are two common patterns to populate the + config. + + Either you can fill the config from a config file:: + + app.config.from_pyfile('yourconfig.cfg') + + Or alternatively you can define the configuration options in the + module that calls :meth:`from_object` or provide an import path to + a module that should be loaded. It is also possible to tell it to + use the same module and with that provide the configuration values + just before the call:: + + DEBUG = True + SECRET_KEY = 'development key' + app.config.from_object(__name__) + + In both cases (loading from any Python file or loading from modules), + only uppercase keys are added to the config. This makes it possible to use + lowercase values in the config file for temporary values that are not added + to the config or to define the config keys in the same file that implements + the application. + + Probably the most interesting way to load configurations is from an + environment variable pointing to a file:: + + app.config.from_envvar('YOURAPPLICATION_SETTINGS') + + In this case before launching the application you have to set this + environment variable to the file you want to use. On Linux and OS X + use the export statement:: + + export YOURAPPLICATION_SETTINGS='/path/to/config/file' + + On windows use `set` instead. + + :param root_path: path to which files are read relative from. When the + config object is created by the application, this is + the application's :attr:`~flask.Flask.root_path`. + :param defaults: an optional dictionary of default values + """ + + def __init__( + self, + root_path: str | os.PathLike[str], + defaults: dict[str, t.Any] | None = None, + ) -> None: + super().__init__(defaults or {}) + self.root_path = root_path + + def from_envvar(self, variable_name: str, silent: bool = False) -> bool: + """Loads a configuration from an environment variable pointing to + a configuration file. This is basically just a shortcut with nicer + error messages for this line of code:: + + app.config.from_pyfile(os.environ['YOURAPPLICATION_SETTINGS']) + + :param variable_name: name of the environment variable + :param silent: set to ``True`` if you want silent failure for missing + files. + :return: ``True`` if the file was loaded successfully. + """ + rv = os.environ.get(variable_name) + if not rv: + if silent: + return False + raise RuntimeError( + f"The environment variable {variable_name!r} is not set" + " and as such configuration could not be loaded. Set" + " this variable and make it point to a configuration" + " file" + ) + return self.from_pyfile(rv, silent=silent) + + def from_prefixed_env( + self, prefix: str = "FLASK", *, loads: t.Callable[[str], t.Any] = json.loads + ) -> bool: + """Load any environment variables that start with ``FLASK_``, + dropping the prefix from the env key for the config key. Values + are passed through a loading function to attempt to convert them + to more specific types than strings. + + Keys are loaded in :func:`sorted` order. + + The default loading function attempts to parse values as any + valid JSON type, including dicts and lists. + + Specific items in nested dicts can be set by separating the + keys with double underscores (``__``). If an intermediate key + doesn't exist, it will be initialized to an empty dict. + + :param prefix: Load env vars that start with this prefix, + separated with an underscore (``_``). + :param loads: Pass each string value to this function and use + the returned value as the config value. If any error is + raised it is ignored and the value remains a string. The + default is :func:`json.loads`. + + .. versionadded:: 2.1 + """ + prefix = f"{prefix}_" + len_prefix = len(prefix) + + for key in sorted(os.environ): + if not key.startswith(prefix): + continue + + value = os.environ[key] + + try: + value = loads(value) + except Exception: + # Keep the value as a string if loading failed. + pass + + # Change to key.removeprefix(prefix) on Python >= 3.9. + key = key[len_prefix:] + + if "__" not in key: + # A non-nested key, set directly. + self[key] = value + continue + + # Traverse nested dictionaries with keys separated by "__". + current = self + *parts, tail = key.split("__") + + for part in parts: + # If an intermediate dict does not exist, create it. + if part not in current: + current[part] = {} + + current = current[part] + + current[tail] = value + + return True + + def from_pyfile( + self, filename: str | os.PathLike[str], silent: bool = False + ) -> bool: + """Updates the values in the config from a Python file. This function + behaves as if the file was imported as module with the + :meth:`from_object` function. + + :param filename: the filename of the config. This can either be an + absolute filename or a filename relative to the + root path. + :param silent: set to ``True`` if you want silent failure for missing + files. + :return: ``True`` if the file was loaded successfully. + + .. versionadded:: 0.7 + `silent` parameter. + """ + filename = os.path.join(self.root_path, filename) + d = types.ModuleType("config") + d.__file__ = filename + try: + with open(filename, mode="rb") as config_file: + exec(compile(config_file.read(), filename, "exec"), d.__dict__) + except OSError as e: + if silent and e.errno in (errno.ENOENT, errno.EISDIR, errno.ENOTDIR): + return False + e.strerror = f"Unable to load configuration file ({e.strerror})" + raise + self.from_object(d) + return True + + def from_object(self, obj: object | str) -> None: + """Updates the values from the given object. An object can be of one + of the following two types: + + - a string: in this case the object with that name will be imported + - an actual object reference: that object is used directly + + Objects are usually either modules or classes. :meth:`from_object` + loads only the uppercase attributes of the module/class. A ``dict`` + object will not work with :meth:`from_object` because the keys of a + ``dict`` are not attributes of the ``dict`` class. + + Example of module-based configuration:: + + app.config.from_object('yourapplication.default_config') + from yourapplication import default_config + app.config.from_object(default_config) + + Nothing is done to the object before loading. If the object is a + class and has ``@property`` attributes, it needs to be + instantiated before being passed to this method. + + You should not use this function to load the actual configuration but + rather configuration defaults. The actual config should be loaded + with :meth:`from_pyfile` and ideally from a location not within the + package because the package might be installed system wide. + + See :ref:`config-dev-prod` for an example of class-based configuration + using :meth:`from_object`. + + :param obj: an import name or object + """ + if isinstance(obj, str): + obj = import_string(obj) + for key in dir(obj): + if key.isupper(): + self[key] = getattr(obj, key) + + def from_file( + self, + filename: str | os.PathLike[str], + load: t.Callable[[t.IO[t.Any]], t.Mapping[str, t.Any]], + silent: bool = False, + text: bool = True, + ) -> bool: + """Update the values in the config from a file that is loaded + using the ``load`` parameter. The loaded data is passed to the + :meth:`from_mapping` method. + + .. code-block:: python + + import json + app.config.from_file("config.json", load=json.load) + + import tomllib + app.config.from_file("config.toml", load=tomllib.load, text=False) + + :param filename: The path to the data file. This can be an + absolute path or relative to the config root path. + :param load: A callable that takes a file handle and returns a + mapping of loaded data from the file. + :type load: ``Callable[[Reader], Mapping]`` where ``Reader`` + implements a ``read`` method. + :param silent: Ignore the file if it doesn't exist. + :param text: Open the file in text or binary mode. + :return: ``True`` if the file was loaded successfully. + + .. versionchanged:: 2.3 + The ``text`` parameter was added. + + .. versionadded:: 2.0 + """ + filename = os.path.join(self.root_path, filename) + + try: + with open(filename, "r" if text else "rb") as f: + obj = load(f) + except OSError as e: + if silent and e.errno in (errno.ENOENT, errno.EISDIR): + return False + + e.strerror = f"Unable to load configuration file ({e.strerror})" + raise + + return self.from_mapping(obj) + + def from_mapping( + self, mapping: t.Mapping[str, t.Any] | None = None, **kwargs: t.Any + ) -> bool: + """Updates the config like :meth:`update` ignoring items with + non-upper keys. + + :return: Always returns ``True``. + + .. versionadded:: 0.11 + """ + mappings: dict[str, t.Any] = {} + if mapping is not None: + mappings.update(mapping) + mappings.update(kwargs) + for key, value in mappings.items(): + if key.isupper(): + self[key] = value + return True + + def get_namespace( + self, namespace: str, lowercase: bool = True, trim_namespace: bool = True + ) -> dict[str, t.Any]: + """Returns a dictionary containing a subset of configuration options + that match the specified namespace/prefix. Example usage:: + + app.config['IMAGE_STORE_TYPE'] = 'fs' + app.config['IMAGE_STORE_PATH'] = '/var/app/images' + app.config['IMAGE_STORE_BASE_URL'] = 'http://img.website.com' + image_store_config = app.config.get_namespace('IMAGE_STORE_') + + The resulting dictionary `image_store_config` would look like:: + + { + 'type': 'fs', + 'path': '/var/app/images', + 'base_url': 'http://img.website.com' + } + + This is often useful when configuration options map directly to + keyword arguments in functions or class constructors. + + :param namespace: a configuration namespace + :param lowercase: a flag indicating if the keys of the resulting + dictionary should be lowercase + :param trim_namespace: a flag indicating if the keys of the resulting + dictionary should not include the namespace + + .. versionadded:: 0.11 + """ + rv = {} + for k, v in self.items(): + if not k.startswith(namespace): + continue + if trim_namespace: + key = k[len(namespace) :] + else: + key = k + if lowercase: + key = key.lower() + rv[key] = v + return rv + + def __repr__(self) -> str: + return f"<{type(self).__name__} {dict.__repr__(self)}>" diff --git a/venv/lib/python3.12/site-packages/flask/ctx.py b/venv/lib/python3.12/site-packages/flask/ctx.py new file mode 100644 index 0000000..9b164d3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/ctx.py @@ -0,0 +1,449 @@ +from __future__ import annotations + +import contextvars +import sys +import typing as t +from functools import update_wrapper +from types import TracebackType + +from werkzeug.exceptions import HTTPException + +from . import typing as ft +from .globals import _cv_app +from .globals import _cv_request +from .signals import appcontext_popped +from .signals import appcontext_pushed + +if t.TYPE_CHECKING: # pragma: no cover + from _typeshed.wsgi import WSGIEnvironment + + from .app import Flask + from .sessions import SessionMixin + from .wrappers import Request + + +# a singleton sentinel value for parameter defaults +_sentinel = object() + + +class _AppCtxGlobals: + """A plain object. Used as a namespace for storing data during an + application context. + + Creating an app context automatically creates this object, which is + made available as the :data:`g` proxy. + + .. describe:: 'key' in g + + Check whether an attribute is present. + + .. versionadded:: 0.10 + + .. describe:: iter(g) + + Return an iterator over the attribute names. + + .. versionadded:: 0.10 + """ + + # Define attr methods to let mypy know this is a namespace object + # that has arbitrary attributes. + + def __getattr__(self, name: str) -> t.Any: + try: + return self.__dict__[name] + except KeyError: + raise AttributeError(name) from None + + def __setattr__(self, name: str, value: t.Any) -> None: + self.__dict__[name] = value + + def __delattr__(self, name: str) -> None: + try: + del self.__dict__[name] + except KeyError: + raise AttributeError(name) from None + + def get(self, name: str, default: t.Any | None = None) -> t.Any: + """Get an attribute by name, or a default value. Like + :meth:`dict.get`. + + :param name: Name of attribute to get. + :param default: Value to return if the attribute is not present. + + .. versionadded:: 0.10 + """ + return self.__dict__.get(name, default) + + def pop(self, name: str, default: t.Any = _sentinel) -> t.Any: + """Get and remove an attribute by name. Like :meth:`dict.pop`. + + :param name: Name of attribute to pop. + :param default: Value to return if the attribute is not present, + instead of raising a ``KeyError``. + + .. versionadded:: 0.11 + """ + if default is _sentinel: + return self.__dict__.pop(name) + else: + return self.__dict__.pop(name, default) + + def setdefault(self, name: str, default: t.Any = None) -> t.Any: + """Get the value of an attribute if it is present, otherwise + set and return a default value. Like :meth:`dict.setdefault`. + + :param name: Name of attribute to get. + :param default: Value to set and return if the attribute is not + present. + + .. versionadded:: 0.11 + """ + return self.__dict__.setdefault(name, default) + + def __contains__(self, item: str) -> bool: + return item in self.__dict__ + + def __iter__(self) -> t.Iterator[str]: + return iter(self.__dict__) + + def __repr__(self) -> str: + ctx = _cv_app.get(None) + if ctx is not None: + return f"" + return object.__repr__(self) + + +def after_this_request( + f: ft.AfterRequestCallable[t.Any], +) -> ft.AfterRequestCallable[t.Any]: + """Executes a function after this request. This is useful to modify + response objects. The function is passed the response object and has + to return the same or a new one. + + Example:: + + @app.route('/') + def index(): + @after_this_request + def add_header(response): + response.headers['X-Foo'] = 'Parachute' + return response + return 'Hello World!' + + This is more useful if a function other than the view function wants to + modify a response. For instance think of a decorator that wants to add + some headers without converting the return value into a response object. + + .. versionadded:: 0.9 + """ + ctx = _cv_request.get(None) + + if ctx is None: + raise RuntimeError( + "'after_this_request' can only be used when a request" + " context is active, such as in a view function." + ) + + ctx._after_request_functions.append(f) + return f + + +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) + + +def copy_current_request_context(f: F) -> F: + """A helper function that decorates a function to retain the current + request context. This is useful when working with greenlets. The moment + the function is decorated a copy of the request context is created and + then pushed when the function is called. The current session is also + included in the copied request context. + + Example:: + + import gevent + from flask import copy_current_request_context + + @app.route('/') + def index(): + @copy_current_request_context + def do_some_work(): + # do some work here, it can access flask.request or + # flask.session like you would otherwise in the view function. + ... + gevent.spawn(do_some_work) + return 'Regular response' + + .. versionadded:: 0.10 + """ + ctx = _cv_request.get(None) + + if ctx is None: + raise RuntimeError( + "'copy_current_request_context' can only be used when a" + " request context is active, such as in a view function." + ) + + ctx = ctx.copy() + + def wrapper(*args: t.Any, **kwargs: t.Any) -> t.Any: + with ctx: # type: ignore[union-attr] + return ctx.app.ensure_sync(f)(*args, **kwargs) # type: ignore[union-attr] + + return update_wrapper(wrapper, f) # type: ignore[return-value] + + +def has_request_context() -> bool: + """If you have code that wants to test if a request context is there or + not this function can be used. For instance, you may want to take advantage + of request information if the request object is available, but fail + silently if it is unavailable. + + :: + + class User(db.Model): + + def __init__(self, username, remote_addr=None): + self.username = username + if remote_addr is None and has_request_context(): + remote_addr = request.remote_addr + self.remote_addr = remote_addr + + Alternatively you can also just test any of the context bound objects + (such as :class:`request` or :class:`g`) for truthness:: + + class User(db.Model): + + def __init__(self, username, remote_addr=None): + self.username = username + if remote_addr is None and request: + remote_addr = request.remote_addr + self.remote_addr = remote_addr + + .. versionadded:: 0.7 + """ + return _cv_request.get(None) is not None + + +def has_app_context() -> bool: + """Works like :func:`has_request_context` but for the application + context. You can also just do a boolean check on the + :data:`current_app` object instead. + + .. versionadded:: 0.9 + """ + return _cv_app.get(None) is not None + + +class AppContext: + """The app context contains application-specific information. An app + context is created and pushed at the beginning of each request if + one is not already active. An app context is also pushed when + running CLI commands. + """ + + def __init__(self, app: Flask) -> None: + self.app = app + self.url_adapter = app.create_url_adapter(None) + self.g: _AppCtxGlobals = app.app_ctx_globals_class() + self._cv_tokens: list[contextvars.Token[AppContext]] = [] + + def push(self) -> None: + """Binds the app context to the current context.""" + self._cv_tokens.append(_cv_app.set(self)) + appcontext_pushed.send(self.app, _async_wrapper=self.app.ensure_sync) + + def pop(self, exc: BaseException | None = _sentinel) -> None: # type: ignore + """Pops the app context.""" + try: + if len(self._cv_tokens) == 1: + if exc is _sentinel: + exc = sys.exc_info()[1] + self.app.do_teardown_appcontext(exc) + finally: + ctx = _cv_app.get() + _cv_app.reset(self._cv_tokens.pop()) + + if ctx is not self: + raise AssertionError( + f"Popped wrong app context. ({ctx!r} instead of {self!r})" + ) + + appcontext_popped.send(self.app, _async_wrapper=self.app.ensure_sync) + + def __enter__(self) -> AppContext: + self.push() + return self + + def __exit__( + self, + exc_type: type | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> None: + self.pop(exc_value) + + +class RequestContext: + """The request context contains per-request information. The Flask + app creates and pushes it at the beginning of the request, then pops + it at the end of the request. It will create the URL adapter and + request object for the WSGI environment provided. + + Do not attempt to use this class directly, instead use + :meth:`~flask.Flask.test_request_context` and + :meth:`~flask.Flask.request_context` to create this object. + + When the request context is popped, it will evaluate all the + functions registered on the application for teardown execution + (:meth:`~flask.Flask.teardown_request`). + + The request context is automatically popped at the end of the + request. When using the interactive debugger, the context will be + restored so ``request`` is still accessible. Similarly, the test + client can preserve the context after the request ends. However, + teardown functions may already have closed some resources such as + database connections. + """ + + def __init__( + self, + app: Flask, + environ: WSGIEnvironment, + request: Request | None = None, + session: SessionMixin | None = None, + ) -> None: + self.app = app + if request is None: + request = app.request_class(environ) + request.json_module = app.json + self.request: Request = request + self.url_adapter = None + try: + self.url_adapter = app.create_url_adapter(self.request) + except HTTPException as e: + self.request.routing_exception = e + self.flashes: list[tuple[str, str]] | None = None + self.session: SessionMixin | None = session + # Functions that should be executed after the request on the response + # object. These will be called before the regular "after_request" + # functions. + self._after_request_functions: list[ft.AfterRequestCallable[t.Any]] = [] + + self._cv_tokens: list[ + tuple[contextvars.Token[RequestContext], AppContext | None] + ] = [] + + def copy(self) -> RequestContext: + """Creates a copy of this request context with the same request object. + This can be used to move a request context to a different greenlet. + Because the actual request object is the same this cannot be used to + move a request context to a different thread unless access to the + request object is locked. + + .. versionadded:: 0.10 + + .. versionchanged:: 1.1 + The current session object is used instead of reloading the original + data. This prevents `flask.session` pointing to an out-of-date object. + """ + return self.__class__( + self.app, + environ=self.request.environ, + request=self.request, + session=self.session, + ) + + def match_request(self) -> None: + """Can be overridden by a subclass to hook into the matching + of the request. + """ + try: + result = self.url_adapter.match(return_rule=True) # type: ignore + self.request.url_rule, self.request.view_args = result # type: ignore + except HTTPException as e: + self.request.routing_exception = e + + def push(self) -> None: + # Before we push the request context we have to ensure that there + # is an application context. + app_ctx = _cv_app.get(None) + + if app_ctx is None or app_ctx.app is not self.app: + app_ctx = self.app.app_context() + app_ctx.push() + else: + app_ctx = None + + self._cv_tokens.append((_cv_request.set(self), app_ctx)) + + # Open the session at the moment that the request context is available. + # This allows a custom open_session method to use the request context. + # Only open a new session if this is the first time the request was + # pushed, otherwise stream_with_context loses the session. + if self.session is None: + session_interface = self.app.session_interface + self.session = session_interface.open_session(self.app, self.request) + + if self.session is None: + self.session = session_interface.make_null_session(self.app) + + # Match the request URL after loading the session, so that the + # session is available in custom URL converters. + if self.url_adapter is not None: + self.match_request() + + def pop(self, exc: BaseException | None = _sentinel) -> None: # type: ignore + """Pops the request context and unbinds it by doing that. This will + also trigger the execution of functions registered by the + :meth:`~flask.Flask.teardown_request` decorator. + + .. versionchanged:: 0.9 + Added the `exc` argument. + """ + clear_request = len(self._cv_tokens) == 1 + + try: + if clear_request: + if exc is _sentinel: + exc = sys.exc_info()[1] + self.app.do_teardown_request(exc) + + request_close = getattr(self.request, "close", None) + if request_close is not None: + request_close() + finally: + ctx = _cv_request.get() + token, app_ctx = self._cv_tokens.pop() + _cv_request.reset(token) + + # get rid of circular dependencies at the end of the request + # so that we don't require the GC to be active. + if clear_request: + ctx.request.environ["werkzeug.request"] = None + + if app_ctx is not None: + app_ctx.pop(exc) + + if ctx is not self: + raise AssertionError( + f"Popped wrong request context. ({ctx!r} instead of {self!r})" + ) + + def __enter__(self) -> RequestContext: + self.push() + return self + + def __exit__( + self, + exc_type: type | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> None: + self.pop(exc_value) + + def __repr__(self) -> str: + return ( + f"<{type(self).__name__} {self.request.url!r}" + f" [{self.request.method}] of {self.app.name}>" + ) diff --git a/venv/lib/python3.12/site-packages/flask/debughelpers.py b/venv/lib/python3.12/site-packages/flask/debughelpers.py new file mode 100644 index 0000000..2c8c4c4 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/debughelpers.py @@ -0,0 +1,178 @@ +from __future__ import annotations + +import typing as t + +from jinja2.loaders import BaseLoader +from werkzeug.routing import RequestRedirect + +from .blueprints import Blueprint +from .globals import request_ctx +from .sansio.app import App + +if t.TYPE_CHECKING: + from .sansio.scaffold import Scaffold + from .wrappers import Request + + +class UnexpectedUnicodeError(AssertionError, UnicodeError): + """Raised in places where we want some better error reporting for + unexpected unicode or binary data. + """ + + +class DebugFilesKeyError(KeyError, AssertionError): + """Raised from request.files during debugging. The idea is that it can + provide a better error message than just a generic KeyError/BadRequest. + """ + + def __init__(self, request: Request, key: str) -> None: + form_matches = request.form.getlist(key) + buf = [ + f"You tried to access the file {key!r} in the request.files" + " dictionary but it does not exist. The mimetype for the" + f" request is {request.mimetype!r} instead of" + " 'multipart/form-data' which means that no file contents" + " were transmitted. To fix this error you should provide" + ' enctype="multipart/form-data" in your form.' + ] + if form_matches: + names = ", ".join(repr(x) for x in form_matches) + buf.append( + "\n\nThe browser instead transmitted some file names. " + f"This was submitted: {names}" + ) + self.msg = "".join(buf) + + def __str__(self) -> str: + return self.msg + + +class FormDataRoutingRedirect(AssertionError): + """This exception is raised in debug mode if a routing redirect + would cause the browser to drop the method or body. This happens + when method is not GET, HEAD or OPTIONS and the status code is not + 307 or 308. + """ + + def __init__(self, request: Request) -> None: + exc = request.routing_exception + assert isinstance(exc, RequestRedirect) + buf = [ + f"A request was sent to '{request.url}', but routing issued" + f" a redirect to the canonical URL '{exc.new_url}'." + ] + + if f"{request.base_url}/" == exc.new_url.partition("?")[0]: + buf.append( + " The URL was defined with a trailing slash. Flask" + " will redirect to the URL with a trailing slash if it" + " was accessed without one." + ) + + buf.append( + " Send requests to the canonical URL, or use 307 or 308 for" + " routing redirects. Otherwise, browsers will drop form" + " data.\n\n" + "This exception is only raised in debug mode." + ) + super().__init__("".join(buf)) + + +def attach_enctype_error_multidict(request: Request) -> None: + """Patch ``request.files.__getitem__`` to raise a descriptive error + about ``enctype=multipart/form-data``. + + :param request: The request to patch. + :meta private: + """ + oldcls = request.files.__class__ + + class newcls(oldcls): # type: ignore[valid-type, misc] + def __getitem__(self, key: str) -> t.Any: + try: + return super().__getitem__(key) + except KeyError as e: + if key not in request.form: + raise + + raise DebugFilesKeyError(request, key).with_traceback( + e.__traceback__ + ) from None + + newcls.__name__ = oldcls.__name__ + newcls.__module__ = oldcls.__module__ + request.files.__class__ = newcls + + +def _dump_loader_info(loader: BaseLoader) -> t.Iterator[str]: + yield f"class: {type(loader).__module__}.{type(loader).__name__}" + for key, value in sorted(loader.__dict__.items()): + if key.startswith("_"): + continue + if isinstance(value, (tuple, list)): + if not all(isinstance(x, str) for x in value): + continue + yield f"{key}:" + for item in value: + yield f" - {item}" + continue + elif not isinstance(value, (str, int, float, bool)): + continue + yield f"{key}: {value!r}" + + +def explain_template_loading_attempts( + app: App, + template: str, + attempts: list[ + tuple[ + BaseLoader, + Scaffold, + tuple[str, str | None, t.Callable[[], bool] | None] | None, + ] + ], +) -> None: + """This should help developers understand what failed""" + info = [f"Locating template {template!r}:"] + total_found = 0 + blueprint = None + if request_ctx and request_ctx.request.blueprint is not None: + blueprint = request_ctx.request.blueprint + + for idx, (loader, srcobj, triple) in enumerate(attempts): + if isinstance(srcobj, App): + src_info = f"application {srcobj.import_name!r}" + elif isinstance(srcobj, Blueprint): + src_info = f"blueprint {srcobj.name!r} ({srcobj.import_name})" + else: + src_info = repr(srcobj) + + info.append(f"{idx + 1:5}: trying loader of {src_info}") + + for line in _dump_loader_info(loader): + info.append(f" {line}") + + if triple is None: + detail = "no match" + else: + detail = f"found ({triple[1] or ''!r})" + total_found += 1 + info.append(f" -> {detail}") + + seems_fishy = False + if total_found == 0: + info.append("Error: the template could not be found.") + seems_fishy = True + elif total_found > 1: + info.append("Warning: multiple loaders returned a match for the template.") + seems_fishy = True + + if blueprint is not None and seems_fishy: + info.append( + " The template was looked up from an endpoint that belongs" + f" to the blueprint {blueprint!r}." + ) + info.append(" Maybe you did not place a template in the right folder?") + info.append(" See https://flask.palletsprojects.com/blueprints/#templates") + + app.logger.info("\n".join(info)) diff --git a/venv/lib/python3.12/site-packages/flask/globals.py b/venv/lib/python3.12/site-packages/flask/globals.py new file mode 100644 index 0000000..e2c410c --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/globals.py @@ -0,0 +1,51 @@ +from __future__ import annotations + +import typing as t +from contextvars import ContextVar + +from werkzeug.local import LocalProxy + +if t.TYPE_CHECKING: # pragma: no cover + from .app import Flask + from .ctx import _AppCtxGlobals + from .ctx import AppContext + from .ctx import RequestContext + from .sessions import SessionMixin + from .wrappers import Request + + +_no_app_msg = """\ +Working outside of application context. + +This typically means that you attempted to use functionality that needed +the current application. To solve this, set up an application context +with app.app_context(). See the documentation for more information.\ +""" +_cv_app: ContextVar[AppContext] = ContextVar("flask.app_ctx") +app_ctx: AppContext = LocalProxy( # type: ignore[assignment] + _cv_app, unbound_message=_no_app_msg +) +current_app: Flask = LocalProxy( # type: ignore[assignment] + _cv_app, "app", unbound_message=_no_app_msg +) +g: _AppCtxGlobals = LocalProxy( # type: ignore[assignment] + _cv_app, "g", unbound_message=_no_app_msg +) + +_no_req_msg = """\ +Working outside of request context. + +This typically means that you attempted to use functionality that needed +an active HTTP request. Consult the documentation on testing for +information about how to avoid this problem.\ +""" +_cv_request: ContextVar[RequestContext] = ContextVar("flask.request_ctx") +request_ctx: RequestContext = LocalProxy( # type: ignore[assignment] + _cv_request, unbound_message=_no_req_msg +) +request: Request = LocalProxy( # type: ignore[assignment] + _cv_request, "request", unbound_message=_no_req_msg +) +session: SessionMixin = LocalProxy( # type: ignore[assignment] + _cv_request, "session", unbound_message=_no_req_msg +) diff --git a/venv/lib/python3.12/site-packages/flask/helpers.py b/venv/lib/python3.12/site-packages/flask/helpers.py new file mode 100644 index 0000000..359a842 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/helpers.py @@ -0,0 +1,621 @@ +from __future__ import annotations + +import importlib.util +import os +import sys +import typing as t +from datetime import datetime +from functools import lru_cache +from functools import update_wrapper + +import werkzeug.utils +from werkzeug.exceptions import abort as _wz_abort +from werkzeug.utils import redirect as _wz_redirect +from werkzeug.wrappers import Response as BaseResponse + +from .globals import _cv_request +from .globals import current_app +from .globals import request +from .globals import request_ctx +from .globals import session +from .signals import message_flashed + +if t.TYPE_CHECKING: # pragma: no cover + from .wrappers import Response + + +def get_debug_flag() -> bool: + """Get whether debug mode should be enabled for the app, indicated by the + :envvar:`FLASK_DEBUG` environment variable. The default is ``False``. + """ + val = os.environ.get("FLASK_DEBUG") + return bool(val and val.lower() not in {"0", "false", "no"}) + + +def get_load_dotenv(default: bool = True) -> bool: + """Get whether the user has disabled loading default dotenv files by + setting :envvar:`FLASK_SKIP_DOTENV`. The default is ``True``, load + the files. + + :param default: What to return if the env var isn't set. + """ + val = os.environ.get("FLASK_SKIP_DOTENV") + + if not val: + return default + + return val.lower() in ("0", "false", "no") + + +def stream_with_context( + generator_or_function: t.Iterator[t.AnyStr] | t.Callable[..., t.Iterator[t.AnyStr]], +) -> t.Iterator[t.AnyStr]: + """Request contexts disappear when the response is started on the server. + This is done for efficiency reasons and to make it less likely to encounter + memory leaks with badly written WSGI middlewares. The downside is that if + you are using streamed responses, the generator cannot access request bound + information any more. + + This function however can help you keep the context around for longer:: + + from flask import stream_with_context, request, Response + + @app.route('/stream') + def streamed_response(): + @stream_with_context + def generate(): + yield 'Hello ' + yield request.args['name'] + yield '!' + return Response(generate()) + + Alternatively it can also be used around a specific generator:: + + from flask import stream_with_context, request, Response + + @app.route('/stream') + def streamed_response(): + def generate(): + yield 'Hello ' + yield request.args['name'] + yield '!' + return Response(stream_with_context(generate())) + + .. versionadded:: 0.9 + """ + try: + gen = iter(generator_or_function) # type: ignore[arg-type] + except TypeError: + + def decorator(*args: t.Any, **kwargs: t.Any) -> t.Any: + gen = generator_or_function(*args, **kwargs) # type: ignore[operator] + return stream_with_context(gen) + + return update_wrapper(decorator, generator_or_function) # type: ignore[arg-type] + + def generator() -> t.Iterator[t.AnyStr | None]: + ctx = _cv_request.get(None) + if ctx is None: + raise RuntimeError( + "'stream_with_context' can only be used when a request" + " context is active, such as in a view function." + ) + with ctx: + # Dummy sentinel. Has to be inside the context block or we're + # not actually keeping the context around. + yield None + + # The try/finally is here so that if someone passes a WSGI level + # iterator in we're still running the cleanup logic. Generators + # don't need that because they are closed on their destruction + # automatically. + try: + yield from gen + finally: + if hasattr(gen, "close"): + gen.close() + + # The trick is to start the generator. Then the code execution runs until + # the first dummy None is yielded at which point the context was already + # pushed. This item is discarded. Then when the iteration continues the + # real generator is executed. + wrapped_g = generator() + next(wrapped_g) + return wrapped_g # type: ignore[return-value] + + +def make_response(*args: t.Any) -> Response: + """Sometimes it is necessary to set additional headers in a view. Because + views do not have to return response objects but can return a value that + is converted into a response object by Flask itself, it becomes tricky to + add headers to it. This function can be called instead of using a return + and you will get a response object which you can use to attach headers. + + If view looked like this and you want to add a new header:: + + def index(): + return render_template('index.html', foo=42) + + You can now do something like this:: + + def index(): + response = make_response(render_template('index.html', foo=42)) + response.headers['X-Parachutes'] = 'parachutes are cool' + return response + + This function accepts the very same arguments you can return from a + view function. This for example creates a response with a 404 error + code:: + + response = make_response(render_template('not_found.html'), 404) + + The other use case of this function is to force the return value of a + view function into a response which is helpful with view + decorators:: + + response = make_response(view_function()) + response.headers['X-Parachutes'] = 'parachutes are cool' + + Internally this function does the following things: + + - if no arguments are passed, it creates a new response argument + - if one argument is passed, :meth:`flask.Flask.make_response` + is invoked with it. + - if more than one argument is passed, the arguments are passed + to the :meth:`flask.Flask.make_response` function as tuple. + + .. versionadded:: 0.6 + """ + if not args: + return current_app.response_class() + if len(args) == 1: + args = args[0] + return current_app.make_response(args) + + +def url_for( + endpoint: str, + *, + _anchor: str | None = None, + _method: str | None = None, + _scheme: str | None = None, + _external: bool | None = None, + **values: t.Any, +) -> str: + """Generate a URL to the given endpoint with the given values. + + This requires an active request or application context, and calls + :meth:`current_app.url_for() `. See that method + for full documentation. + + :param endpoint: The endpoint name associated with the URL to + generate. If this starts with a ``.``, the current blueprint + name (if any) will be used. + :param _anchor: If given, append this as ``#anchor`` to the URL. + :param _method: If given, generate the URL associated with this + method for the endpoint. + :param _scheme: If given, the URL will have this scheme if it is + external. + :param _external: If given, prefer the URL to be internal (False) or + require it to be external (True). External URLs include the + scheme and domain. When not in an active request, URLs are + external by default. + :param values: Values to use for the variable parts of the URL rule. + Unknown keys are appended as query string arguments, like + ``?a=b&c=d``. + + .. versionchanged:: 2.2 + Calls ``current_app.url_for``, allowing an app to override the + behavior. + + .. versionchanged:: 0.10 + The ``_scheme`` parameter was added. + + .. versionchanged:: 0.9 + The ``_anchor`` and ``_method`` parameters were added. + + .. versionchanged:: 0.9 + Calls ``app.handle_url_build_error`` on build errors. + """ + return current_app.url_for( + endpoint, + _anchor=_anchor, + _method=_method, + _scheme=_scheme, + _external=_external, + **values, + ) + + +def redirect( + location: str, code: int = 302, Response: type[BaseResponse] | None = None +) -> BaseResponse: + """Create a redirect response object. + + If :data:`~flask.current_app` is available, it will use its + :meth:`~flask.Flask.redirect` method, otherwise it will use + :func:`werkzeug.utils.redirect`. + + :param location: The URL to redirect to. + :param code: The status code for the redirect. + :param Response: The response class to use. Not used when + ``current_app`` is active, which uses ``app.response_class``. + + .. versionadded:: 2.2 + Calls ``current_app.redirect`` if available instead of always + using Werkzeug's default ``redirect``. + """ + if current_app: + return current_app.redirect(location, code=code) + + return _wz_redirect(location, code=code, Response=Response) + + +def abort(code: int | BaseResponse, *args: t.Any, **kwargs: t.Any) -> t.NoReturn: + """Raise an :exc:`~werkzeug.exceptions.HTTPException` for the given + status code. + + If :data:`~flask.current_app` is available, it will call its + :attr:`~flask.Flask.aborter` object, otherwise it will use + :func:`werkzeug.exceptions.abort`. + + :param code: The status code for the exception, which must be + registered in ``app.aborter``. + :param args: Passed to the exception. + :param kwargs: Passed to the exception. + + .. versionadded:: 2.2 + Calls ``current_app.aborter`` if available instead of always + using Werkzeug's default ``abort``. + """ + if current_app: + current_app.aborter(code, *args, **kwargs) + + _wz_abort(code, *args, **kwargs) + + +def get_template_attribute(template_name: str, attribute: str) -> t.Any: + """Loads a macro (or variable) a template exports. This can be used to + invoke a macro from within Python code. If you for example have a + template named :file:`_cider.html` with the following contents: + + .. sourcecode:: html+jinja + + {% macro hello(name) %}Hello {{ name }}!{% endmacro %} + + You can access this from Python code like this:: + + hello = get_template_attribute('_cider.html', 'hello') + return hello('World') + + .. versionadded:: 0.2 + + :param template_name: the name of the template + :param attribute: the name of the variable of macro to access + """ + return getattr(current_app.jinja_env.get_template(template_name).module, attribute) + + +def flash(message: str, category: str = "message") -> None: + """Flashes a message to the next request. In order to remove the + flashed message from the session and to display it to the user, + the template has to call :func:`get_flashed_messages`. + + .. versionchanged:: 0.3 + `category` parameter added. + + :param message: the message to be flashed. + :param category: the category for the message. The following values + are recommended: ``'message'`` for any kind of message, + ``'error'`` for errors, ``'info'`` for information + messages and ``'warning'`` for warnings. However any + kind of string can be used as category. + """ + # Original implementation: + # + # session.setdefault('_flashes', []).append((category, message)) + # + # This assumed that changes made to mutable structures in the session are + # always in sync with the session object, which is not true for session + # implementations that use external storage for keeping their keys/values. + flashes = session.get("_flashes", []) + flashes.append((category, message)) + session["_flashes"] = flashes + app = current_app._get_current_object() # type: ignore + message_flashed.send( + app, + _async_wrapper=app.ensure_sync, + message=message, + category=category, + ) + + +def get_flashed_messages( + with_categories: bool = False, category_filter: t.Iterable[str] = () +) -> list[str] | list[tuple[str, str]]: + """Pulls all flashed messages from the session and returns them. + Further calls in the same request to the function will return + the same messages. By default just the messages are returned, + but when `with_categories` is set to ``True``, the return value will + be a list of tuples in the form ``(category, message)`` instead. + + Filter the flashed messages to one or more categories by providing those + categories in `category_filter`. This allows rendering categories in + separate html blocks. The `with_categories` and `category_filter` + arguments are distinct: + + * `with_categories` controls whether categories are returned with message + text (``True`` gives a tuple, where ``False`` gives just the message text). + * `category_filter` filters the messages down to only those matching the + provided categories. + + See :doc:`/patterns/flashing` for examples. + + .. versionchanged:: 0.3 + `with_categories` parameter added. + + .. versionchanged:: 0.9 + `category_filter` parameter added. + + :param with_categories: set to ``True`` to also receive categories. + :param category_filter: filter of categories to limit return values. Only + categories in the list will be returned. + """ + flashes = request_ctx.flashes + if flashes is None: + flashes = session.pop("_flashes") if "_flashes" in session else [] + request_ctx.flashes = flashes + if category_filter: + flashes = list(filter(lambda f: f[0] in category_filter, flashes)) + if not with_categories: + return [x[1] for x in flashes] + return flashes + + +def _prepare_send_file_kwargs(**kwargs: t.Any) -> dict[str, t.Any]: + if kwargs.get("max_age") is None: + kwargs["max_age"] = current_app.get_send_file_max_age + + kwargs.update( + environ=request.environ, + use_x_sendfile=current_app.config["USE_X_SENDFILE"], + response_class=current_app.response_class, + _root_path=current_app.root_path, # type: ignore + ) + return kwargs + + +def send_file( + path_or_file: os.PathLike[t.AnyStr] | str | t.BinaryIO, + mimetype: str | None = None, + as_attachment: bool = False, + download_name: str | None = None, + conditional: bool = True, + etag: bool | str = True, + last_modified: datetime | int | float | None = None, + max_age: None | (int | t.Callable[[str | None], int | None]) = None, +) -> Response: + """Send the contents of a file to the client. + + The first argument can be a file path or a file-like object. Paths + are preferred in most cases because Werkzeug can manage the file and + get extra information from the path. Passing a file-like object + requires that the file is opened in binary mode, and is mostly + useful when building a file in memory with :class:`io.BytesIO`. + + Never pass file paths provided by a user. The path is assumed to be + trusted, so a user could craft a path to access a file you didn't + intend. Use :func:`send_from_directory` to safely serve + user-requested paths from within a directory. + + If the WSGI server sets a ``file_wrapper`` in ``environ``, it is + used, otherwise Werkzeug's built-in wrapper is used. Alternatively, + if the HTTP server supports ``X-Sendfile``, configuring Flask with + ``USE_X_SENDFILE = True`` will tell the server to send the given + path, which is much more efficient than reading it in Python. + + :param path_or_file: The path to the file to send, relative to the + current working directory if a relative path is given. + Alternatively, a file-like object opened in binary mode. Make + sure the file pointer is seeked to the start of the data. + :param mimetype: The MIME type to send for the file. If not + provided, it will try to detect it from the file name. + :param as_attachment: Indicate to a browser that it should offer to + save the file instead of displaying it. + :param download_name: The default name browsers will use when saving + the file. Defaults to the passed file name. + :param conditional: Enable conditional and range responses based on + request headers. Requires passing a file path and ``environ``. + :param etag: Calculate an ETag for the file, which requires passing + a file path. Can also be a string to use instead. + :param last_modified: The last modified time to send for the file, + in seconds. If not provided, it will try to detect it from the + file path. + :param max_age: How long the client should cache the file, in + seconds. If set, ``Cache-Control`` will be ``public``, otherwise + it will be ``no-cache`` to prefer conditional caching. + + .. versionchanged:: 2.0 + ``download_name`` replaces the ``attachment_filename`` + parameter. If ``as_attachment=False``, it is passed with + ``Content-Disposition: inline`` instead. + + .. versionchanged:: 2.0 + ``max_age`` replaces the ``cache_timeout`` parameter. + ``conditional`` is enabled and ``max_age`` is not set by + default. + + .. versionchanged:: 2.0 + ``etag`` replaces the ``add_etags`` parameter. It can be a + string to use instead of generating one. + + .. versionchanged:: 2.0 + Passing a file-like object that inherits from + :class:`~io.TextIOBase` will raise a :exc:`ValueError` rather + than sending an empty file. + + .. versionadded:: 2.0 + Moved the implementation to Werkzeug. This is now a wrapper to + pass some Flask-specific arguments. + + .. versionchanged:: 1.1 + ``filename`` may be a :class:`~os.PathLike` object. + + .. versionchanged:: 1.1 + Passing a :class:`~io.BytesIO` object supports range requests. + + .. versionchanged:: 1.0.3 + Filenames are encoded with ASCII instead of Latin-1 for broader + compatibility with WSGI servers. + + .. versionchanged:: 1.0 + UTF-8 filenames as specified in :rfc:`2231` are supported. + + .. versionchanged:: 0.12 + The filename is no longer automatically inferred from file + objects. If you want to use automatic MIME and etag support, + pass a filename via ``filename_or_fp`` or + ``attachment_filename``. + + .. versionchanged:: 0.12 + ``attachment_filename`` is preferred over ``filename`` for MIME + detection. + + .. versionchanged:: 0.9 + ``cache_timeout`` defaults to + :meth:`Flask.get_send_file_max_age`. + + .. versionchanged:: 0.7 + MIME guessing and etag support for file-like objects was + removed because it was unreliable. Pass a filename if you are + able to, otherwise attach an etag yourself. + + .. versionchanged:: 0.5 + The ``add_etags``, ``cache_timeout`` and ``conditional`` + parameters were added. The default behavior is to add etags. + + .. versionadded:: 0.2 + """ + return werkzeug.utils.send_file( # type: ignore[return-value] + **_prepare_send_file_kwargs( + path_or_file=path_or_file, + environ=request.environ, + mimetype=mimetype, + as_attachment=as_attachment, + download_name=download_name, + conditional=conditional, + etag=etag, + last_modified=last_modified, + max_age=max_age, + ) + ) + + +def send_from_directory( + directory: os.PathLike[str] | str, + path: os.PathLike[str] | str, + **kwargs: t.Any, +) -> Response: + """Send a file from within a directory using :func:`send_file`. + + .. code-block:: python + + @app.route("/uploads/") + def download_file(name): + return send_from_directory( + app.config['UPLOAD_FOLDER'], name, as_attachment=True + ) + + This is a secure way to serve files from a folder, such as static + files or uploads. Uses :func:`~werkzeug.security.safe_join` to + ensure the path coming from the client is not maliciously crafted to + point outside the specified directory. + + If the final path does not point to an existing regular file, + raises a 404 :exc:`~werkzeug.exceptions.NotFound` error. + + :param directory: The directory that ``path`` must be located under, + relative to the current application's root path. + :param path: The path to the file to send, relative to + ``directory``. + :param kwargs: Arguments to pass to :func:`send_file`. + + .. versionchanged:: 2.0 + ``path`` replaces the ``filename`` parameter. + + .. versionadded:: 2.0 + Moved the implementation to Werkzeug. This is now a wrapper to + pass some Flask-specific arguments. + + .. versionadded:: 0.5 + """ + return werkzeug.utils.send_from_directory( # type: ignore[return-value] + directory, path, **_prepare_send_file_kwargs(**kwargs) + ) + + +def get_root_path(import_name: str) -> str: + """Find the root path of a package, or the path that contains a + module. If it cannot be found, returns the current working + directory. + + Not to be confused with the value returned by :func:`find_package`. + + :meta private: + """ + # Module already imported and has a file attribute. Use that first. + mod = sys.modules.get(import_name) + + if mod is not None and hasattr(mod, "__file__") and mod.__file__ is not None: + return os.path.dirname(os.path.abspath(mod.__file__)) + + # Next attempt: check the loader. + try: + spec = importlib.util.find_spec(import_name) + + if spec is None: + raise ValueError + except (ImportError, ValueError): + loader = None + else: + loader = spec.loader + + # Loader does not exist or we're referring to an unloaded main + # module or a main module without path (interactive sessions), go + # with the current working directory. + if loader is None: + return os.getcwd() + + if hasattr(loader, "get_filename"): + filepath = loader.get_filename(import_name) + else: + # Fall back to imports. + __import__(import_name) + mod = sys.modules[import_name] + filepath = getattr(mod, "__file__", None) + + # If we don't have a file path it might be because it is a + # namespace package. In this case pick the root path from the + # first module that is contained in the package. + if filepath is None: + raise RuntimeError( + "No root path can be found for the provided module" + f" {import_name!r}. This can happen because the module" + " came from an import hook that does not provide file" + " name information or because it's a namespace package." + " In this case the root path needs to be explicitly" + " provided." + ) + + # filepath is import_name.py for a module, or __init__.py for a package. + return os.path.dirname(os.path.abspath(filepath)) # type: ignore[no-any-return] + + +@lru_cache(maxsize=None) +def _split_blueprint_path(name: str) -> list[str]: + out: list[str] = [name] + + if "." in name: + out.extend(_split_blueprint_path(name.rpartition(".")[0])) + + return out diff --git a/venv/lib/python3.12/site-packages/flask/json/__init__.py b/venv/lib/python3.12/site-packages/flask/json/__init__.py new file mode 100644 index 0000000..c0941d0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/json/__init__.py @@ -0,0 +1,170 @@ +from __future__ import annotations + +import json as _json +import typing as t + +from ..globals import current_app +from .provider import _default + +if t.TYPE_CHECKING: # pragma: no cover + from ..wrappers import Response + + +def dumps(obj: t.Any, **kwargs: t.Any) -> str: + """Serialize data as JSON. + + If :data:`~flask.current_app` is available, it will use its + :meth:`app.json.dumps() ` + method, otherwise it will use :func:`json.dumps`. + + :param obj: The data to serialize. + :param kwargs: Arguments passed to the ``dumps`` implementation. + + .. versionchanged:: 2.3 + The ``app`` parameter was removed. + + .. versionchanged:: 2.2 + Calls ``current_app.json.dumps``, allowing an app to override + the behavior. + + .. versionchanged:: 2.0.2 + :class:`decimal.Decimal` is supported by converting to a string. + + .. versionchanged:: 2.0 + ``encoding`` will be removed in Flask 2.1. + + .. versionchanged:: 1.0.3 + ``app`` can be passed directly, rather than requiring an app + context for configuration. + """ + if current_app: + return current_app.json.dumps(obj, **kwargs) + + kwargs.setdefault("default", _default) + return _json.dumps(obj, **kwargs) + + +def dump(obj: t.Any, fp: t.IO[str], **kwargs: t.Any) -> None: + """Serialize data as JSON and write to a file. + + If :data:`~flask.current_app` is available, it will use its + :meth:`app.json.dump() ` + method, otherwise it will use :func:`json.dump`. + + :param obj: The data to serialize. + :param fp: A file opened for writing text. Should use the UTF-8 + encoding to be valid JSON. + :param kwargs: Arguments passed to the ``dump`` implementation. + + .. versionchanged:: 2.3 + The ``app`` parameter was removed. + + .. versionchanged:: 2.2 + Calls ``current_app.json.dump``, allowing an app to override + the behavior. + + .. versionchanged:: 2.0 + Writing to a binary file, and the ``encoding`` argument, will be + removed in Flask 2.1. + """ + if current_app: + current_app.json.dump(obj, fp, **kwargs) + else: + kwargs.setdefault("default", _default) + _json.dump(obj, fp, **kwargs) + + +def loads(s: str | bytes, **kwargs: t.Any) -> t.Any: + """Deserialize data as JSON. + + If :data:`~flask.current_app` is available, it will use its + :meth:`app.json.loads() ` + method, otherwise it will use :func:`json.loads`. + + :param s: Text or UTF-8 bytes. + :param kwargs: Arguments passed to the ``loads`` implementation. + + .. versionchanged:: 2.3 + The ``app`` parameter was removed. + + .. versionchanged:: 2.2 + Calls ``current_app.json.loads``, allowing an app to override + the behavior. + + .. versionchanged:: 2.0 + ``encoding`` will be removed in Flask 2.1. The data must be a + string or UTF-8 bytes. + + .. versionchanged:: 1.0.3 + ``app`` can be passed directly, rather than requiring an app + context for configuration. + """ + if current_app: + return current_app.json.loads(s, **kwargs) + + return _json.loads(s, **kwargs) + + +def load(fp: t.IO[t.AnyStr], **kwargs: t.Any) -> t.Any: + """Deserialize data as JSON read from a file. + + If :data:`~flask.current_app` is available, it will use its + :meth:`app.json.load() ` + method, otherwise it will use :func:`json.load`. + + :param fp: A file opened for reading text or UTF-8 bytes. + :param kwargs: Arguments passed to the ``load`` implementation. + + .. versionchanged:: 2.3 + The ``app`` parameter was removed. + + .. versionchanged:: 2.2 + Calls ``current_app.json.load``, allowing an app to override + the behavior. + + .. versionchanged:: 2.2 + The ``app`` parameter will be removed in Flask 2.3. + + .. versionchanged:: 2.0 + ``encoding`` will be removed in Flask 2.1. The file must be text + mode, or binary mode with UTF-8 bytes. + """ + if current_app: + return current_app.json.load(fp, **kwargs) + + return _json.load(fp, **kwargs) + + +def jsonify(*args: t.Any, **kwargs: t.Any) -> Response: + """Serialize the given arguments as JSON, and return a + :class:`~flask.Response` object with the ``application/json`` + mimetype. A dict or list returned from a view will be converted to a + JSON response automatically without needing to call this. + + This requires an active request or application context, and calls + :meth:`app.json.response() `. + + In debug mode, the output is formatted with indentation to make it + easier to read. This may also be controlled by the provider. + + Either positional or keyword arguments can be given, not both. + If no arguments are given, ``None`` is serialized. + + :param args: A single value to serialize, or multiple values to + treat as a list to serialize. + :param kwargs: Treat as a dict to serialize. + + .. versionchanged:: 2.2 + Calls ``current_app.json.response``, allowing an app to override + the behavior. + + .. versionchanged:: 2.0.2 + :class:`decimal.Decimal` is supported by converting to a string. + + .. versionchanged:: 0.11 + Added support for serializing top-level arrays. This was a + security risk in ancient browsers. See :ref:`security-json`. + + .. versionadded:: 0.2 + """ + return current_app.json.response(*args, **kwargs) # type: ignore[return-value] diff --git a/venv/lib/python3.12/site-packages/flask/json/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/json/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..840180a062fff6f8491fe59b034d0a6bb5b015e0 GIT binary patch literal 6684 zcmd5=&u<&Y72c&NX)Ri!?Zk~^*YPBlgR+&EvK+esW7skLBXx^9L8PXwih>++htkT+ zU1oMEmWELTMS#LRG`_`0AB@69f&L@Ch)4hdtPL1Vd+@D*(o0VL-puZj`Vm!jmB0iz zJG(RUX6DU%-+b@=ZG3#p!0+`7rGk9kCHZA^#a#Osl}`=Fa7@o=nDeGd^^BL9 zA5zck{IE0RWWABb==>BU4`|0ze%f7Hu0_RjA`|8d9qI6FV? zOgMY+oN)5a7@m1&pOeFLpR?cDi|77Mrf}d12`QMp9QXYo;*lHp;q@o9Q2JPFNh$oO z%$v<8rv7G?9Z}~kFG9QZz6hHbAZpZ@{Dx7<8HTy`CsaN)qU5_FS(Nr$igl4TqOz17 zeAD$?M%{FcTjqW9kLE0%OQW0nIA&xeU;mQm*od$O{rlf?3mJZO$S`Jwbh+o=6wKif zXFOy-o_+VaJvPShyH;l<`dq5~w(jxphCQI13Ufoom$~clswbwH8?mFz`|t5wqB#|cB9SZLRexKU~P&H2 z_{&AltrnXdxP^b(J~dMe-AJ5lqB~y@VNp3(k!C2C%dYQ6<+9!E$h{D+ig8rJcTjv} z{O7D;z3?!9cr|~ln?JUiKhe#fxL51u-+1r=iWTdP$Jw#f?7?pK;2rn=q0h75f0*0% z$y>MIx)XMDC+^l!tYlBDL6lJ&1h*6p|B9A%aQND@z~L>ko&g|c2oO!9lev}IJxJUr zyD-GfuZ2Zeg~Qqs+SZm`cRdl?;Wq)5J4VW90?KE@$$AqQ$!Oy&XbK-5PcA_^QT`4e zvDxfm(DEF06A;q;Z0_pGH&aha+?zBAcU;Ehor8jW`!j8h%{JW)5n zYt{9+?5HCF`olm;=j&h;=%MbksRU3{LGk6Y0a)oABvHES1r2ACcttNuXeJ3g6pG0S z)Cxl~Pi>icQ|?10gzp$Md_SI&XqzgE)N};}Ajc-iv0hlU4t1?VtJcx3b@XoS-b~k; ze(;^otm((r#H#gj*LwMG;r=f^x9o@3_$Onx$L^fIo9SA>oX@Ni@&F{&QeK6Z6mV|h zWgX!B-~1~|+1Cy@mB}Zd03de4F}@8} zR$A52k?EPC1`W-8G-kX650+H?6#wvtD1aF=ThJ8V&CfhIi(-@S@r zC42mNMv24Qpae)L$E_-Z2EhFrWEgZ3J7O5r@tHtl17>VZ9cZ@+b=YLabQA5E5zsoH zTSlN4x65GC560q%>Kuh2XA zNVK^50$GO`S<+k#7!uhfV>4tNrms|Z_$QDty&f_qyZOm`?{9#N((Tfn>L$p5kn~5y z0tClgdm9xHis&+A->UJB)EFi2;@7;i;E1C!N|d+4ZT1g(hqLTJYh7&U;Fx*!N@Cv&J`IK|om zJH`fU5!9eQ2`mT88rT6XfJ{lNgk)`<^@CNT7FB7VOhc+Vv&x0)F zN@$ui1E!U81wH`@%>Yq75)9lUb=(l0b|9SrJBia7%6z665}B-u1es=F2u6K`25Bmb z%h=AQ5Ext!d_gc7_A_Bg_9=#145UmL3xUgs^AMu7RKT0ETII(LBt%`L!gPCxEvLR7 zVeb)HGS}t>ZKPwj8Y>Hj3p<%`|;So?1^vgesXNuK6NTp z>_x|c-Ne~86?rFmRaa=xJn4yL;o;~d?}V}SQI>IlFbd=j-KfK)i$oeSYTU26ux3`3 zK^xLAYE}qVlA>O!AkD2hpQLP3;wk-;;ItfMI+HXZqCo;oP4%oq@yK&!$)q*`cW;!$ zy7i8H1*86efA}hjkBl$hHjTY6t>%t&b4ONllil3pJ!d6%<^d8;XI8Rj6thEUN|EPR z!;yW_?w7(VnyG??{ZBUf<#BUQWM6ytS7`cme~4r>E=!I9sfX}#Glw4R zmX2yRbX3C7kM5$I6H1&~!t7?5N!O$3s@Fg2U^|j095tQe?Yfi46KVnXPd5)Q9mE`{d62(CU literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/json/__pycache__/provider.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/json/__pycache__/provider.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..4f53feb98fafa6e055353b3d8924d0c46d77c571 GIT binary patch literal 9251 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 E8~L^|EdT%j literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/json/__pycache__/tag.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/json/__pycache__/tag.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f11d66a01676483cf82ade9d42199854be82c4d5 GIT binary patch literal 13946 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 M9DYxtlFQ2f0j|U?FaQ7m literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/json/provider.py b/venv/lib/python3.12/site-packages/flask/json/provider.py new file mode 100644 index 0000000..f9b2e8f --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/json/provider.py @@ -0,0 +1,215 @@ +from __future__ import annotations + +import dataclasses +import decimal +import json +import typing as t +import uuid +import weakref +from datetime import date + +from werkzeug.http import http_date + +if t.TYPE_CHECKING: # pragma: no cover + from werkzeug.sansio.response import Response + + from ..sansio.app import App + + +class JSONProvider: + """A standard set of JSON operations for an application. Subclasses + of this can be used to customize JSON behavior or use different + JSON libraries. + + To implement a provider for a specific library, subclass this base + class and implement at least :meth:`dumps` and :meth:`loads`. All + other methods have default implementations. + + To use a different provider, either subclass ``Flask`` and set + :attr:`~flask.Flask.json_provider_class` to a provider class, or set + :attr:`app.json ` to an instance of the class. + + :param app: An application instance. This will be stored as a + :class:`weakref.proxy` on the :attr:`_app` attribute. + + .. versionadded:: 2.2 + """ + + def __init__(self, app: App) -> None: + self._app: App = weakref.proxy(app) + + def dumps(self, obj: t.Any, **kwargs: t.Any) -> str: + """Serialize data as JSON. + + :param obj: The data to serialize. + :param kwargs: May be passed to the underlying JSON library. + """ + raise NotImplementedError + + def dump(self, obj: t.Any, fp: t.IO[str], **kwargs: t.Any) -> None: + """Serialize data as JSON and write to a file. + + :param obj: The data to serialize. + :param fp: A file opened for writing text. Should use the UTF-8 + encoding to be valid JSON. + :param kwargs: May be passed to the underlying JSON library. + """ + fp.write(self.dumps(obj, **kwargs)) + + def loads(self, s: str | bytes, **kwargs: t.Any) -> t.Any: + """Deserialize data as JSON. + + :param s: Text or UTF-8 bytes. + :param kwargs: May be passed to the underlying JSON library. + """ + raise NotImplementedError + + def load(self, fp: t.IO[t.AnyStr], **kwargs: t.Any) -> t.Any: + """Deserialize data as JSON read from a file. + + :param fp: A file opened for reading text or UTF-8 bytes. + :param kwargs: May be passed to the underlying JSON library. + """ + return self.loads(fp.read(), **kwargs) + + def _prepare_response_obj( + self, args: tuple[t.Any, ...], kwargs: dict[str, t.Any] + ) -> t.Any: + if args and kwargs: + raise TypeError("app.json.response() takes either args or kwargs, not both") + + if not args and not kwargs: + return None + + if len(args) == 1: + return args[0] + + return args or kwargs + + def response(self, *args: t.Any, **kwargs: t.Any) -> Response: + """Serialize the given arguments as JSON, and return a + :class:`~flask.Response` object with the ``application/json`` + mimetype. + + The :func:`~flask.json.jsonify` function calls this method for + the current application. + + Either positional or keyword arguments can be given, not both. + If no arguments are given, ``None`` is serialized. + + :param args: A single value to serialize, or multiple values to + treat as a list to serialize. + :param kwargs: Treat as a dict to serialize. + """ + obj = self._prepare_response_obj(args, kwargs) + return self._app.response_class(self.dumps(obj), mimetype="application/json") + + +def _default(o: t.Any) -> t.Any: + if isinstance(o, date): + return http_date(o) + + if isinstance(o, (decimal.Decimal, uuid.UUID)): + return str(o) + + if dataclasses and dataclasses.is_dataclass(o): + return dataclasses.asdict(o) + + if hasattr(o, "__html__"): + return str(o.__html__()) + + raise TypeError(f"Object of type {type(o).__name__} is not JSON serializable") + + +class DefaultJSONProvider(JSONProvider): + """Provide JSON operations using Python's built-in :mod:`json` + library. Serializes the following additional data types: + + - :class:`datetime.datetime` and :class:`datetime.date` are + serialized to :rfc:`822` strings. This is the same as the HTTP + date format. + - :class:`uuid.UUID` is serialized to a string. + - :class:`dataclasses.dataclass` is passed to + :func:`dataclasses.asdict`. + - :class:`~markupsafe.Markup` (or any object with a ``__html__`` + method) will call the ``__html__`` method to get a string. + """ + + default: t.Callable[[t.Any], t.Any] = staticmethod(_default) # type: ignore[assignment] + """Apply this function to any object that :meth:`json.dumps` does + not know how to serialize. It should return a valid JSON type or + raise a ``TypeError``. + """ + + ensure_ascii = True + """Replace non-ASCII characters with escape sequences. This may be + more compatible with some clients, but can be disabled for better + performance and size. + """ + + sort_keys = True + """Sort the keys in any serialized dicts. This may be useful for + some caching situations, but can be disabled for better performance. + When enabled, keys must all be strings, they are not converted + before sorting. + """ + + compact: bool | None = None + """If ``True``, or ``None`` out of debug mode, the :meth:`response` + output will not add indentation, newlines, or spaces. If ``False``, + or ``None`` in debug mode, it will use a non-compact representation. + """ + + mimetype = "application/json" + """The mimetype set in :meth:`response`.""" + + def dumps(self, obj: t.Any, **kwargs: t.Any) -> str: + """Serialize data as JSON to a string. + + Keyword arguments are passed to :func:`json.dumps`. Sets some + parameter defaults from the :attr:`default`, + :attr:`ensure_ascii`, and :attr:`sort_keys` attributes. + + :param obj: The data to serialize. + :param kwargs: Passed to :func:`json.dumps`. + """ + kwargs.setdefault("default", self.default) + kwargs.setdefault("ensure_ascii", self.ensure_ascii) + kwargs.setdefault("sort_keys", self.sort_keys) + return json.dumps(obj, **kwargs) + + def loads(self, s: str | bytes, **kwargs: t.Any) -> t.Any: + """Deserialize data as JSON from a string or bytes. + + :param s: Text or UTF-8 bytes. + :param kwargs: Passed to :func:`json.loads`. + """ + return json.loads(s, **kwargs) + + def response(self, *args: t.Any, **kwargs: t.Any) -> Response: + """Serialize the given arguments as JSON, and return a + :class:`~flask.Response` object with it. The response mimetype + will be "application/json" and can be changed with + :attr:`mimetype`. + + If :attr:`compact` is ``False`` or debug mode is enabled, the + output will be formatted to be easier to read. + + Either positional or keyword arguments can be given, not both. + If no arguments are given, ``None`` is serialized. + + :param args: A single value to serialize, or multiple values to + treat as a list to serialize. + :param kwargs: Treat as a dict to serialize. + """ + obj = self._prepare_response_obj(args, kwargs) + dump_args: dict[str, t.Any] = {} + + if (self.compact is None and self._app.debug) or self.compact is False: + dump_args.setdefault("indent", 2) + else: + dump_args.setdefault("separators", (",", ":")) + + return self._app.response_class( + f"{self.dumps(obj, **dump_args)}\n", mimetype=self.mimetype + ) diff --git a/venv/lib/python3.12/site-packages/flask/json/tag.py b/venv/lib/python3.12/site-packages/flask/json/tag.py new file mode 100644 index 0000000..8dc3629 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/json/tag.py @@ -0,0 +1,327 @@ +""" +Tagged JSON +~~~~~~~~~~~ + +A compact representation for lossless serialization of non-standard JSON +types. :class:`~flask.sessions.SecureCookieSessionInterface` uses this +to serialize the session data, but it may be useful in other places. It +can be extended to support other types. + +.. autoclass:: TaggedJSONSerializer + :members: + +.. autoclass:: JSONTag + :members: + +Let's see an example that adds support for +:class:`~collections.OrderedDict`. Dicts don't have an order in JSON, so +to handle this we will dump the items as a list of ``[key, value]`` +pairs. Subclass :class:`JSONTag` and give it the new key ``' od'`` to +identify the type. The session serializer processes dicts first, so +insert the new tag at the front of the order since ``OrderedDict`` must +be processed before ``dict``. + +.. code-block:: python + + from flask.json.tag import JSONTag + + class TagOrderedDict(JSONTag): + __slots__ = ('serializer',) + key = ' od' + + def check(self, value): + return isinstance(value, OrderedDict) + + def to_json(self, value): + return [[k, self.serializer.tag(v)] for k, v in iteritems(value)] + + def to_python(self, value): + return OrderedDict(value) + + app.session_interface.serializer.register(TagOrderedDict, index=0) +""" + +from __future__ import annotations + +import typing as t +from base64 import b64decode +from base64 import b64encode +from datetime import datetime +from uuid import UUID + +from markupsafe import Markup +from werkzeug.http import http_date +from werkzeug.http import parse_date + +from ..json import dumps +from ..json import loads + + +class JSONTag: + """Base class for defining type tags for :class:`TaggedJSONSerializer`.""" + + __slots__ = ("serializer",) + + #: The tag to mark the serialized object with. If empty, this tag is + #: only used as an intermediate step during tagging. + key: str = "" + + def __init__(self, serializer: TaggedJSONSerializer) -> None: + """Create a tagger for the given serializer.""" + self.serializer = serializer + + def check(self, value: t.Any) -> bool: + """Check if the given value should be tagged by this tag.""" + raise NotImplementedError + + def to_json(self, value: t.Any) -> t.Any: + """Convert the Python object to an object that is a valid JSON type. + The tag will be added later.""" + raise NotImplementedError + + def to_python(self, value: t.Any) -> t.Any: + """Convert the JSON representation back to the correct type. The tag + will already be removed.""" + raise NotImplementedError + + def tag(self, value: t.Any) -> dict[str, t.Any]: + """Convert the value to a valid JSON type and add the tag structure + around it.""" + return {self.key: self.to_json(value)} + + +class TagDict(JSONTag): + """Tag for 1-item dicts whose only key matches a registered tag. + + Internally, the dict key is suffixed with `__`, and the suffix is removed + when deserializing. + """ + + __slots__ = () + key = " di" + + def check(self, value: t.Any) -> bool: + return ( + isinstance(value, dict) + and len(value) == 1 + and next(iter(value)) in self.serializer.tags + ) + + def to_json(self, value: t.Any) -> t.Any: + key = next(iter(value)) + return {f"{key}__": self.serializer.tag(value[key])} + + def to_python(self, value: t.Any) -> t.Any: + key = next(iter(value)) + return {key[:-2]: value[key]} + + +class PassDict(JSONTag): + __slots__ = () + + def check(self, value: t.Any) -> bool: + return isinstance(value, dict) + + def to_json(self, value: t.Any) -> t.Any: + # JSON objects may only have string keys, so don't bother tagging the + # key here. + return {k: self.serializer.tag(v) for k, v in value.items()} + + tag = to_json + + +class TagTuple(JSONTag): + __slots__ = () + key = " t" + + def check(self, value: t.Any) -> bool: + return isinstance(value, tuple) + + def to_json(self, value: t.Any) -> t.Any: + return [self.serializer.tag(item) for item in value] + + def to_python(self, value: t.Any) -> t.Any: + return tuple(value) + + +class PassList(JSONTag): + __slots__ = () + + def check(self, value: t.Any) -> bool: + return isinstance(value, list) + + def to_json(self, value: t.Any) -> t.Any: + return [self.serializer.tag(item) for item in value] + + tag = to_json + + +class TagBytes(JSONTag): + __slots__ = () + key = " b" + + def check(self, value: t.Any) -> bool: + return isinstance(value, bytes) + + def to_json(self, value: t.Any) -> t.Any: + return b64encode(value).decode("ascii") + + def to_python(self, value: t.Any) -> t.Any: + return b64decode(value) + + +class TagMarkup(JSONTag): + """Serialize anything matching the :class:`~markupsafe.Markup` API by + having a ``__html__`` method to the result of that method. Always + deserializes to an instance of :class:`~markupsafe.Markup`.""" + + __slots__ = () + key = " m" + + def check(self, value: t.Any) -> bool: + return callable(getattr(value, "__html__", None)) + + def to_json(self, value: t.Any) -> t.Any: + return str(value.__html__()) + + def to_python(self, value: t.Any) -> t.Any: + return Markup(value) + + +class TagUUID(JSONTag): + __slots__ = () + key = " u" + + def check(self, value: t.Any) -> bool: + return isinstance(value, UUID) + + def to_json(self, value: t.Any) -> t.Any: + return value.hex + + def to_python(self, value: t.Any) -> t.Any: + return UUID(value) + + +class TagDateTime(JSONTag): + __slots__ = () + key = " d" + + def check(self, value: t.Any) -> bool: + return isinstance(value, datetime) + + def to_json(self, value: t.Any) -> t.Any: + return http_date(value) + + def to_python(self, value: t.Any) -> t.Any: + return parse_date(value) + + +class TaggedJSONSerializer: + """Serializer that uses a tag system to compactly represent objects that + are not JSON types. Passed as the intermediate serializer to + :class:`itsdangerous.Serializer`. + + The following extra types are supported: + + * :class:`dict` + * :class:`tuple` + * :class:`bytes` + * :class:`~markupsafe.Markup` + * :class:`~uuid.UUID` + * :class:`~datetime.datetime` + """ + + __slots__ = ("tags", "order") + + #: Tag classes to bind when creating the serializer. Other tags can be + #: added later using :meth:`~register`. + default_tags = [ + TagDict, + PassDict, + TagTuple, + PassList, + TagBytes, + TagMarkup, + TagUUID, + TagDateTime, + ] + + def __init__(self) -> None: + self.tags: dict[str, JSONTag] = {} + self.order: list[JSONTag] = [] + + for cls in self.default_tags: + self.register(cls) + + def register( + self, + tag_class: type[JSONTag], + force: bool = False, + index: int | None = None, + ) -> None: + """Register a new tag with this serializer. + + :param tag_class: tag class to register. Will be instantiated with this + serializer instance. + :param force: overwrite an existing tag. If false (default), a + :exc:`KeyError` is raised. + :param index: index to insert the new tag in the tag order. Useful when + the new tag is a special case of an existing tag. If ``None`` + (default), the tag is appended to the end of the order. + + :raise KeyError: if the tag key is already registered and ``force`` is + not true. + """ + tag = tag_class(self) + key = tag.key + + if key: + if not force and key in self.tags: + raise KeyError(f"Tag '{key}' is already registered.") + + self.tags[key] = tag + + if index is None: + self.order.append(tag) + else: + self.order.insert(index, tag) + + def tag(self, value: t.Any) -> t.Any: + """Convert a value to a tagged representation if necessary.""" + for tag in self.order: + if tag.check(value): + return tag.tag(value) + + return value + + def untag(self, value: dict[str, t.Any]) -> t.Any: + """Convert a tagged representation back to the original type.""" + if len(value) != 1: + return value + + key = next(iter(value)) + + if key not in self.tags: + return value + + return self.tags[key].to_python(value[key]) + + def _untag_scan(self, value: t.Any) -> t.Any: + if isinstance(value, dict): + # untag each item recursively + value = {k: self._untag_scan(v) for k, v in value.items()} + # untag the dict itself + value = self.untag(value) + elif isinstance(value, list): + # untag each item recursively + value = [self._untag_scan(item) for item in value] + + return value + + def dumps(self, value: t.Any) -> str: + """Tag the value and dump it to a compact JSON string.""" + return dumps(self.tag(value), separators=(",", ":")) + + def loads(self, value: str) -> t.Any: + """Load data from a JSON string and deserialized any tagged objects.""" + return self._untag_scan(loads(value)) diff --git a/venv/lib/python3.12/site-packages/flask/logging.py b/venv/lib/python3.12/site-packages/flask/logging.py new file mode 100644 index 0000000..0cb8f43 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/logging.py @@ -0,0 +1,79 @@ +from __future__ import annotations + +import logging +import sys +import typing as t + +from werkzeug.local import LocalProxy + +from .globals import request + +if t.TYPE_CHECKING: # pragma: no cover + from .sansio.app import App + + +@LocalProxy +def wsgi_errors_stream() -> t.TextIO: + """Find the most appropriate error stream for the application. If a request + is active, log to ``wsgi.errors``, otherwise use ``sys.stderr``. + + If you configure your own :class:`logging.StreamHandler`, you may want to + use this for the stream. If you are using file or dict configuration and + can't import this directly, you can refer to it as + ``ext://flask.logging.wsgi_errors_stream``. + """ + if request: + return request.environ["wsgi.errors"] # type: ignore[no-any-return] + + return sys.stderr + + +def has_level_handler(logger: logging.Logger) -> bool: + """Check if there is a handler in the logging chain that will handle the + given logger's :meth:`effective level <~logging.Logger.getEffectiveLevel>`. + """ + level = logger.getEffectiveLevel() + current = logger + + while current: + if any(handler.level <= level for handler in current.handlers): + return True + + if not current.propagate: + break + + current = current.parent # type: ignore + + return False + + +#: Log messages to :func:`~flask.logging.wsgi_errors_stream` with the format +#: ``[%(asctime)s] %(levelname)s in %(module)s: %(message)s``. +default_handler = logging.StreamHandler(wsgi_errors_stream) # type: ignore +default_handler.setFormatter( + logging.Formatter("[%(asctime)s] %(levelname)s in %(module)s: %(message)s") +) + + +def create_logger(app: App) -> logging.Logger: + """Get the Flask app's logger and configure it if needed. + + The logger name will be the same as + :attr:`app.import_name `. + + When :attr:`~flask.Flask.debug` is enabled, set the logger level to + :data:`logging.DEBUG` if it is not set. + + If there is no handler for the logger's effective level, add a + :class:`~logging.StreamHandler` for + :func:`~flask.logging.wsgi_errors_stream` with a basic format. + """ + logger = logging.getLogger(app.name) + + if app.debug and not logger.level: + logger.setLevel(logging.DEBUG) + + if not has_level_handler(logger): + logger.addHandler(default_handler) + + return logger diff --git a/venv/lib/python3.12/site-packages/flask/py.typed b/venv/lib/python3.12/site-packages/flask/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/flask/sansio/README.md b/venv/lib/python3.12/site-packages/flask/sansio/README.md new file mode 100644 index 0000000..623ac19 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/sansio/README.md @@ -0,0 +1,6 @@ +# Sansio + +This folder contains code that can be used by alternative Flask +implementations, for example Quart. The code therefore cannot do any +IO, nor be part of a likely IO path. Finally this code cannot use the +Flask globals. diff --git a/venv/lib/python3.12/site-packages/flask/sansio/__pycache__/app.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/sansio/__pycache__/app.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..584ab9e8d0d2fb4c5b395063cb35164104079016 GIT binary patch literal 33578 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 Ezw9_l1^@s6 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask/sansio/__pycache__/scaffold.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask/sansio/__pycache__/scaffold.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..35ce46413525c835da34e7f4862734c4a3948c8c GIT binary patch literal 30480 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 timedelta | None: + if value is None or isinstance(value, timedelta): + return value + + return timedelta(seconds=value) + + +class App(Scaffold): + """The flask object implements a WSGI application and acts as the central + object. It is passed the name of the module or package of the + application. Once it is created it will act as a central registry for + the view functions, the URL rules, template configuration and much more. + + The name of the package is used to resolve resources from inside the + package or the folder the module is contained in depending on if the + package parameter resolves to an actual python package (a folder with + an :file:`__init__.py` file inside) or a standard module (just a ``.py`` file). + + For more information about resource loading, see :func:`open_resource`. + + Usually you create a :class:`Flask` instance in your main module or + in the :file:`__init__.py` file of your package like this:: + + from flask import Flask + app = Flask(__name__) + + .. admonition:: About the First Parameter + + The idea of the first parameter is to give Flask an idea of what + belongs to your application. This name is used to find resources + on the filesystem, can be used by extensions to improve debugging + information and a lot more. + + So it's important what you provide there. If you are using a single + module, `__name__` is always the correct value. If you however are + using a package, it's usually recommended to hardcode the name of + your package there. + + For example if your application is defined in :file:`yourapplication/app.py` + you should create it with one of the two versions below:: + + app = Flask('yourapplication') + app = Flask(__name__.split('.')[0]) + + Why is that? The application will work even with `__name__`, thanks + to how resources are looked up. However it will make debugging more + painful. Certain extensions can make assumptions based on the + import name of your application. For example the Flask-SQLAlchemy + extension will look for the code in your application that triggered + an SQL query in debug mode. If the import name is not properly set + up, that debugging information is lost. (For example it would only + pick up SQL queries in `yourapplication.app` and not + `yourapplication.views.frontend`) + + .. versionadded:: 0.7 + The `static_url_path`, `static_folder`, and `template_folder` + parameters were added. + + .. versionadded:: 0.8 + The `instance_path` and `instance_relative_config` parameters were + added. + + .. versionadded:: 0.11 + The `root_path` parameter was added. + + .. versionadded:: 1.0 + The ``host_matching`` and ``static_host`` parameters were added. + + .. versionadded:: 1.0 + The ``subdomain_matching`` parameter was added. Subdomain + matching needs to be enabled manually now. Setting + :data:`SERVER_NAME` does not implicitly enable it. + + :param import_name: the name of the application package + :param static_url_path: can be used to specify a different path for the + static files on the web. Defaults to the name + of the `static_folder` folder. + :param static_folder: The folder with static files that is served at + ``static_url_path``. Relative to the application ``root_path`` + or an absolute path. Defaults to ``'static'``. + :param static_host: the host to use when adding the static route. + Defaults to None. Required when using ``host_matching=True`` + with a ``static_folder`` configured. + :param host_matching: set ``url_map.host_matching`` attribute. + Defaults to False. + :param subdomain_matching: consider the subdomain relative to + :data:`SERVER_NAME` when matching routes. Defaults to False. + :param template_folder: the folder that contains the templates that should + be used by the application. Defaults to + ``'templates'`` folder in the root path of the + application. + :param instance_path: An alternative instance path for the application. + By default the folder ``'instance'`` next to the + package or module is assumed to be the instance + path. + :param instance_relative_config: if set to ``True`` relative filenames + for loading the config are assumed to + be relative to the instance path instead + of the application root. + :param root_path: The path to the root of the application files. + This should only be set manually when it can't be detected + automatically, such as for namespace packages. + """ + + #: The class of the object assigned to :attr:`aborter`, created by + #: :meth:`create_aborter`. That object is called by + #: :func:`flask.abort` to raise HTTP errors, and can be + #: called directly as well. + #: + #: Defaults to :class:`werkzeug.exceptions.Aborter`. + #: + #: .. versionadded:: 2.2 + aborter_class = Aborter + + #: The class that is used for the Jinja environment. + #: + #: .. versionadded:: 0.11 + jinja_environment = Environment + + #: The class that is used for the :data:`~flask.g` instance. + #: + #: Example use cases for a custom class: + #: + #: 1. Store arbitrary attributes on flask.g. + #: 2. Add a property for lazy per-request database connectors. + #: 3. Return None instead of AttributeError on unexpected attributes. + #: 4. Raise exception if an unexpected attr is set, a "controlled" flask.g. + #: + #: In Flask 0.9 this property was called `request_globals_class` but it + #: was changed in 0.10 to :attr:`app_ctx_globals_class` because the + #: flask.g object is now application context scoped. + #: + #: .. versionadded:: 0.10 + app_ctx_globals_class = _AppCtxGlobals + + #: The class that is used for the ``config`` attribute of this app. + #: Defaults to :class:`~flask.Config`. + #: + #: Example use cases for a custom class: + #: + #: 1. Default values for certain config options. + #: 2. Access to config values through attributes in addition to keys. + #: + #: .. versionadded:: 0.11 + config_class = Config + + #: The testing flag. Set this to ``True`` to enable the test mode of + #: Flask extensions (and in the future probably also Flask itself). + #: For example this might activate test helpers that have an + #: additional runtime cost which should not be enabled by default. + #: + #: If this is enabled and PROPAGATE_EXCEPTIONS is not changed from the + #: default it's implicitly enabled. + #: + #: This attribute can also be configured from the config with the + #: ``TESTING`` configuration key. Defaults to ``False``. + testing = ConfigAttribute[bool]("TESTING") + + #: If a secret key is set, cryptographic components can use this to + #: sign cookies and other things. Set this to a complex random value + #: when you want to use the secure cookie for instance. + #: + #: This attribute can also be configured from the config with the + #: :data:`SECRET_KEY` configuration key. Defaults to ``None``. + secret_key = ConfigAttribute[t.Union[str, bytes, None]]("SECRET_KEY") + + #: A :class:`~datetime.timedelta` which is used to set the expiration + #: date of a permanent session. The default is 31 days which makes a + #: permanent session survive for roughly one month. + #: + #: This attribute can also be configured from the config with the + #: ``PERMANENT_SESSION_LIFETIME`` configuration key. Defaults to + #: ``timedelta(days=31)`` + permanent_session_lifetime = ConfigAttribute[timedelta]( + "PERMANENT_SESSION_LIFETIME", + get_converter=_make_timedelta, # type: ignore[arg-type] + ) + + json_provider_class: type[JSONProvider] = DefaultJSONProvider + """A subclass of :class:`~flask.json.provider.JSONProvider`. An + instance is created and assigned to :attr:`app.json` when creating + the app. + + The default, :class:`~flask.json.provider.DefaultJSONProvider`, uses + Python's built-in :mod:`json` library. A different provider can use + a different JSON library. + + .. versionadded:: 2.2 + """ + + #: Options that are passed to the Jinja environment in + #: :meth:`create_jinja_environment`. Changing these options after + #: the environment is created (accessing :attr:`jinja_env`) will + #: have no effect. + #: + #: .. versionchanged:: 1.1.0 + #: This is a ``dict`` instead of an ``ImmutableDict`` to allow + #: easier configuration. + #: + jinja_options: dict[str, t.Any] = {} + + #: The rule object to use for URL rules created. This is used by + #: :meth:`add_url_rule`. Defaults to :class:`werkzeug.routing.Rule`. + #: + #: .. versionadded:: 0.7 + url_rule_class = Rule + + #: The map object to use for storing the URL rules and routing + #: configuration parameters. Defaults to :class:`werkzeug.routing.Map`. + #: + #: .. versionadded:: 1.1.0 + url_map_class = Map + + #: The :meth:`test_client` method creates an instance of this test + #: client class. Defaults to :class:`~flask.testing.FlaskClient`. + #: + #: .. versionadded:: 0.7 + test_client_class: type[FlaskClient] | None = None + + #: The :class:`~click.testing.CliRunner` subclass, by default + #: :class:`~flask.testing.FlaskCliRunner` that is used by + #: :meth:`test_cli_runner`. Its ``__init__`` method should take a + #: Flask app object as the first argument. + #: + #: .. versionadded:: 1.0 + test_cli_runner_class: type[FlaskCliRunner] | None = None + + default_config: dict[str, t.Any] + response_class: type[Response] + + def __init__( + self, + import_name: str, + static_url_path: str | None = None, + static_folder: str | os.PathLike[str] | None = "static", + static_host: str | None = None, + host_matching: bool = False, + subdomain_matching: bool = False, + template_folder: str | os.PathLike[str] | None = "templates", + instance_path: str | None = None, + instance_relative_config: bool = False, + root_path: str | None = None, + ): + super().__init__( + import_name=import_name, + static_folder=static_folder, + static_url_path=static_url_path, + template_folder=template_folder, + root_path=root_path, + ) + + if instance_path is None: + instance_path = self.auto_find_instance_path() + elif not os.path.isabs(instance_path): + raise ValueError( + "If an instance path is provided it must be absolute." + " A relative path was given instead." + ) + + #: Holds the path to the instance folder. + #: + #: .. versionadded:: 0.8 + self.instance_path = instance_path + + #: The configuration dictionary as :class:`Config`. This behaves + #: exactly like a regular dictionary but supports additional methods + #: to load a config from files. + self.config = self.make_config(instance_relative_config) + + #: An instance of :attr:`aborter_class` created by + #: :meth:`make_aborter`. This is called by :func:`flask.abort` + #: to raise HTTP errors, and can be called directly as well. + #: + #: .. versionadded:: 2.2 + #: Moved from ``flask.abort``, which calls this object. + self.aborter = self.make_aborter() + + self.json: JSONProvider = self.json_provider_class(self) + """Provides access to JSON methods. Functions in ``flask.json`` + will call methods on this provider when the application context + is active. Used for handling JSON requests and responses. + + An instance of :attr:`json_provider_class`. Can be customized by + changing that attribute on a subclass, or by assigning to this + attribute afterwards. + + The default, :class:`~flask.json.provider.DefaultJSONProvider`, + uses Python's built-in :mod:`json` library. A different provider + can use a different JSON library. + + .. versionadded:: 2.2 + """ + + #: A list of functions that are called by + #: :meth:`handle_url_build_error` when :meth:`.url_for` raises a + #: :exc:`~werkzeug.routing.BuildError`. Each function is called + #: with ``error``, ``endpoint`` and ``values``. If a function + #: returns ``None`` or raises a ``BuildError``, it is skipped. + #: Otherwise, its return value is returned by ``url_for``. + #: + #: .. versionadded:: 0.9 + self.url_build_error_handlers: list[ + t.Callable[[Exception, str, dict[str, t.Any]], str] + ] = [] + + #: A list of functions that are called when the application context + #: is destroyed. Since the application context is also torn down + #: if the request ends this is the place to store code that disconnects + #: from databases. + #: + #: .. versionadded:: 0.9 + self.teardown_appcontext_funcs: list[ft.TeardownCallable] = [] + + #: A list of shell context processor functions that should be run + #: when a shell context is created. + #: + #: .. versionadded:: 0.11 + self.shell_context_processors: list[ft.ShellContextProcessorCallable] = [] + + #: Maps registered blueprint names to blueprint objects. The + #: dict retains the order the blueprints were registered in. + #: Blueprints can be registered multiple times, this dict does + #: not track how often they were attached. + #: + #: .. versionadded:: 0.7 + self.blueprints: dict[str, Blueprint] = {} + + #: a place where extensions can store application specific state. For + #: example this is where an extension could store database engines and + #: similar things. + #: + #: The key must match the name of the extension module. For example in + #: case of a "Flask-Foo" extension in `flask_foo`, the key would be + #: ``'foo'``. + #: + #: .. versionadded:: 0.7 + self.extensions: dict[str, t.Any] = {} + + #: The :class:`~werkzeug.routing.Map` for this instance. You can use + #: this to change the routing converters after the class was created + #: but before any routes are connected. Example:: + #: + #: from werkzeug.routing import BaseConverter + #: + #: class ListConverter(BaseConverter): + #: def to_python(self, value): + #: return value.split(',') + #: def to_url(self, values): + #: return ','.join(super(ListConverter, self).to_url(value) + #: for value in values) + #: + #: app = Flask(__name__) + #: app.url_map.converters['list'] = ListConverter + self.url_map = self.url_map_class(host_matching=host_matching) + + self.subdomain_matching = subdomain_matching + + # tracks internally if the application already handled at least one + # request. + self._got_first_request = False + + def _check_setup_finished(self, f_name: str) -> None: + if self._got_first_request: + raise AssertionError( + f"The setup method '{f_name}' can no longer be called" + " on the application. It has already handled its first" + " request, any changes will not be applied" + " consistently.\n" + "Make sure all imports, decorators, functions, etc." + " needed to set up the application are done before" + " running it." + ) + + @cached_property + def name(self) -> str: # type: ignore + """The name of the application. This is usually the import name + with the difference that it's guessed from the run file if the + import name is main. This name is used as a display name when + Flask needs the name of the application. It can be set and overridden + to change the value. + + .. versionadded:: 0.8 + """ + if self.import_name == "__main__": + fn: str | None = getattr(sys.modules["__main__"], "__file__", None) + if fn is None: + return "__main__" + return os.path.splitext(os.path.basename(fn))[0] + return self.import_name + + @cached_property + def logger(self) -> logging.Logger: + """A standard Python :class:`~logging.Logger` for the app, with + the same name as :attr:`name`. + + In debug mode, the logger's :attr:`~logging.Logger.level` will + be set to :data:`~logging.DEBUG`. + + If there are no handlers configured, a default handler will be + added. See :doc:`/logging` for more information. + + .. versionchanged:: 1.1.0 + The logger takes the same name as :attr:`name` rather than + hard-coding ``"flask.app"``. + + .. versionchanged:: 1.0.0 + Behavior was simplified. The logger is always named + ``"flask.app"``. The level is only set during configuration, + it doesn't check ``app.debug`` each time. Only one format is + used, not different ones depending on ``app.debug``. No + handlers are removed, and a handler is only added if no + handlers are already configured. + + .. versionadded:: 0.3 + """ + return create_logger(self) + + @cached_property + def jinja_env(self) -> Environment: + """The Jinja environment used to load templates. + + The environment is created the first time this property is + accessed. Changing :attr:`jinja_options` after that will have no + effect. + """ + return self.create_jinja_environment() + + def create_jinja_environment(self) -> Environment: + raise NotImplementedError() + + def make_config(self, instance_relative: bool = False) -> Config: + """Used to create the config attribute by the Flask constructor. + The `instance_relative` parameter is passed in from the constructor + of Flask (there named `instance_relative_config`) and indicates if + the config should be relative to the instance path or the root path + of the application. + + .. versionadded:: 0.8 + """ + root_path = self.root_path + if instance_relative: + root_path = self.instance_path + defaults = dict(self.default_config) + defaults["DEBUG"] = get_debug_flag() + return self.config_class(root_path, defaults) + + def make_aborter(self) -> Aborter: + """Create the object to assign to :attr:`aborter`. That object + is called by :func:`flask.abort` to raise HTTP errors, and can + be called directly as well. + + By default, this creates an instance of :attr:`aborter_class`, + which defaults to :class:`werkzeug.exceptions.Aborter`. + + .. versionadded:: 2.2 + """ + return self.aborter_class() + + def auto_find_instance_path(self) -> str: + """Tries to locate the instance path if it was not provided to the + constructor of the application class. It will basically calculate + the path to a folder named ``instance`` next to your main file or + the package. + + .. versionadded:: 0.8 + """ + prefix, package_path = find_package(self.import_name) + if prefix is None: + return os.path.join(package_path, "instance") + return os.path.join(prefix, "var", f"{self.name}-instance") + + def create_global_jinja_loader(self) -> DispatchingJinjaLoader: + """Creates the loader for the Jinja2 environment. Can be used to + override just the loader and keeping the rest unchanged. It's + discouraged to override this function. Instead one should override + the :meth:`jinja_loader` function instead. + + The global loader dispatches between the loaders of the application + and the individual blueprints. + + .. versionadded:: 0.7 + """ + return DispatchingJinjaLoader(self) + + def select_jinja_autoescape(self, filename: str) -> bool: + """Returns ``True`` if autoescaping should be active for the given + template name. If no template name is given, returns `True`. + + .. versionchanged:: 2.2 + Autoescaping is now enabled by default for ``.svg`` files. + + .. versionadded:: 0.5 + """ + if filename is None: + return True + return filename.endswith((".html", ".htm", ".xml", ".xhtml", ".svg")) + + @property + def debug(self) -> bool: + """Whether debug mode is enabled. When using ``flask run`` to start the + development server, an interactive debugger will be shown for unhandled + exceptions, and the server will be reloaded when code changes. This maps to the + :data:`DEBUG` config key. It may not behave as expected if set late. + + **Do not enable debug mode when deploying in production.** + + Default: ``False`` + """ + return self.config["DEBUG"] # type: ignore[no-any-return] + + @debug.setter + def debug(self, value: bool) -> None: + self.config["DEBUG"] = value + + if self.config["TEMPLATES_AUTO_RELOAD"] is None: + self.jinja_env.auto_reload = value + + @setupmethod + def register_blueprint(self, blueprint: Blueprint, **options: t.Any) -> None: + """Register a :class:`~flask.Blueprint` on the application. Keyword + arguments passed to this method will override the defaults set on the + blueprint. + + Calls the blueprint's :meth:`~flask.Blueprint.register` method after + recording the blueprint in the application's :attr:`blueprints`. + + :param blueprint: The blueprint to register. + :param url_prefix: Blueprint routes will be prefixed with this. + :param subdomain: Blueprint routes will match on this subdomain. + :param url_defaults: Blueprint routes will use these default values for + view arguments. + :param options: Additional keyword arguments are passed to + :class:`~flask.blueprints.BlueprintSetupState`. They can be + accessed in :meth:`~flask.Blueprint.record` callbacks. + + .. versionchanged:: 2.0.1 + The ``name`` option can be used to change the (pre-dotted) + name the blueprint is registered with. This allows the same + blueprint to be registered multiple times with unique names + for ``url_for``. + + .. versionadded:: 0.7 + """ + blueprint.register(self, options) + + def iter_blueprints(self) -> t.ValuesView[Blueprint]: + """Iterates over all blueprints by the order they were registered. + + .. versionadded:: 0.11 + """ + return self.blueprints.values() + + @setupmethod + def add_url_rule( + self, + rule: str, + endpoint: str | None = None, + view_func: ft.RouteCallable | None = None, + provide_automatic_options: bool | None = None, + **options: t.Any, + ) -> None: + if endpoint is None: + endpoint = _endpoint_from_view_func(view_func) # type: ignore + options["endpoint"] = endpoint + methods = options.pop("methods", None) + + # if the methods are not given and the view_func object knows its + # methods we can use that instead. If neither exists, we go with + # a tuple of only ``GET`` as default. + if methods is None: + methods = getattr(view_func, "methods", None) or ("GET",) + if isinstance(methods, str): + raise TypeError( + "Allowed methods must be a list of strings, for" + ' example: @app.route(..., methods=["POST"])' + ) + methods = {item.upper() for item in methods} + + # Methods that should always be added + required_methods = set(getattr(view_func, "required_methods", ())) + + # starting with Flask 0.8 the view_func object can disable and + # force-enable the automatic options handling. + if provide_automatic_options is None: + provide_automatic_options = getattr( + view_func, "provide_automatic_options", None + ) + + if provide_automatic_options is None: + if "OPTIONS" not in methods: + provide_automatic_options = True + required_methods.add("OPTIONS") + else: + provide_automatic_options = False + + # Add the required methods now. + methods |= required_methods + + rule_obj = self.url_rule_class(rule, methods=methods, **options) + rule_obj.provide_automatic_options = provide_automatic_options # type: ignore[attr-defined] + + self.url_map.add(rule_obj) + if view_func is not None: + old_func = self.view_functions.get(endpoint) + if old_func is not None and old_func != view_func: + raise AssertionError( + "View function mapping is overwriting an existing" + f" endpoint function: {endpoint}" + ) + self.view_functions[endpoint] = view_func + + @setupmethod + def template_filter( + self, name: str | None = None + ) -> t.Callable[[T_template_filter], T_template_filter]: + """A decorator that is used to register custom template filter. + You can specify a name for the filter, otherwise the function + name will be used. Example:: + + @app.template_filter() + def reverse(s): + return s[::-1] + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + + def decorator(f: T_template_filter) -> T_template_filter: + self.add_template_filter(f, name=name) + return f + + return decorator + + @setupmethod + def add_template_filter( + self, f: ft.TemplateFilterCallable, name: str | None = None + ) -> None: + """Register a custom template filter. Works exactly like the + :meth:`template_filter` decorator. + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + self.jinja_env.filters[name or f.__name__] = f + + @setupmethod + def template_test( + self, name: str | None = None + ) -> t.Callable[[T_template_test], T_template_test]: + """A decorator that is used to register custom template test. + You can specify a name for the test, otherwise the function + name will be used. Example:: + + @app.template_test() + def is_prime(n): + if n == 2: + return True + for i in range(2, int(math.ceil(math.sqrt(n))) + 1): + if n % i == 0: + return False + return True + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + + def decorator(f: T_template_test) -> T_template_test: + self.add_template_test(f, name=name) + return f + + return decorator + + @setupmethod + def add_template_test( + self, f: ft.TemplateTestCallable, name: str | None = None + ) -> None: + """Register a custom template test. Works exactly like the + :meth:`template_test` decorator. + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + self.jinja_env.tests[name or f.__name__] = f + + @setupmethod + def template_global( + self, name: str | None = None + ) -> t.Callable[[T_template_global], T_template_global]: + """A decorator that is used to register a custom template global function. + You can specify a name for the global function, otherwise the function + name will be used. Example:: + + @app.template_global() + def double(n): + return 2 * n + + .. versionadded:: 0.10 + + :param name: the optional name of the global function, otherwise the + function name will be used. + """ + + def decorator(f: T_template_global) -> T_template_global: + self.add_template_global(f, name=name) + return f + + return decorator + + @setupmethod + def add_template_global( + self, f: ft.TemplateGlobalCallable, name: str | None = None + ) -> None: + """Register a custom template global function. Works exactly like the + :meth:`template_global` decorator. + + .. versionadded:: 0.10 + + :param name: the optional name of the global function, otherwise the + function name will be used. + """ + self.jinja_env.globals[name or f.__name__] = f + + @setupmethod + def teardown_appcontext(self, f: T_teardown) -> T_teardown: + """Registers a function to be called when the application + context is popped. The application context is typically popped + after the request context for each request, at the end of CLI + commands, or after a manually pushed context ends. + + .. code-block:: python + + with app.app_context(): + ... + + When the ``with`` block exits (or ``ctx.pop()`` is called), the + teardown functions are called just before the app context is + made inactive. Since a request context typically also manages an + application context it would also be called when you pop a + request context. + + When a teardown function was called because of an unhandled + exception it will be passed an error object. If an + :meth:`errorhandler` is registered, it will handle the exception + and the teardown will not receive it. + + Teardown functions must avoid raising exceptions. If they + execute code that might fail they must surround that code with a + ``try``/``except`` block and log any errors. + + The return values of teardown functions are ignored. + + .. versionadded:: 0.9 + """ + self.teardown_appcontext_funcs.append(f) + return f + + @setupmethod + def shell_context_processor( + self, f: T_shell_context_processor + ) -> T_shell_context_processor: + """Registers a shell context processor function. + + .. versionadded:: 0.11 + """ + self.shell_context_processors.append(f) + return f + + def _find_error_handler( + self, e: Exception, blueprints: list[str] + ) -> ft.ErrorHandlerCallable | None: + """Return a registered error handler for an exception in this order: + blueprint handler for a specific code, app handler for a specific code, + blueprint handler for an exception class, app handler for an exception + class, or ``None`` if a suitable handler is not found. + """ + exc_class, code = self._get_exc_class_and_code(type(e)) + names = (*blueprints, None) + + for c in (code, None) if code is not None else (None,): + for name in names: + handler_map = self.error_handler_spec[name][c] + + if not handler_map: + continue + + for cls in exc_class.__mro__: + handler = handler_map.get(cls) + + if handler is not None: + return handler + return None + + def trap_http_exception(self, e: Exception) -> bool: + """Checks if an HTTP exception should be trapped or not. By default + this will return ``False`` for all exceptions except for a bad request + key error if ``TRAP_BAD_REQUEST_ERRORS`` is set to ``True``. It + also returns ``True`` if ``TRAP_HTTP_EXCEPTIONS`` is set to ``True``. + + This is called for all HTTP exceptions raised by a view function. + If it returns ``True`` for any exception the error handler for this + exception is not called and it shows up as regular exception in the + traceback. This is helpful for debugging implicitly raised HTTP + exceptions. + + .. versionchanged:: 1.0 + Bad request errors are not trapped by default in debug mode. + + .. versionadded:: 0.8 + """ + if self.config["TRAP_HTTP_EXCEPTIONS"]: + return True + + trap_bad_request = self.config["TRAP_BAD_REQUEST_ERRORS"] + + # if unset, trap key errors in debug mode + if ( + trap_bad_request is None + and self.debug + and isinstance(e, BadRequestKeyError) + ): + return True + + if trap_bad_request: + return isinstance(e, BadRequest) + + return False + + def should_ignore_error(self, error: BaseException | None) -> bool: + """This is called to figure out if an error should be ignored + or not as far as the teardown system is concerned. If this + function returns ``True`` then the teardown handlers will not be + passed the error. + + .. versionadded:: 0.10 + """ + return False + + def redirect(self, location: str, code: int = 302) -> BaseResponse: + """Create a redirect response object. + + This is called by :func:`flask.redirect`, and can be called + directly as well. + + :param location: The URL to redirect to. + :param code: The status code for the redirect. + + .. versionadded:: 2.2 + Moved from ``flask.redirect``, which calls this method. + """ + return _wz_redirect( + location, + code=code, + Response=self.response_class, # type: ignore[arg-type] + ) + + def inject_url_defaults(self, endpoint: str, values: dict[str, t.Any]) -> None: + """Injects the URL defaults for the given endpoint directly into + the values dictionary passed. This is used internally and + automatically called on URL building. + + .. versionadded:: 0.7 + """ + names: t.Iterable[str | None] = (None,) + + # url_for may be called outside a request context, parse the + # passed endpoint instead of using request.blueprints. + if "." in endpoint: + names = chain( + names, reversed(_split_blueprint_path(endpoint.rpartition(".")[0])) + ) + + for name in names: + if name in self.url_default_functions: + for func in self.url_default_functions[name]: + func(endpoint, values) + + def handle_url_build_error( + self, error: BuildError, endpoint: str, values: dict[str, t.Any] + ) -> str: + """Called by :meth:`.url_for` if a + :exc:`~werkzeug.routing.BuildError` was raised. If this returns + a value, it will be returned by ``url_for``, otherwise the error + will be re-raised. + + Each function in :attr:`url_build_error_handlers` is called with + ``error``, ``endpoint`` and ``values``. If a function returns + ``None`` or raises a ``BuildError``, it is skipped. Otherwise, + its return value is returned by ``url_for``. + + :param error: The active ``BuildError`` being handled. + :param endpoint: The endpoint being built. + :param values: The keyword arguments passed to ``url_for``. + """ + for handler in self.url_build_error_handlers: + try: + rv = handler(error, endpoint, values) + except BuildError as e: + # make error available outside except block + error = e + else: + if rv is not None: + return rv + + # Re-raise if called with an active exception, otherwise raise + # the passed in exception. + if error is sys.exc_info()[1]: + raise + + raise error diff --git a/venv/lib/python3.12/site-packages/flask/sansio/blueprints.py b/venv/lib/python3.12/site-packages/flask/sansio/blueprints.py new file mode 100644 index 0000000..4f912cc --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/sansio/blueprints.py @@ -0,0 +1,632 @@ +from __future__ import annotations + +import os +import typing as t +from collections import defaultdict +from functools import update_wrapper + +from .. import typing as ft +from .scaffold import _endpoint_from_view_func +from .scaffold import _sentinel +from .scaffold import Scaffold +from .scaffold import setupmethod + +if t.TYPE_CHECKING: # pragma: no cover + from .app import App + +DeferredSetupFunction = t.Callable[["BlueprintSetupState"], None] +T_after_request = t.TypeVar("T_after_request", bound=ft.AfterRequestCallable[t.Any]) +T_before_request = t.TypeVar("T_before_request", bound=ft.BeforeRequestCallable) +T_error_handler = t.TypeVar("T_error_handler", bound=ft.ErrorHandlerCallable) +T_teardown = t.TypeVar("T_teardown", bound=ft.TeardownCallable) +T_template_context_processor = t.TypeVar( + "T_template_context_processor", bound=ft.TemplateContextProcessorCallable +) +T_template_filter = t.TypeVar("T_template_filter", bound=ft.TemplateFilterCallable) +T_template_global = t.TypeVar("T_template_global", bound=ft.TemplateGlobalCallable) +T_template_test = t.TypeVar("T_template_test", bound=ft.TemplateTestCallable) +T_url_defaults = t.TypeVar("T_url_defaults", bound=ft.URLDefaultCallable) +T_url_value_preprocessor = t.TypeVar( + "T_url_value_preprocessor", bound=ft.URLValuePreprocessorCallable +) + + +class BlueprintSetupState: + """Temporary holder object for registering a blueprint with the + application. An instance of this class is created by the + :meth:`~flask.Blueprint.make_setup_state` method and later passed + to all register callback functions. + """ + + def __init__( + self, + blueprint: Blueprint, + app: App, + options: t.Any, + first_registration: bool, + ) -> None: + #: a reference to the current application + self.app = app + + #: a reference to the blueprint that created this setup state. + self.blueprint = blueprint + + #: a dictionary with all options that were passed to the + #: :meth:`~flask.Flask.register_blueprint` method. + self.options = options + + #: as blueprints can be registered multiple times with the + #: application and not everything wants to be registered + #: multiple times on it, this attribute can be used to figure + #: out if the blueprint was registered in the past already. + self.first_registration = first_registration + + subdomain = self.options.get("subdomain") + if subdomain is None: + subdomain = self.blueprint.subdomain + + #: The subdomain that the blueprint should be active for, ``None`` + #: otherwise. + self.subdomain = subdomain + + url_prefix = self.options.get("url_prefix") + if url_prefix is None: + url_prefix = self.blueprint.url_prefix + #: The prefix that should be used for all URLs defined on the + #: blueprint. + self.url_prefix = url_prefix + + self.name = self.options.get("name", blueprint.name) + self.name_prefix = self.options.get("name_prefix", "") + + #: A dictionary with URL defaults that is added to each and every + #: URL that was defined with the blueprint. + self.url_defaults = dict(self.blueprint.url_values_defaults) + self.url_defaults.update(self.options.get("url_defaults", ())) + + def add_url_rule( + self, + rule: str, + endpoint: str | None = None, + view_func: ft.RouteCallable | None = None, + **options: t.Any, + ) -> None: + """A helper method to register a rule (and optionally a view function) + to the application. The endpoint is automatically prefixed with the + blueprint's name. + """ + if self.url_prefix is not None: + if rule: + rule = "/".join((self.url_prefix.rstrip("/"), rule.lstrip("/"))) + else: + rule = self.url_prefix + options.setdefault("subdomain", self.subdomain) + if endpoint is None: + endpoint = _endpoint_from_view_func(view_func) # type: ignore + defaults = self.url_defaults + if "defaults" in options: + defaults = dict(defaults, **options.pop("defaults")) + + self.app.add_url_rule( + rule, + f"{self.name_prefix}.{self.name}.{endpoint}".lstrip("."), + view_func, + defaults=defaults, + **options, + ) + + +class Blueprint(Scaffold): + """Represents a blueprint, a collection of routes and other + app-related functions that can be registered on a real application + later. + + A blueprint is an object that allows defining application functions + without requiring an application object ahead of time. It uses the + same decorators as :class:`~flask.Flask`, but defers the need for an + application by recording them for later registration. + + Decorating a function with a blueprint creates a deferred function + that is called with :class:`~flask.blueprints.BlueprintSetupState` + when the blueprint is registered on an application. + + See :doc:`/blueprints` for more information. + + :param name: The name of the blueprint. Will be prepended to each + endpoint name. + :param import_name: The name of the blueprint package, usually + ``__name__``. This helps locate the ``root_path`` for the + blueprint. + :param static_folder: A folder with static files that should be + served by the blueprint's static route. The path is relative to + the blueprint's root path. Blueprint static files are disabled + by default. + :param static_url_path: The url to serve static files from. + Defaults to ``static_folder``. If the blueprint does not have + a ``url_prefix``, the app's static route will take precedence, + and the blueprint's static files won't be accessible. + :param template_folder: A folder with templates that should be added + to the app's template search path. The path is relative to the + blueprint's root path. Blueprint templates are disabled by + default. Blueprint templates have a lower precedence than those + in the app's templates folder. + :param url_prefix: A path to prepend to all of the blueprint's URLs, + to make them distinct from the rest of the app's routes. + :param subdomain: A subdomain that blueprint routes will match on by + default. + :param url_defaults: A dict of default values that blueprint routes + will receive by default. + :param root_path: By default, the blueprint will automatically set + this based on ``import_name``. In certain situations this + automatic detection can fail, so the path can be specified + manually instead. + + .. versionchanged:: 1.1.0 + Blueprints have a ``cli`` group to register nested CLI commands. + The ``cli_group`` parameter controls the name of the group under + the ``flask`` command. + + .. versionadded:: 0.7 + """ + + _got_registered_once = False + + def __init__( + self, + name: str, + import_name: str, + static_folder: str | os.PathLike[str] | None = None, + static_url_path: str | None = None, + template_folder: str | os.PathLike[str] | None = None, + url_prefix: str | None = None, + subdomain: str | None = None, + url_defaults: dict[str, t.Any] | None = None, + root_path: str | None = None, + cli_group: str | None = _sentinel, # type: ignore[assignment] + ): + super().__init__( + import_name=import_name, + static_folder=static_folder, + static_url_path=static_url_path, + template_folder=template_folder, + root_path=root_path, + ) + + if not name: + raise ValueError("'name' may not be empty.") + + if "." in name: + raise ValueError("'name' may not contain a dot '.' character.") + + self.name = name + self.url_prefix = url_prefix + self.subdomain = subdomain + self.deferred_functions: list[DeferredSetupFunction] = [] + + if url_defaults is None: + url_defaults = {} + + self.url_values_defaults = url_defaults + self.cli_group = cli_group + self._blueprints: list[tuple[Blueprint, dict[str, t.Any]]] = [] + + def _check_setup_finished(self, f_name: str) -> None: + if self._got_registered_once: + raise AssertionError( + f"The setup method '{f_name}' can no longer be called on the blueprint" + f" '{self.name}'. It has already been registered at least once, any" + " changes will not be applied consistently.\n" + "Make sure all imports, decorators, functions, etc. needed to set up" + " the blueprint are done before registering it." + ) + + @setupmethod + def record(self, func: DeferredSetupFunction) -> None: + """Registers a function that is called when the blueprint is + registered on the application. This function is called with the + state as argument as returned by the :meth:`make_setup_state` + method. + """ + self.deferred_functions.append(func) + + @setupmethod + def record_once(self, func: DeferredSetupFunction) -> None: + """Works like :meth:`record` but wraps the function in another + function that will ensure the function is only called once. If the + blueprint is registered a second time on the application, the + function passed is not called. + """ + + def wrapper(state: BlueprintSetupState) -> None: + if state.first_registration: + func(state) + + self.record(update_wrapper(wrapper, func)) + + def make_setup_state( + self, app: App, options: dict[str, t.Any], first_registration: bool = False + ) -> BlueprintSetupState: + """Creates an instance of :meth:`~flask.blueprints.BlueprintSetupState` + object that is later passed to the register callback functions. + Subclasses can override this to return a subclass of the setup state. + """ + return BlueprintSetupState(self, app, options, first_registration) + + @setupmethod + def register_blueprint(self, blueprint: Blueprint, **options: t.Any) -> None: + """Register a :class:`~flask.Blueprint` on this blueprint. Keyword + arguments passed to this method will override the defaults set + on the blueprint. + + .. versionchanged:: 2.0.1 + The ``name`` option can be used to change the (pre-dotted) + name the blueprint is registered with. This allows the same + blueprint to be registered multiple times with unique names + for ``url_for``. + + .. versionadded:: 2.0 + """ + if blueprint is self: + raise ValueError("Cannot register a blueprint on itself") + self._blueprints.append((blueprint, options)) + + def register(self, app: App, options: dict[str, t.Any]) -> None: + """Called by :meth:`Flask.register_blueprint` to register all + views and callbacks registered on the blueprint with the + application. Creates a :class:`.BlueprintSetupState` and calls + each :meth:`record` callback with it. + + :param app: The application this blueprint is being registered + with. + :param options: Keyword arguments forwarded from + :meth:`~Flask.register_blueprint`. + + .. versionchanged:: 2.3 + Nested blueprints now correctly apply subdomains. + + .. versionchanged:: 2.1 + Registering the same blueprint with the same name multiple + times is an error. + + .. versionchanged:: 2.0.1 + Nested blueprints are registered with their dotted name. + This allows different blueprints with the same name to be + nested at different locations. + + .. versionchanged:: 2.0.1 + The ``name`` option can be used to change the (pre-dotted) + name the blueprint is registered with. This allows the same + blueprint to be registered multiple times with unique names + for ``url_for``. + """ + name_prefix = options.get("name_prefix", "") + self_name = options.get("name", self.name) + name = f"{name_prefix}.{self_name}".lstrip(".") + + if name in app.blueprints: + bp_desc = "this" if app.blueprints[name] is self else "a different" + existing_at = f" '{name}'" if self_name != name else "" + + raise ValueError( + f"The name '{self_name}' is already registered for" + f" {bp_desc} blueprint{existing_at}. Use 'name=' to" + f" provide a unique name." + ) + + first_bp_registration = not any(bp is self for bp in app.blueprints.values()) + first_name_registration = name not in app.blueprints + + app.blueprints[name] = self + self._got_registered_once = True + state = self.make_setup_state(app, options, first_bp_registration) + + if self.has_static_folder: + state.add_url_rule( + f"{self.static_url_path}/", + view_func=self.send_static_file, # type: ignore[attr-defined] + endpoint="static", + ) + + # Merge blueprint data into parent. + if first_bp_registration or first_name_registration: + self._merge_blueprint_funcs(app, name) + + for deferred in self.deferred_functions: + deferred(state) + + cli_resolved_group = options.get("cli_group", self.cli_group) + + if self.cli.commands: + if cli_resolved_group is None: + app.cli.commands.update(self.cli.commands) + elif cli_resolved_group is _sentinel: + self.cli.name = name + app.cli.add_command(self.cli) + else: + self.cli.name = cli_resolved_group + app.cli.add_command(self.cli) + + for blueprint, bp_options in self._blueprints: + bp_options = bp_options.copy() + bp_url_prefix = bp_options.get("url_prefix") + bp_subdomain = bp_options.get("subdomain") + + if bp_subdomain is None: + bp_subdomain = blueprint.subdomain + + if state.subdomain is not None and bp_subdomain is not None: + bp_options["subdomain"] = bp_subdomain + "." + state.subdomain + elif bp_subdomain is not None: + bp_options["subdomain"] = bp_subdomain + elif state.subdomain is not None: + bp_options["subdomain"] = state.subdomain + + if bp_url_prefix is None: + bp_url_prefix = blueprint.url_prefix + + if state.url_prefix is not None and bp_url_prefix is not None: + bp_options["url_prefix"] = ( + state.url_prefix.rstrip("/") + "/" + bp_url_prefix.lstrip("/") + ) + elif bp_url_prefix is not None: + bp_options["url_prefix"] = bp_url_prefix + elif state.url_prefix is not None: + bp_options["url_prefix"] = state.url_prefix + + bp_options["name_prefix"] = name + blueprint.register(app, bp_options) + + def _merge_blueprint_funcs(self, app: App, name: str) -> None: + def extend( + bp_dict: dict[ft.AppOrBlueprintKey, list[t.Any]], + parent_dict: dict[ft.AppOrBlueprintKey, list[t.Any]], + ) -> None: + for key, values in bp_dict.items(): + key = name if key is None else f"{name}.{key}" + parent_dict[key].extend(values) + + for key, value in self.error_handler_spec.items(): + key = name if key is None else f"{name}.{key}" + value = defaultdict( + dict, + { + code: {exc_class: func for exc_class, func in code_values.items()} + for code, code_values in value.items() + }, + ) + app.error_handler_spec[key] = value + + for endpoint, func in self.view_functions.items(): + app.view_functions[endpoint] = func + + extend(self.before_request_funcs, app.before_request_funcs) + extend(self.after_request_funcs, app.after_request_funcs) + extend( + self.teardown_request_funcs, + app.teardown_request_funcs, + ) + extend(self.url_default_functions, app.url_default_functions) + extend(self.url_value_preprocessors, app.url_value_preprocessors) + extend(self.template_context_processors, app.template_context_processors) + + @setupmethod + def add_url_rule( + self, + rule: str, + endpoint: str | None = None, + view_func: ft.RouteCallable | None = None, + provide_automatic_options: bool | None = None, + **options: t.Any, + ) -> None: + """Register a URL rule with the blueprint. See :meth:`.Flask.add_url_rule` for + full documentation. + + The URL rule is prefixed with the blueprint's URL prefix. The endpoint name, + used with :func:`url_for`, is prefixed with the blueprint's name. + """ + if endpoint and "." in endpoint: + raise ValueError("'endpoint' may not contain a dot '.' character.") + + if view_func and hasattr(view_func, "__name__") and "." in view_func.__name__: + raise ValueError("'view_func' name may not contain a dot '.' character.") + + self.record( + lambda s: s.add_url_rule( + rule, + endpoint, + view_func, + provide_automatic_options=provide_automatic_options, + **options, + ) + ) + + @setupmethod + def app_template_filter( + self, name: str | None = None + ) -> t.Callable[[T_template_filter], T_template_filter]: + """Register a template filter, available in any template rendered by the + application. Equivalent to :meth:`.Flask.template_filter`. + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + + def decorator(f: T_template_filter) -> T_template_filter: + self.add_app_template_filter(f, name=name) + return f + + return decorator + + @setupmethod + def add_app_template_filter( + self, f: ft.TemplateFilterCallable, name: str | None = None + ) -> None: + """Register a template filter, available in any template rendered by the + application. Works like the :meth:`app_template_filter` decorator. Equivalent to + :meth:`.Flask.add_template_filter`. + + :param name: the optional name of the filter, otherwise the + function name will be used. + """ + + def register_template(state: BlueprintSetupState) -> None: + state.app.jinja_env.filters[name or f.__name__] = f + + self.record_once(register_template) + + @setupmethod + def app_template_test( + self, name: str | None = None + ) -> t.Callable[[T_template_test], T_template_test]: + """Register a template test, available in any template rendered by the + application. Equivalent to :meth:`.Flask.template_test`. + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + + def decorator(f: T_template_test) -> T_template_test: + self.add_app_template_test(f, name=name) + return f + + return decorator + + @setupmethod + def add_app_template_test( + self, f: ft.TemplateTestCallable, name: str | None = None + ) -> None: + """Register a template test, available in any template rendered by the + application. Works like the :meth:`app_template_test` decorator. Equivalent to + :meth:`.Flask.add_template_test`. + + .. versionadded:: 0.10 + + :param name: the optional name of the test, otherwise the + function name will be used. + """ + + def register_template(state: BlueprintSetupState) -> None: + state.app.jinja_env.tests[name or f.__name__] = f + + self.record_once(register_template) + + @setupmethod + def app_template_global( + self, name: str | None = None + ) -> t.Callable[[T_template_global], T_template_global]: + """Register a template global, available in any template rendered by the + application. Equivalent to :meth:`.Flask.template_global`. + + .. versionadded:: 0.10 + + :param name: the optional name of the global, otherwise the + function name will be used. + """ + + def decorator(f: T_template_global) -> T_template_global: + self.add_app_template_global(f, name=name) + return f + + return decorator + + @setupmethod + def add_app_template_global( + self, f: ft.TemplateGlobalCallable, name: str | None = None + ) -> None: + """Register a template global, available in any template rendered by the + application. Works like the :meth:`app_template_global` decorator. Equivalent to + :meth:`.Flask.add_template_global`. + + .. versionadded:: 0.10 + + :param name: the optional name of the global, otherwise the + function name will be used. + """ + + def register_template(state: BlueprintSetupState) -> None: + state.app.jinja_env.globals[name or f.__name__] = f + + self.record_once(register_template) + + @setupmethod + def before_app_request(self, f: T_before_request) -> T_before_request: + """Like :meth:`before_request`, but before every request, not only those handled + by the blueprint. Equivalent to :meth:`.Flask.before_request`. + """ + self.record_once( + lambda s: s.app.before_request_funcs.setdefault(None, []).append(f) + ) + return f + + @setupmethod + def after_app_request(self, f: T_after_request) -> T_after_request: + """Like :meth:`after_request`, but after every request, not only those handled + by the blueprint. Equivalent to :meth:`.Flask.after_request`. + """ + self.record_once( + lambda s: s.app.after_request_funcs.setdefault(None, []).append(f) + ) + return f + + @setupmethod + def teardown_app_request(self, f: T_teardown) -> T_teardown: + """Like :meth:`teardown_request`, but after every request, not only those + handled by the blueprint. Equivalent to :meth:`.Flask.teardown_request`. + """ + self.record_once( + lambda s: s.app.teardown_request_funcs.setdefault(None, []).append(f) + ) + return f + + @setupmethod + def app_context_processor( + self, f: T_template_context_processor + ) -> T_template_context_processor: + """Like :meth:`context_processor`, but for templates rendered by every view, not + only by the blueprint. Equivalent to :meth:`.Flask.context_processor`. + """ + self.record_once( + lambda s: s.app.template_context_processors.setdefault(None, []).append(f) + ) + return f + + @setupmethod + def app_errorhandler( + self, code: type[Exception] | int + ) -> t.Callable[[T_error_handler], T_error_handler]: + """Like :meth:`errorhandler`, but for every request, not only those handled by + the blueprint. Equivalent to :meth:`.Flask.errorhandler`. + """ + + def decorator(f: T_error_handler) -> T_error_handler: + def from_blueprint(state: BlueprintSetupState) -> None: + state.app.errorhandler(code)(f) + + self.record_once(from_blueprint) + return f + + return decorator + + @setupmethod + def app_url_value_preprocessor( + self, f: T_url_value_preprocessor + ) -> T_url_value_preprocessor: + """Like :meth:`url_value_preprocessor`, but for every request, not only those + handled by the blueprint. Equivalent to :meth:`.Flask.url_value_preprocessor`. + """ + self.record_once( + lambda s: s.app.url_value_preprocessors.setdefault(None, []).append(f) + ) + return f + + @setupmethod + def app_url_defaults(self, f: T_url_defaults) -> T_url_defaults: + """Like :meth:`url_defaults`, but for every request, not only those handled by + the blueprint. Equivalent to :meth:`.Flask.url_defaults`. + """ + self.record_once( + lambda s: s.app.url_default_functions.setdefault(None, []).append(f) + ) + return f diff --git a/venv/lib/python3.12/site-packages/flask/sansio/scaffold.py b/venv/lib/python3.12/site-packages/flask/sansio/scaffold.py new file mode 100644 index 0000000..69e33a0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/sansio/scaffold.py @@ -0,0 +1,801 @@ +from __future__ import annotations + +import importlib.util +import os +import pathlib +import sys +import typing as t +from collections import defaultdict +from functools import update_wrapper + +from jinja2 import BaseLoader +from jinja2 import FileSystemLoader +from werkzeug.exceptions import default_exceptions +from werkzeug.exceptions import HTTPException +from werkzeug.utils import cached_property + +from .. import typing as ft +from ..helpers import get_root_path +from ..templating import _default_template_ctx_processor + +if t.TYPE_CHECKING: # pragma: no cover + from click import Group + +# a singleton sentinel value for parameter defaults +_sentinel = object() + +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) +T_after_request = t.TypeVar("T_after_request", bound=ft.AfterRequestCallable[t.Any]) +T_before_request = t.TypeVar("T_before_request", bound=ft.BeforeRequestCallable) +T_error_handler = t.TypeVar("T_error_handler", bound=ft.ErrorHandlerCallable) +T_teardown = t.TypeVar("T_teardown", bound=ft.TeardownCallable) +T_template_context_processor = t.TypeVar( + "T_template_context_processor", bound=ft.TemplateContextProcessorCallable +) +T_url_defaults = t.TypeVar("T_url_defaults", bound=ft.URLDefaultCallable) +T_url_value_preprocessor = t.TypeVar( + "T_url_value_preprocessor", bound=ft.URLValuePreprocessorCallable +) +T_route = t.TypeVar("T_route", bound=ft.RouteCallable) + + +def setupmethod(f: F) -> F: + f_name = f.__name__ + + def wrapper_func(self: Scaffold, *args: t.Any, **kwargs: t.Any) -> t.Any: + self._check_setup_finished(f_name) + return f(self, *args, **kwargs) + + return t.cast(F, update_wrapper(wrapper_func, f)) + + +class Scaffold: + """Common behavior shared between :class:`~flask.Flask` and + :class:`~flask.blueprints.Blueprint`. + + :param import_name: The import name of the module where this object + is defined. Usually :attr:`__name__` should be used. + :param static_folder: Path to a folder of static files to serve. + If this is set, a static route will be added. + :param static_url_path: URL prefix for the static route. + :param template_folder: Path to a folder containing template files. + for rendering. If this is set, a Jinja loader will be added. + :param root_path: The path that static, template, and resource files + are relative to. Typically not set, it is discovered based on + the ``import_name``. + + .. versionadded:: 2.0 + """ + + cli: Group + name: str + _static_folder: str | None = None + _static_url_path: str | None = None + + def __init__( + self, + import_name: str, + static_folder: str | os.PathLike[str] | None = None, + static_url_path: str | None = None, + template_folder: str | os.PathLike[str] | None = None, + root_path: str | None = None, + ): + #: The name of the package or module that this object belongs + #: to. Do not change this once it is set by the constructor. + self.import_name = import_name + + self.static_folder = static_folder # type: ignore + self.static_url_path = static_url_path + + #: The path to the templates folder, relative to + #: :attr:`root_path`, to add to the template loader. ``None`` if + #: templates should not be added. + self.template_folder = template_folder + + if root_path is None: + root_path = get_root_path(self.import_name) + + #: Absolute path to the package on the filesystem. Used to look + #: up resources contained in the package. + self.root_path = root_path + + #: A dictionary mapping endpoint names to view functions. + #: + #: To register a view function, use the :meth:`route` decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.view_functions: dict[str, ft.RouteCallable] = {} + + #: A data structure of registered error handlers, in the format + #: ``{scope: {code: {class: handler}}}``. The ``scope`` key is + #: the name of a blueprint the handlers are active for, or + #: ``None`` for all requests. The ``code`` key is the HTTP + #: status code for ``HTTPException``, or ``None`` for + #: other exceptions. The innermost dictionary maps exception + #: classes to handler functions. + #: + #: To register an error handler, use the :meth:`errorhandler` + #: decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.error_handler_spec: dict[ + ft.AppOrBlueprintKey, + dict[int | None, dict[type[Exception], ft.ErrorHandlerCallable]], + ] = defaultdict(lambda: defaultdict(dict)) + + #: A data structure of functions to call at the beginning of + #: each request, in the format ``{scope: [functions]}``. The + #: ``scope`` key is the name of a blueprint the functions are + #: active for, or ``None`` for all requests. + #: + #: To register a function, use the :meth:`before_request` + #: decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.before_request_funcs: dict[ + ft.AppOrBlueprintKey, list[ft.BeforeRequestCallable] + ] = defaultdict(list) + + #: A data structure of functions to call at the end of each + #: request, in the format ``{scope: [functions]}``. The + #: ``scope`` key is the name of a blueprint the functions are + #: active for, or ``None`` for all requests. + #: + #: To register a function, use the :meth:`after_request` + #: decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.after_request_funcs: dict[ + ft.AppOrBlueprintKey, list[ft.AfterRequestCallable[t.Any]] + ] = defaultdict(list) + + #: A data structure of functions to call at the end of each + #: request even if an exception is raised, in the format + #: ``{scope: [functions]}``. The ``scope`` key is the name of a + #: blueprint the functions are active for, or ``None`` for all + #: requests. + #: + #: To register a function, use the :meth:`teardown_request` + #: decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.teardown_request_funcs: dict[ + ft.AppOrBlueprintKey, list[ft.TeardownCallable] + ] = defaultdict(list) + + #: A data structure of functions to call to pass extra context + #: values when rendering templates, in the format + #: ``{scope: [functions]}``. The ``scope`` key is the name of a + #: blueprint the functions are active for, or ``None`` for all + #: requests. + #: + #: To register a function, use the :meth:`context_processor` + #: decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.template_context_processors: dict[ + ft.AppOrBlueprintKey, list[ft.TemplateContextProcessorCallable] + ] = defaultdict(list, {None: [_default_template_ctx_processor]}) + + #: A data structure of functions to call to modify the keyword + #: arguments passed to the view function, in the format + #: ``{scope: [functions]}``. The ``scope`` key is the name of a + #: blueprint the functions are active for, or ``None`` for all + #: requests. + #: + #: To register a function, use the + #: :meth:`url_value_preprocessor` decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.url_value_preprocessors: dict[ + ft.AppOrBlueprintKey, + list[ft.URLValuePreprocessorCallable], + ] = defaultdict(list) + + #: A data structure of functions to call to modify the keyword + #: arguments when generating URLs, in the format + #: ``{scope: [functions]}``. The ``scope`` key is the name of a + #: blueprint the functions are active for, or ``None`` for all + #: requests. + #: + #: To register a function, use the :meth:`url_defaults` + #: decorator. + #: + #: This data structure is internal. It should not be modified + #: directly and its format may change at any time. + self.url_default_functions: dict[ + ft.AppOrBlueprintKey, list[ft.URLDefaultCallable] + ] = defaultdict(list) + + def __repr__(self) -> str: + return f"<{type(self).__name__} {self.name!r}>" + + def _check_setup_finished(self, f_name: str) -> None: + raise NotImplementedError + + @property + def static_folder(self) -> str | None: + """The absolute path to the configured static folder. ``None`` + if no static folder is set. + """ + if self._static_folder is not None: + return os.path.join(self.root_path, self._static_folder) + else: + return None + + @static_folder.setter + def static_folder(self, value: str | os.PathLike[str] | None) -> None: + if value is not None: + value = os.fspath(value).rstrip(r"\/") + + self._static_folder = value + + @property + def has_static_folder(self) -> bool: + """``True`` if :attr:`static_folder` is set. + + .. versionadded:: 0.5 + """ + return self.static_folder is not None + + @property + def static_url_path(self) -> str | None: + """The URL prefix that the static route will be accessible from. + + If it was not configured during init, it is derived from + :attr:`static_folder`. + """ + if self._static_url_path is not None: + return self._static_url_path + + if self.static_folder is not None: + basename = os.path.basename(self.static_folder) + return f"/{basename}".rstrip("/") + + return None + + @static_url_path.setter + def static_url_path(self, value: str | None) -> None: + if value is not None: + value = value.rstrip("/") + + self._static_url_path = value + + @cached_property + def jinja_loader(self) -> BaseLoader | None: + """The Jinja loader for this object's templates. By default this + is a class :class:`jinja2.loaders.FileSystemLoader` to + :attr:`template_folder` if it is set. + + .. versionadded:: 0.5 + """ + if self.template_folder is not None: + return FileSystemLoader(os.path.join(self.root_path, self.template_folder)) + else: + return None + + def _method_route( + self, + method: str, + rule: str, + options: dict[str, t.Any], + ) -> t.Callable[[T_route], T_route]: + if "methods" in options: + raise TypeError("Use the 'route' decorator to use the 'methods' argument.") + + return self.route(rule, methods=[method], **options) + + @setupmethod + def get(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]: + """Shortcut for :meth:`route` with ``methods=["GET"]``. + + .. versionadded:: 2.0 + """ + return self._method_route("GET", rule, options) + + @setupmethod + def post(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]: + """Shortcut for :meth:`route` with ``methods=["POST"]``. + + .. versionadded:: 2.0 + """ + return self._method_route("POST", rule, options) + + @setupmethod + def put(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]: + """Shortcut for :meth:`route` with ``methods=["PUT"]``. + + .. versionadded:: 2.0 + """ + return self._method_route("PUT", rule, options) + + @setupmethod + def delete(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]: + """Shortcut for :meth:`route` with ``methods=["DELETE"]``. + + .. versionadded:: 2.0 + """ + return self._method_route("DELETE", rule, options) + + @setupmethod + def patch(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]: + """Shortcut for :meth:`route` with ``methods=["PATCH"]``. + + .. versionadded:: 2.0 + """ + return self._method_route("PATCH", rule, options) + + @setupmethod + def route(self, rule: str, **options: t.Any) -> t.Callable[[T_route], T_route]: + """Decorate a view function to register it with the given URL + rule and options. Calls :meth:`add_url_rule`, which has more + details about the implementation. + + .. code-block:: python + + @app.route("/") + def index(): + return "Hello, World!" + + See :ref:`url-route-registrations`. + + The endpoint name for the route defaults to the name of the view + function if the ``endpoint`` parameter isn't passed. + + The ``methods`` parameter defaults to ``["GET"]``. ``HEAD`` and + ``OPTIONS`` are added automatically. + + :param rule: The URL rule string. + :param options: Extra options passed to the + :class:`~werkzeug.routing.Rule` object. + """ + + def decorator(f: T_route) -> T_route: + endpoint = options.pop("endpoint", None) + self.add_url_rule(rule, endpoint, f, **options) + return f + + return decorator + + @setupmethod + def add_url_rule( + self, + rule: str, + endpoint: str | None = None, + view_func: ft.RouteCallable | None = None, + provide_automatic_options: bool | None = None, + **options: t.Any, + ) -> None: + """Register a rule for routing incoming requests and building + URLs. The :meth:`route` decorator is a shortcut to call this + with the ``view_func`` argument. These are equivalent: + + .. code-block:: python + + @app.route("/") + def index(): + ... + + .. code-block:: python + + def index(): + ... + + app.add_url_rule("/", view_func=index) + + See :ref:`url-route-registrations`. + + The endpoint name for the route defaults to the name of the view + function if the ``endpoint`` parameter isn't passed. An error + will be raised if a function has already been registered for the + endpoint. + + The ``methods`` parameter defaults to ``["GET"]``. ``HEAD`` is + always added automatically, and ``OPTIONS`` is added + automatically by default. + + ``view_func`` does not necessarily need to be passed, but if the + rule should participate in routing an endpoint name must be + associated with a view function at some point with the + :meth:`endpoint` decorator. + + .. code-block:: python + + app.add_url_rule("/", endpoint="index") + + @app.endpoint("index") + def index(): + ... + + If ``view_func`` has a ``required_methods`` attribute, those + methods are added to the passed and automatic methods. If it + has a ``provide_automatic_methods`` attribute, it is used as the + default if the parameter is not passed. + + :param rule: The URL rule string. + :param endpoint: The endpoint name to associate with the rule + and view function. Used when routing and building URLs. + Defaults to ``view_func.__name__``. + :param view_func: The view function to associate with the + endpoint name. + :param provide_automatic_options: Add the ``OPTIONS`` method and + respond to ``OPTIONS`` requests automatically. + :param options: Extra options passed to the + :class:`~werkzeug.routing.Rule` object. + """ + raise NotImplementedError + + @setupmethod + def endpoint(self, endpoint: str) -> t.Callable[[F], F]: + """Decorate a view function to register it for the given + endpoint. Used if a rule is added without a ``view_func`` with + :meth:`add_url_rule`. + + .. code-block:: python + + app.add_url_rule("/ex", endpoint="example") + + @app.endpoint("example") + def example(): + ... + + :param endpoint: The endpoint name to associate with the view + function. + """ + + def decorator(f: F) -> F: + self.view_functions[endpoint] = f + return f + + return decorator + + @setupmethod + def before_request(self, f: T_before_request) -> T_before_request: + """Register a function to run before each request. + + For example, this can be used to open a database connection, or + to load the logged in user from the session. + + .. code-block:: python + + @app.before_request + def load_user(): + if "user_id" in session: + g.user = db.session.get(session["user_id"]) + + The function will be called without any arguments. If it returns + a non-``None`` value, the value is handled as if it was the + return value from the view, and further request handling is + stopped. + + This is available on both app and blueprint objects. When used on an app, this + executes before every request. When used on a blueprint, this executes before + every request that the blueprint handles. To register with a blueprint and + execute before every request, use :meth:`.Blueprint.before_app_request`. + """ + self.before_request_funcs.setdefault(None, []).append(f) + return f + + @setupmethod + def after_request(self, f: T_after_request) -> T_after_request: + """Register a function to run after each request to this object. + + The function is called with the response object, and must return + a response object. This allows the functions to modify or + replace the response before it is sent. + + If a function raises an exception, any remaining + ``after_request`` functions will not be called. Therefore, this + should not be used for actions that must execute, such as to + close resources. Use :meth:`teardown_request` for that. + + This is available on both app and blueprint objects. When used on an app, this + executes after every request. When used on a blueprint, this executes after + every request that the blueprint handles. To register with a blueprint and + execute after every request, use :meth:`.Blueprint.after_app_request`. + """ + self.after_request_funcs.setdefault(None, []).append(f) + return f + + @setupmethod + def teardown_request(self, f: T_teardown) -> T_teardown: + """Register a function to be called when the request context is + popped. Typically this happens at the end of each request, but + contexts may be pushed manually as well during testing. + + .. code-block:: python + + with app.test_request_context(): + ... + + When the ``with`` block exits (or ``ctx.pop()`` is called), the + teardown functions are called just before the request context is + made inactive. + + When a teardown function was called because of an unhandled + exception it will be passed an error object. If an + :meth:`errorhandler` is registered, it will handle the exception + and the teardown will not receive it. + + Teardown functions must avoid raising exceptions. If they + execute code that might fail they must surround that code with a + ``try``/``except`` block and log any errors. + + The return values of teardown functions are ignored. + + This is available on both app and blueprint objects. When used on an app, this + executes after every request. When used on a blueprint, this executes after + every request that the blueprint handles. To register with a blueprint and + execute after every request, use :meth:`.Blueprint.teardown_app_request`. + """ + self.teardown_request_funcs.setdefault(None, []).append(f) + return f + + @setupmethod + def context_processor( + self, + f: T_template_context_processor, + ) -> T_template_context_processor: + """Registers a template context processor function. These functions run before + rendering a template. The keys of the returned dict are added as variables + available in the template. + + This is available on both app and blueprint objects. When used on an app, this + is called for every rendered template. When used on a blueprint, this is called + for templates rendered from the blueprint's views. To register with a blueprint + and affect every template, use :meth:`.Blueprint.app_context_processor`. + """ + self.template_context_processors[None].append(f) + return f + + @setupmethod + def url_value_preprocessor( + self, + f: T_url_value_preprocessor, + ) -> T_url_value_preprocessor: + """Register a URL value preprocessor function for all view + functions in the application. These functions will be called before the + :meth:`before_request` functions. + + The function can modify the values captured from the matched url before + they are passed to the view. For example, this can be used to pop a + common language code value and place it in ``g`` rather than pass it to + every view. + + The function is passed the endpoint name and values dict. The return + value is ignored. + + This is available on both app and blueprint objects. When used on an app, this + is called for every request. When used on a blueprint, this is called for + requests that the blueprint handles. To register with a blueprint and affect + every request, use :meth:`.Blueprint.app_url_value_preprocessor`. + """ + self.url_value_preprocessors[None].append(f) + return f + + @setupmethod + def url_defaults(self, f: T_url_defaults) -> T_url_defaults: + """Callback function for URL defaults for all view functions of the + application. It's called with the endpoint and values and should + update the values passed in place. + + This is available on both app and blueprint objects. When used on an app, this + is called for every request. When used on a blueprint, this is called for + requests that the blueprint handles. To register with a blueprint and affect + every request, use :meth:`.Blueprint.app_url_defaults`. + """ + self.url_default_functions[None].append(f) + return f + + @setupmethod + def errorhandler( + self, code_or_exception: type[Exception] | int + ) -> t.Callable[[T_error_handler], T_error_handler]: + """Register a function to handle errors by code or exception class. + + A decorator that is used to register a function given an + error code. Example:: + + @app.errorhandler(404) + def page_not_found(error): + return 'This page does not exist', 404 + + You can also register handlers for arbitrary exceptions:: + + @app.errorhandler(DatabaseError) + def special_exception_handler(error): + return 'Database connection failed', 500 + + This is available on both app and blueprint objects. When used on an app, this + can handle errors from every request. When used on a blueprint, this can handle + errors from requests that the blueprint handles. To register with a blueprint + and affect every request, use :meth:`.Blueprint.app_errorhandler`. + + .. versionadded:: 0.7 + Use :meth:`register_error_handler` instead of modifying + :attr:`error_handler_spec` directly, for application wide error + handlers. + + .. versionadded:: 0.7 + One can now additionally also register custom exception types + that do not necessarily have to be a subclass of the + :class:`~werkzeug.exceptions.HTTPException` class. + + :param code_or_exception: the code as integer for the handler, or + an arbitrary exception + """ + + def decorator(f: T_error_handler) -> T_error_handler: + self.register_error_handler(code_or_exception, f) + return f + + return decorator + + @setupmethod + def register_error_handler( + self, + code_or_exception: type[Exception] | int, + f: ft.ErrorHandlerCallable, + ) -> None: + """Alternative error attach function to the :meth:`errorhandler` + decorator that is more straightforward to use for non decorator + usage. + + .. versionadded:: 0.7 + """ + exc_class, code = self._get_exc_class_and_code(code_or_exception) + self.error_handler_spec[None][code][exc_class] = f + + @staticmethod + def _get_exc_class_and_code( + exc_class_or_code: type[Exception] | int, + ) -> tuple[type[Exception], int | None]: + """Get the exception class being handled. For HTTP status codes + or ``HTTPException`` subclasses, return both the exception and + status code. + + :param exc_class_or_code: Any exception class, or an HTTP status + code as an integer. + """ + exc_class: type[Exception] + + if isinstance(exc_class_or_code, int): + try: + exc_class = default_exceptions[exc_class_or_code] + except KeyError: + raise ValueError( + f"'{exc_class_or_code}' is not a recognized HTTP" + " error code. Use a subclass of HTTPException with" + " that code instead." + ) from None + else: + exc_class = exc_class_or_code + + if isinstance(exc_class, Exception): + raise TypeError( + f"{exc_class!r} is an instance, not a class. Handlers" + " can only be registered for Exception classes or HTTP" + " error codes." + ) + + if not issubclass(exc_class, Exception): + raise ValueError( + f"'{exc_class.__name__}' is not a subclass of Exception." + " Handlers can only be registered for Exception classes" + " or HTTP error codes." + ) + + if issubclass(exc_class, HTTPException): + return exc_class, exc_class.code + else: + return exc_class, None + + +def _endpoint_from_view_func(view_func: ft.RouteCallable) -> str: + """Internal helper that returns the default endpoint for a given + function. This always is the function name. + """ + assert view_func is not None, "expected view func if endpoint is not provided." + return view_func.__name__ + + +def _path_is_relative_to(path: pathlib.PurePath, base: str) -> bool: + # Path.is_relative_to doesn't exist until Python 3.9 + try: + path.relative_to(base) + return True + except ValueError: + return False + + +def _find_package_path(import_name: str) -> str: + """Find the path that contains the package or module.""" + root_mod_name, _, _ = import_name.partition(".") + + try: + root_spec = importlib.util.find_spec(root_mod_name) + + if root_spec is None: + raise ValueError("not found") + except (ImportError, ValueError): + # ImportError: the machinery told us it does not exist + # ValueError: + # - the module name was invalid + # - the module name is __main__ + # - we raised `ValueError` due to `root_spec` being `None` + return os.getcwd() + + if root_spec.submodule_search_locations: + if root_spec.origin is None or root_spec.origin == "namespace": + # namespace package + package_spec = importlib.util.find_spec(import_name) + + if package_spec is not None and package_spec.submodule_search_locations: + # Pick the path in the namespace that contains the submodule. + package_path = pathlib.Path( + os.path.commonpath(package_spec.submodule_search_locations) + ) + search_location = next( + location + for location in root_spec.submodule_search_locations + if _path_is_relative_to(package_path, location) + ) + else: + # Pick the first path. + search_location = root_spec.submodule_search_locations[0] + + return os.path.dirname(search_location) + else: + # package with __init__.py + return os.path.dirname(os.path.dirname(root_spec.origin)) + else: + # module + return os.path.dirname(root_spec.origin) # type: ignore[type-var, return-value] + + +def find_package(import_name: str) -> tuple[str | None, str]: + """Find the prefix that a package is installed under, and the path + that it would be imported from. + + The prefix is the directory containing the standard directory + hierarchy (lib, bin, etc.). If the package is not installed to the + system (:attr:`sys.prefix`) or a virtualenv (``site-packages``), + ``None`` is returned. + + The path is the entry in :attr:`sys.path` that contains the package + for import. If the package is not installed, it's assumed that the + package was imported from the current working directory. + """ + package_path = _find_package_path(import_name) + py_prefix = os.path.abspath(sys.prefix) + + # installed to the system + if _path_is_relative_to(pathlib.PurePath(package_path), py_prefix): + return py_prefix, package_path + + site_parent, site_folder = os.path.split(package_path) + + # installed to a virtualenv + if site_folder.lower() == "site-packages": + parent, folder = os.path.split(site_parent) + + # Windows (prefix/lib/site-packages) + if folder.lower() == "lib": + return parent, package_path + + # Unix (prefix/lib/pythonX.Y/site-packages) + if os.path.basename(parent).lower() == "lib": + return os.path.dirname(parent), package_path + + # something else (prefix/site-packages) + return site_parent, package_path + + # not installed + return None, package_path diff --git a/venv/lib/python3.12/site-packages/flask/sessions.py b/venv/lib/python3.12/site-packages/flask/sessions.py new file mode 100644 index 0000000..ee19ad6 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/sessions.py @@ -0,0 +1,379 @@ +from __future__ import annotations + +import hashlib +import typing as t +from collections.abc import MutableMapping +from datetime import datetime +from datetime import timezone + +from itsdangerous import BadSignature +from itsdangerous import URLSafeTimedSerializer +from werkzeug.datastructures import CallbackDict + +from .json.tag import TaggedJSONSerializer + +if t.TYPE_CHECKING: # pragma: no cover + import typing_extensions as te + + from .app import Flask + from .wrappers import Request + from .wrappers import Response + + +# TODO generic when Python > 3.8 +class SessionMixin(MutableMapping): # type: ignore[type-arg] + """Expands a basic dictionary with session attributes.""" + + @property + def permanent(self) -> bool: + """This reflects the ``'_permanent'`` key in the dict.""" + return self.get("_permanent", False) + + @permanent.setter + def permanent(self, value: bool) -> None: + self["_permanent"] = bool(value) + + #: Some implementations can detect whether a session is newly + #: created, but that is not guaranteed. Use with caution. The mixin + # default is hard-coded ``False``. + new = False + + #: Some implementations can detect changes to the session and set + #: this when that happens. The mixin default is hard coded to + #: ``True``. + modified = True + + #: Some implementations can detect when session data is read or + #: written and set this when that happens. The mixin default is hard + #: coded to ``True``. + accessed = True + + +# TODO generic when Python > 3.8 +class SecureCookieSession(CallbackDict, SessionMixin): # type: ignore[type-arg] + """Base class for sessions based on signed cookies. + + This session backend will set the :attr:`modified` and + :attr:`accessed` attributes. It cannot reliably track whether a + session is new (vs. empty), so :attr:`new` remains hard coded to + ``False``. + """ + + #: When data is changed, this is set to ``True``. Only the session + #: dictionary itself is tracked; if the session contains mutable + #: data (for example a nested dict) then this must be set to + #: ``True`` manually when modifying that data. The session cookie + #: will only be written to the response if this is ``True``. + modified = False + + #: When data is read or written, this is set to ``True``. Used by + # :class:`.SecureCookieSessionInterface` to add a ``Vary: Cookie`` + #: header, which allows caching proxies to cache different pages for + #: different users. + accessed = False + + def __init__(self, initial: t.Any = None) -> None: + def on_update(self: te.Self) -> None: + self.modified = True + self.accessed = True + + super().__init__(initial, on_update) + + def __getitem__(self, key: str) -> t.Any: + self.accessed = True + return super().__getitem__(key) + + def get(self, key: str, default: t.Any = None) -> t.Any: + self.accessed = True + return super().get(key, default) + + def setdefault(self, key: str, default: t.Any = None) -> t.Any: + self.accessed = True + return super().setdefault(key, default) + + +class NullSession(SecureCookieSession): + """Class used to generate nicer error messages if sessions are not + available. Will still allow read-only access to the empty session + but fail on setting. + """ + + def _fail(self, *args: t.Any, **kwargs: t.Any) -> t.NoReturn: + raise RuntimeError( + "The session is unavailable because no secret " + "key was set. Set the secret_key on the " + "application to something unique and secret." + ) + + __setitem__ = __delitem__ = clear = pop = popitem = update = setdefault = _fail # type: ignore # noqa: B950 + del _fail + + +class SessionInterface: + """The basic interface you have to implement in order to replace the + default session interface which uses werkzeug's securecookie + implementation. The only methods you have to implement are + :meth:`open_session` and :meth:`save_session`, the others have + useful defaults which you don't need to change. + + The session object returned by the :meth:`open_session` method has to + provide a dictionary like interface plus the properties and methods + from the :class:`SessionMixin`. We recommend just subclassing a dict + and adding that mixin:: + + class Session(dict, SessionMixin): + pass + + If :meth:`open_session` returns ``None`` Flask will call into + :meth:`make_null_session` to create a session that acts as replacement + if the session support cannot work because some requirement is not + fulfilled. The default :class:`NullSession` class that is created + will complain that the secret key was not set. + + To replace the session interface on an application all you have to do + is to assign :attr:`flask.Flask.session_interface`:: + + app = Flask(__name__) + app.session_interface = MySessionInterface() + + Multiple requests with the same session may be sent and handled + concurrently. When implementing a new session interface, consider + whether reads or writes to the backing store must be synchronized. + There is no guarantee on the order in which the session for each + request is opened or saved, it will occur in the order that requests + begin and end processing. + + .. versionadded:: 0.8 + """ + + #: :meth:`make_null_session` will look here for the class that should + #: be created when a null session is requested. Likewise the + #: :meth:`is_null_session` method will perform a typecheck against + #: this type. + null_session_class = NullSession + + #: A flag that indicates if the session interface is pickle based. + #: This can be used by Flask extensions to make a decision in regards + #: to how to deal with the session object. + #: + #: .. versionadded:: 0.10 + pickle_based = False + + def make_null_session(self, app: Flask) -> NullSession: + """Creates a null session which acts as a replacement object if the + real session support could not be loaded due to a configuration + error. This mainly aids the user experience because the job of the + null session is to still support lookup without complaining but + modifications are answered with a helpful error message of what + failed. + + This creates an instance of :attr:`null_session_class` by default. + """ + return self.null_session_class() + + def is_null_session(self, obj: object) -> bool: + """Checks if a given object is a null session. Null sessions are + not asked to be saved. + + This checks if the object is an instance of :attr:`null_session_class` + by default. + """ + return isinstance(obj, self.null_session_class) + + def get_cookie_name(self, app: Flask) -> str: + """The name of the session cookie. Uses``app.config["SESSION_COOKIE_NAME"]``.""" + return app.config["SESSION_COOKIE_NAME"] # type: ignore[no-any-return] + + def get_cookie_domain(self, app: Flask) -> str | None: + """The value of the ``Domain`` parameter on the session cookie. If not set, + browsers will only send the cookie to the exact domain it was set from. + Otherwise, they will send it to any subdomain of the given value as well. + + Uses the :data:`SESSION_COOKIE_DOMAIN` config. + + .. versionchanged:: 2.3 + Not set by default, does not fall back to ``SERVER_NAME``. + """ + return app.config["SESSION_COOKIE_DOMAIN"] # type: ignore[no-any-return] + + def get_cookie_path(self, app: Flask) -> str: + """Returns the path for which the cookie should be valid. The + default implementation uses the value from the ``SESSION_COOKIE_PATH`` + config var if it's set, and falls back to ``APPLICATION_ROOT`` or + uses ``/`` if it's ``None``. + """ + return app.config["SESSION_COOKIE_PATH"] or app.config["APPLICATION_ROOT"] # type: ignore[no-any-return] + + def get_cookie_httponly(self, app: Flask) -> bool: + """Returns True if the session cookie should be httponly. This + currently just returns the value of the ``SESSION_COOKIE_HTTPONLY`` + config var. + """ + return app.config["SESSION_COOKIE_HTTPONLY"] # type: ignore[no-any-return] + + def get_cookie_secure(self, app: Flask) -> bool: + """Returns True if the cookie should be secure. This currently + just returns the value of the ``SESSION_COOKIE_SECURE`` setting. + """ + return app.config["SESSION_COOKIE_SECURE"] # type: ignore[no-any-return] + + def get_cookie_samesite(self, app: Flask) -> str | None: + """Return ``'Strict'`` or ``'Lax'`` if the cookie should use the + ``SameSite`` attribute. This currently just returns the value of + the :data:`SESSION_COOKIE_SAMESITE` setting. + """ + return app.config["SESSION_COOKIE_SAMESITE"] # type: ignore[no-any-return] + + def get_expiration_time(self, app: Flask, session: SessionMixin) -> datetime | None: + """A helper method that returns an expiration date for the session + or ``None`` if the session is linked to the browser session. The + default implementation returns now + the permanent session + lifetime configured on the application. + """ + if session.permanent: + return datetime.now(timezone.utc) + app.permanent_session_lifetime + return None + + def should_set_cookie(self, app: Flask, session: SessionMixin) -> bool: + """Used by session backends to determine if a ``Set-Cookie`` header + should be set for this session cookie for this response. If the session + has been modified, the cookie is set. If the session is permanent and + the ``SESSION_REFRESH_EACH_REQUEST`` config is true, the cookie is + always set. + + This check is usually skipped if the session was deleted. + + .. versionadded:: 0.11 + """ + + return session.modified or ( + session.permanent and app.config["SESSION_REFRESH_EACH_REQUEST"] + ) + + def open_session(self, app: Flask, request: Request) -> SessionMixin | None: + """This is called at the beginning of each request, after + pushing the request context, before matching the URL. + + This must return an object which implements a dictionary-like + interface as well as the :class:`SessionMixin` interface. + + This will return ``None`` to indicate that loading failed in + some way that is not immediately an error. The request + context will fall back to using :meth:`make_null_session` + in this case. + """ + raise NotImplementedError() + + def save_session( + self, app: Flask, session: SessionMixin, response: Response + ) -> None: + """This is called at the end of each request, after generating + a response, before removing the request context. It is skipped + if :meth:`is_null_session` returns ``True``. + """ + raise NotImplementedError() + + +session_json_serializer = TaggedJSONSerializer() + + +def _lazy_sha1(string: bytes = b"") -> t.Any: + """Don't access ``hashlib.sha1`` until runtime. FIPS builds may not include + SHA-1, in which case the import and use as a default would fail before the + developer can configure something else. + """ + return hashlib.sha1(string) + + +class SecureCookieSessionInterface(SessionInterface): + """The default session interface that stores sessions in signed cookies + through the :mod:`itsdangerous` module. + """ + + #: the salt that should be applied on top of the secret key for the + #: signing of cookie based sessions. + salt = "cookie-session" + #: the hash function to use for the signature. The default is sha1 + digest_method = staticmethod(_lazy_sha1) + #: the name of the itsdangerous supported key derivation. The default + #: is hmac. + key_derivation = "hmac" + #: A python serializer for the payload. The default is a compact + #: JSON derived serializer with support for some extra Python types + #: such as datetime objects or tuples. + serializer = session_json_serializer + session_class = SecureCookieSession + + def get_signing_serializer(self, app: Flask) -> URLSafeTimedSerializer | None: + if not app.secret_key: + return None + signer_kwargs = dict( + key_derivation=self.key_derivation, digest_method=self.digest_method + ) + return URLSafeTimedSerializer( + app.secret_key, + salt=self.salt, + serializer=self.serializer, + signer_kwargs=signer_kwargs, + ) + + def open_session(self, app: Flask, request: Request) -> SecureCookieSession | None: + s = self.get_signing_serializer(app) + if s is None: + return None + val = request.cookies.get(self.get_cookie_name(app)) + if not val: + return self.session_class() + max_age = int(app.permanent_session_lifetime.total_seconds()) + try: + data = s.loads(val, max_age=max_age) + return self.session_class(data) + except BadSignature: + return self.session_class() + + def save_session( + self, app: Flask, session: SessionMixin, response: Response + ) -> None: + name = self.get_cookie_name(app) + domain = self.get_cookie_domain(app) + path = self.get_cookie_path(app) + secure = self.get_cookie_secure(app) + samesite = self.get_cookie_samesite(app) + httponly = self.get_cookie_httponly(app) + + # Add a "Vary: Cookie" header if the session was accessed at all. + if session.accessed: + response.vary.add("Cookie") + + # If the session is modified to be empty, remove the cookie. + # If the session is empty, return without setting the cookie. + if not session: + if session.modified: + response.delete_cookie( + name, + domain=domain, + path=path, + secure=secure, + samesite=samesite, + httponly=httponly, + ) + response.vary.add("Cookie") + + return + + if not self.should_set_cookie(app, session): + return + + expires = self.get_expiration_time(app, session) + val = self.get_signing_serializer(app).dumps(dict(session)) # type: ignore + response.set_cookie( + name, + val, # type: ignore + expires=expires, + httponly=httponly, + domain=domain, + path=path, + secure=secure, + samesite=samesite, + ) + response.vary.add("Cookie") diff --git a/venv/lib/python3.12/site-packages/flask/signals.py b/venv/lib/python3.12/site-packages/flask/signals.py new file mode 100644 index 0000000..444fda9 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/signals.py @@ -0,0 +1,17 @@ +from __future__ import annotations + +from blinker import Namespace + +# This namespace is only for signals provided by Flask itself. +_signals = Namespace() + +template_rendered = _signals.signal("template-rendered") +before_render_template = _signals.signal("before-render-template") +request_started = _signals.signal("request-started") +request_finished = _signals.signal("request-finished") +request_tearing_down = _signals.signal("request-tearing-down") +got_request_exception = _signals.signal("got-request-exception") +appcontext_tearing_down = _signals.signal("appcontext-tearing-down") +appcontext_pushed = _signals.signal("appcontext-pushed") +appcontext_popped = _signals.signal("appcontext-popped") +message_flashed = _signals.signal("message-flashed") diff --git a/venv/lib/python3.12/site-packages/flask/templating.py b/venv/lib/python3.12/site-packages/flask/templating.py new file mode 100644 index 0000000..618a3b3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/templating.py @@ -0,0 +1,219 @@ +from __future__ import annotations + +import typing as t + +from jinja2 import BaseLoader +from jinja2 import Environment as BaseEnvironment +from jinja2 import Template +from jinja2 import TemplateNotFound + +from .globals import _cv_app +from .globals import _cv_request +from .globals import current_app +from .globals import request +from .helpers import stream_with_context +from .signals import before_render_template +from .signals import template_rendered + +if t.TYPE_CHECKING: # pragma: no cover + from .app import Flask + from .sansio.app import App + from .sansio.scaffold import Scaffold + + +def _default_template_ctx_processor() -> dict[str, t.Any]: + """Default template context processor. Injects `request`, + `session` and `g`. + """ + appctx = _cv_app.get(None) + reqctx = _cv_request.get(None) + rv: dict[str, t.Any] = {} + if appctx is not None: + rv["g"] = appctx.g + if reqctx is not None: + rv["request"] = reqctx.request + rv["session"] = reqctx.session + return rv + + +class Environment(BaseEnvironment): + """Works like a regular Jinja2 environment but has some additional + knowledge of how Flask's blueprint works so that it can prepend the + name of the blueprint to referenced templates if necessary. + """ + + def __init__(self, app: App, **options: t.Any) -> None: + if "loader" not in options: + options["loader"] = app.create_global_jinja_loader() + BaseEnvironment.__init__(self, **options) + self.app = app + + +class DispatchingJinjaLoader(BaseLoader): + """A loader that looks for templates in the application and all + the blueprint folders. + """ + + def __init__(self, app: App) -> None: + self.app = app + + def get_source( + self, environment: BaseEnvironment, template: str + ) -> tuple[str, str | None, t.Callable[[], bool] | None]: + if self.app.config["EXPLAIN_TEMPLATE_LOADING"]: + return self._get_source_explained(environment, template) + return self._get_source_fast(environment, template) + + def _get_source_explained( + self, environment: BaseEnvironment, template: str + ) -> tuple[str, str | None, t.Callable[[], bool] | None]: + attempts = [] + rv: tuple[str, str | None, t.Callable[[], bool] | None] | None + trv: None | (tuple[str, str | None, t.Callable[[], bool] | None]) = None + + for srcobj, loader in self._iter_loaders(template): + try: + rv = loader.get_source(environment, template) + if trv is None: + trv = rv + except TemplateNotFound: + rv = None + attempts.append((loader, srcobj, rv)) + + from .debughelpers import explain_template_loading_attempts + + explain_template_loading_attempts(self.app, template, attempts) + + if trv is not None: + return trv + raise TemplateNotFound(template) + + def _get_source_fast( + self, environment: BaseEnvironment, template: str + ) -> tuple[str, str | None, t.Callable[[], bool] | None]: + for _srcobj, loader in self._iter_loaders(template): + try: + return loader.get_source(environment, template) + except TemplateNotFound: + continue + raise TemplateNotFound(template) + + def _iter_loaders(self, template: str) -> t.Iterator[tuple[Scaffold, BaseLoader]]: + loader = self.app.jinja_loader + if loader is not None: + yield self.app, loader + + for blueprint in self.app.iter_blueprints(): + loader = blueprint.jinja_loader + if loader is not None: + yield blueprint, loader + + def list_templates(self) -> list[str]: + result = set() + loader = self.app.jinja_loader + if loader is not None: + result.update(loader.list_templates()) + + for blueprint in self.app.iter_blueprints(): + loader = blueprint.jinja_loader + if loader is not None: + for template in loader.list_templates(): + result.add(template) + + return list(result) + + +def _render(app: Flask, template: Template, context: dict[str, t.Any]) -> str: + app.update_template_context(context) + before_render_template.send( + app, _async_wrapper=app.ensure_sync, template=template, context=context + ) + rv = template.render(context) + template_rendered.send( + app, _async_wrapper=app.ensure_sync, template=template, context=context + ) + return rv + + +def render_template( + template_name_or_list: str | Template | list[str | Template], + **context: t.Any, +) -> str: + """Render a template by name with the given context. + + :param template_name_or_list: The name of the template to render. If + a list is given, the first name to exist will be rendered. + :param context: The variables to make available in the template. + """ + app = current_app._get_current_object() # type: ignore[attr-defined] + template = app.jinja_env.get_or_select_template(template_name_or_list) + return _render(app, template, context) + + +def render_template_string(source: str, **context: t.Any) -> str: + """Render a template from the given source string with the given + context. + + :param source: The source code of the template to render. + :param context: The variables to make available in the template. + """ + app = current_app._get_current_object() # type: ignore[attr-defined] + template = app.jinja_env.from_string(source) + return _render(app, template, context) + + +def _stream( + app: Flask, template: Template, context: dict[str, t.Any] +) -> t.Iterator[str]: + app.update_template_context(context) + before_render_template.send( + app, _async_wrapper=app.ensure_sync, template=template, context=context + ) + + def generate() -> t.Iterator[str]: + yield from template.generate(context) + template_rendered.send( + app, _async_wrapper=app.ensure_sync, template=template, context=context + ) + + rv = generate() + + # If a request context is active, keep it while generating. + if request: + rv = stream_with_context(rv) + + return rv + + +def stream_template( + template_name_or_list: str | Template | list[str | Template], + **context: t.Any, +) -> t.Iterator[str]: + """Render a template by name with the given context as a stream. + This returns an iterator of strings, which can be used as a + streaming response from a view. + + :param template_name_or_list: The name of the template to render. If + a list is given, the first name to exist will be rendered. + :param context: The variables to make available in the template. + + .. versionadded:: 2.2 + """ + app = current_app._get_current_object() # type: ignore[attr-defined] + template = app.jinja_env.get_or_select_template(template_name_or_list) + return _stream(app, template, context) + + +def stream_template_string(source: str, **context: t.Any) -> t.Iterator[str]: + """Render a template from the given source string with the given + context as a stream. This returns an iterator of strings, which can + be used as a streaming response from a view. + + :param source: The source code of the template to render. + :param context: The variables to make available in the template. + + .. versionadded:: 2.2 + """ + app = current_app._get_current_object() # type: ignore[attr-defined] + template = app.jinja_env.from_string(source) + return _stream(app, template, context) diff --git a/venv/lib/python3.12/site-packages/flask/testing.py b/venv/lib/python3.12/site-packages/flask/testing.py new file mode 100644 index 0000000..a27b7c8 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/testing.py @@ -0,0 +1,298 @@ +from __future__ import annotations + +import importlib.metadata +import typing as t +from contextlib import contextmanager +from contextlib import ExitStack +from copy import copy +from types import TracebackType +from urllib.parse import urlsplit + +import werkzeug.test +from click.testing import CliRunner +from werkzeug.test import Client +from werkzeug.wrappers import Request as BaseRequest + +from .cli import ScriptInfo +from .sessions import SessionMixin + +if t.TYPE_CHECKING: # pragma: no cover + from _typeshed.wsgi import WSGIEnvironment + from werkzeug.test import TestResponse + + from .app import Flask + + +class EnvironBuilder(werkzeug.test.EnvironBuilder): + """An :class:`~werkzeug.test.EnvironBuilder`, that takes defaults from the + application. + + :param app: The Flask application to configure the environment from. + :param path: URL path being requested. + :param base_url: Base URL where the app is being served, which + ``path`` is relative to. If not given, built from + :data:`PREFERRED_URL_SCHEME`, ``subdomain``, + :data:`SERVER_NAME`, and :data:`APPLICATION_ROOT`. + :param subdomain: Subdomain name to append to :data:`SERVER_NAME`. + :param url_scheme: Scheme to use instead of + :data:`PREFERRED_URL_SCHEME`. + :param json: If given, this is serialized as JSON and passed as + ``data``. Also defaults ``content_type`` to + ``application/json``. + :param args: other positional arguments passed to + :class:`~werkzeug.test.EnvironBuilder`. + :param kwargs: other keyword arguments passed to + :class:`~werkzeug.test.EnvironBuilder`. + """ + + def __init__( + self, + app: Flask, + path: str = "/", + base_url: str | None = None, + subdomain: str | None = None, + url_scheme: str | None = None, + *args: t.Any, + **kwargs: t.Any, + ) -> None: + assert not (base_url or subdomain or url_scheme) or ( + base_url is not None + ) != bool( + subdomain or url_scheme + ), 'Cannot pass "subdomain" or "url_scheme" with "base_url".' + + if base_url is None: + http_host = app.config.get("SERVER_NAME") or "localhost" + app_root = app.config["APPLICATION_ROOT"] + + if subdomain: + http_host = f"{subdomain}.{http_host}" + + if url_scheme is None: + url_scheme = app.config["PREFERRED_URL_SCHEME"] + + url = urlsplit(path) + base_url = ( + f"{url.scheme or url_scheme}://{url.netloc or http_host}" + f"/{app_root.lstrip('/')}" + ) + path = url.path + + if url.query: + sep = b"?" if isinstance(url.query, bytes) else "?" + path += sep + url.query + + self.app = app + super().__init__(path, base_url, *args, **kwargs) + + def json_dumps(self, obj: t.Any, **kwargs: t.Any) -> str: # type: ignore + """Serialize ``obj`` to a JSON-formatted string. + + The serialization will be configured according to the config associated + with this EnvironBuilder's ``app``. + """ + return self.app.json.dumps(obj, **kwargs) + + +_werkzeug_version = "" + + +def _get_werkzeug_version() -> str: + global _werkzeug_version + + if not _werkzeug_version: + _werkzeug_version = importlib.metadata.version("werkzeug") + + return _werkzeug_version + + +class FlaskClient(Client): + """Works like a regular Werkzeug test client but has knowledge about + Flask's contexts to defer the cleanup of the request context until + the end of a ``with`` block. For general information about how to + use this class refer to :class:`werkzeug.test.Client`. + + .. versionchanged:: 0.12 + `app.test_client()` includes preset default environment, which can be + set after instantiation of the `app.test_client()` object in + `client.environ_base`. + + Basic usage is outlined in the :doc:`/testing` chapter. + """ + + application: Flask + + def __init__(self, *args: t.Any, **kwargs: t.Any) -> None: + super().__init__(*args, **kwargs) + self.preserve_context = False + self._new_contexts: list[t.ContextManager[t.Any]] = [] + self._context_stack = ExitStack() + self.environ_base = { + "REMOTE_ADDR": "127.0.0.1", + "HTTP_USER_AGENT": f"Werkzeug/{_get_werkzeug_version()}", + } + + @contextmanager + def session_transaction( + self, *args: t.Any, **kwargs: t.Any + ) -> t.Iterator[SessionMixin]: + """When used in combination with a ``with`` statement this opens a + session transaction. This can be used to modify the session that + the test client uses. Once the ``with`` block is left the session is + stored back. + + :: + + with client.session_transaction() as session: + session['value'] = 42 + + Internally this is implemented by going through a temporary test + request context and since session handling could depend on + request variables this function accepts the same arguments as + :meth:`~flask.Flask.test_request_context` which are directly + passed through. + """ + if self._cookies is None: + raise TypeError( + "Cookies are disabled. Create a client with 'use_cookies=True'." + ) + + app = self.application + ctx = app.test_request_context(*args, **kwargs) + self._add_cookies_to_wsgi(ctx.request.environ) + + with ctx: + sess = app.session_interface.open_session(app, ctx.request) + + if sess is None: + raise RuntimeError("Session backend did not open a session.") + + yield sess + resp = app.response_class() + + if app.session_interface.is_null_session(sess): + return + + with ctx: + app.session_interface.save_session(app, sess, resp) + + self._update_cookies_from_response( + ctx.request.host.partition(":")[0], + ctx.request.path, + resp.headers.getlist("Set-Cookie"), + ) + + def _copy_environ(self, other: WSGIEnvironment) -> WSGIEnvironment: + out = {**self.environ_base, **other} + + if self.preserve_context: + out["werkzeug.debug.preserve_context"] = self._new_contexts.append + + return out + + def _request_from_builder_args( + self, args: tuple[t.Any, ...], kwargs: dict[str, t.Any] + ) -> BaseRequest: + kwargs["environ_base"] = self._copy_environ(kwargs.get("environ_base", {})) + builder = EnvironBuilder(self.application, *args, **kwargs) + + try: + return builder.get_request() + finally: + builder.close() + + def open( + self, + *args: t.Any, + buffered: bool = False, + follow_redirects: bool = False, + **kwargs: t.Any, + ) -> TestResponse: + if args and isinstance( + args[0], (werkzeug.test.EnvironBuilder, dict, BaseRequest) + ): + if isinstance(args[0], werkzeug.test.EnvironBuilder): + builder = copy(args[0]) + builder.environ_base = self._copy_environ(builder.environ_base or {}) # type: ignore[arg-type] + request = builder.get_request() + elif isinstance(args[0], dict): + request = EnvironBuilder.from_environ( + args[0], app=self.application, environ_base=self._copy_environ({}) + ).get_request() + else: + # isinstance(args[0], BaseRequest) + request = copy(args[0]) + request.environ = self._copy_environ(request.environ) + else: + # request is None + request = self._request_from_builder_args(args, kwargs) + + # Pop any previously preserved contexts. This prevents contexts + # from being preserved across redirects or multiple requests + # within a single block. + self._context_stack.close() + + response = super().open( + request, + buffered=buffered, + follow_redirects=follow_redirects, + ) + response.json_module = self.application.json # type: ignore[assignment] + + # Re-push contexts that were preserved during the request. + while self._new_contexts: + cm = self._new_contexts.pop() + self._context_stack.enter_context(cm) + + return response + + def __enter__(self) -> FlaskClient: + if self.preserve_context: + raise RuntimeError("Cannot nest client invocations") + self.preserve_context = True + return self + + def __exit__( + self, + exc_type: type | None, + exc_value: BaseException | None, + tb: TracebackType | None, + ) -> None: + self.preserve_context = False + self._context_stack.close() + + +class FlaskCliRunner(CliRunner): + """A :class:`~click.testing.CliRunner` for testing a Flask app's + CLI commands. Typically created using + :meth:`~flask.Flask.test_cli_runner`. See :ref:`testing-cli`. + """ + + def __init__(self, app: Flask, **kwargs: t.Any) -> None: + self.app = app + super().__init__(**kwargs) + + def invoke( # type: ignore + self, cli: t.Any = None, args: t.Any = None, **kwargs: t.Any + ) -> t.Any: + """Invokes a CLI command in an isolated environment. See + :meth:`CliRunner.invoke ` for + full method documentation. See :ref:`testing-cli` for examples. + + If the ``obj`` argument is not given, passes an instance of + :class:`~flask.cli.ScriptInfo` that knows how to load the Flask + app being tested. + + :param cli: Command object to invoke. Default is the app's + :attr:`~flask.app.Flask.cli` group. + :param args: List of strings to invoke the command with. + + :return: a :class:`~click.testing.Result` object. + """ + if cli is None: + cli = self.app.cli + + if "obj" not in kwargs: + kwargs["obj"] = ScriptInfo(create_app=lambda: self.app) + + return super().invoke(cli, args, **kwargs) diff --git a/venv/lib/python3.12/site-packages/flask/typing.py b/venv/lib/python3.12/site-packages/flask/typing.py new file mode 100644 index 0000000..cf6d4ae --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/typing.py @@ -0,0 +1,90 @@ +from __future__ import annotations + +import typing as t + +if t.TYPE_CHECKING: # pragma: no cover + from _typeshed.wsgi import WSGIApplication # noqa: F401 + from werkzeug.datastructures import Headers # noqa: F401 + from werkzeug.sansio.response import Response # noqa: F401 + +# The possible types that are directly convertible or are a Response object. +ResponseValue = t.Union[ + "Response", + str, + bytes, + t.List[t.Any], + # Only dict is actually accepted, but Mapping allows for TypedDict. + t.Mapping[str, t.Any], + t.Iterator[str], + t.Iterator[bytes], +] + +# the possible types for an individual HTTP header +# This should be a Union, but mypy doesn't pass unless it's a TypeVar. +HeaderValue = t.Union[str, t.List[str], t.Tuple[str, ...]] + +# the possible types for HTTP headers +HeadersValue = t.Union[ + "Headers", + t.Mapping[str, HeaderValue], + t.Sequence[t.Tuple[str, HeaderValue]], +] + +# The possible types returned by a route function. +ResponseReturnValue = t.Union[ + ResponseValue, + t.Tuple[ResponseValue, HeadersValue], + t.Tuple[ResponseValue, int], + t.Tuple[ResponseValue, int, HeadersValue], + "WSGIApplication", +] + +# Allow any subclass of werkzeug.Response, such as the one from Flask, +# as a callback argument. Using werkzeug.Response directly makes a +# callback annotated with flask.Response fail type checking. +ResponseClass = t.TypeVar("ResponseClass", bound="Response") + +AppOrBlueprintKey = t.Optional[str] # The App key is None, whereas blueprints are named +AfterRequestCallable = t.Union[ + t.Callable[[ResponseClass], ResponseClass], + t.Callable[[ResponseClass], t.Awaitable[ResponseClass]], +] +BeforeFirstRequestCallable = t.Union[ + t.Callable[[], None], t.Callable[[], t.Awaitable[None]] +] +BeforeRequestCallable = t.Union[ + t.Callable[[], t.Optional[ResponseReturnValue]], + t.Callable[[], t.Awaitable[t.Optional[ResponseReturnValue]]], +] +ShellContextProcessorCallable = t.Callable[[], t.Dict[str, t.Any]] +TeardownCallable = t.Union[ + t.Callable[[t.Optional[BaseException]], None], + t.Callable[[t.Optional[BaseException]], t.Awaitable[None]], +] +TemplateContextProcessorCallable = t.Union[ + t.Callable[[], t.Dict[str, t.Any]], + t.Callable[[], t.Awaitable[t.Dict[str, t.Any]]], +] +TemplateFilterCallable = t.Callable[..., t.Any] +TemplateGlobalCallable = t.Callable[..., t.Any] +TemplateTestCallable = t.Callable[..., bool] +URLDefaultCallable = t.Callable[[str, t.Dict[str, t.Any]], None] +URLValuePreprocessorCallable = t.Callable[ + [t.Optional[str], t.Optional[t.Dict[str, t.Any]]], None +] + +# This should take Exception, but that either breaks typing the argument +# with a specific exception, or decorating multiple times with different +# exceptions (and using a union type on the argument). +# https://github.com/pallets/flask/issues/4095 +# https://github.com/pallets/flask/issues/4295 +# https://github.com/pallets/flask/issues/4297 +ErrorHandlerCallable = t.Union[ + t.Callable[[t.Any], ResponseReturnValue], + t.Callable[[t.Any], t.Awaitable[ResponseReturnValue]], +] + +RouteCallable = t.Union[ + t.Callable[..., ResponseReturnValue], + t.Callable[..., t.Awaitable[ResponseReturnValue]], +] diff --git a/venv/lib/python3.12/site-packages/flask/views.py b/venv/lib/python3.12/site-packages/flask/views.py new file mode 100644 index 0000000..794fdc0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/views.py @@ -0,0 +1,191 @@ +from __future__ import annotations + +import typing as t + +from . import typing as ft +from .globals import current_app +from .globals import request + +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) + +http_method_funcs = frozenset( + ["get", "post", "head", "options", "delete", "put", "trace", "patch"] +) + + +class View: + """Subclass this class and override :meth:`dispatch_request` to + create a generic class-based view. Call :meth:`as_view` to create a + view function that creates an instance of the class with the given + arguments and calls its ``dispatch_request`` method with any URL + variables. + + See :doc:`views` for a detailed guide. + + .. code-block:: python + + class Hello(View): + init_every_request = False + + def dispatch_request(self, name): + return f"Hello, {name}!" + + app.add_url_rule( + "/hello/", view_func=Hello.as_view("hello") + ) + + Set :attr:`methods` on the class to change what methods the view + accepts. + + Set :attr:`decorators` on the class to apply a list of decorators to + the generated view function. Decorators applied to the class itself + will not be applied to the generated view function! + + Set :attr:`init_every_request` to ``False`` for efficiency, unless + you need to store request-global data on ``self``. + """ + + #: The methods this view is registered for. Uses the same default + #: (``["GET", "HEAD", "OPTIONS"]``) as ``route`` and + #: ``add_url_rule`` by default. + methods: t.ClassVar[t.Collection[str] | None] = None + + #: Control whether the ``OPTIONS`` method is handled automatically. + #: Uses the same default (``True``) as ``route`` and + #: ``add_url_rule`` by default. + provide_automatic_options: t.ClassVar[bool | None] = None + + #: A list of decorators to apply, in order, to the generated view + #: function. Remember that ``@decorator`` syntax is applied bottom + #: to top, so the first decorator in the list would be the bottom + #: decorator. + #: + #: .. versionadded:: 0.8 + decorators: t.ClassVar[list[t.Callable[[F], F]]] = [] + + #: Create a new instance of this view class for every request by + #: default. If a view subclass sets this to ``False``, the same + #: instance is used for every request. + #: + #: A single instance is more efficient, especially if complex setup + #: is done during init. However, storing data on ``self`` is no + #: longer safe across requests, and :data:`~flask.g` should be used + #: instead. + #: + #: .. versionadded:: 2.2 + init_every_request: t.ClassVar[bool] = True + + def dispatch_request(self) -> ft.ResponseReturnValue: + """The actual view function behavior. Subclasses must override + this and return a valid response. Any variables from the URL + rule are passed as keyword arguments. + """ + raise NotImplementedError() + + @classmethod + def as_view( + cls, name: str, *class_args: t.Any, **class_kwargs: t.Any + ) -> ft.RouteCallable: + """Convert the class into a view function that can be registered + for a route. + + By default, the generated view will create a new instance of the + view class for every request and call its + :meth:`dispatch_request` method. If the view class sets + :attr:`init_every_request` to ``False``, the same instance will + be used for every request. + + Except for ``name``, all other arguments passed to this method + are forwarded to the view class ``__init__`` method. + + .. versionchanged:: 2.2 + Added the ``init_every_request`` class attribute. + """ + if cls.init_every_request: + + def view(**kwargs: t.Any) -> ft.ResponseReturnValue: + self = view.view_class( # type: ignore[attr-defined] + *class_args, **class_kwargs + ) + return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return] + + else: + self = cls(*class_args, **class_kwargs) + + def view(**kwargs: t.Any) -> ft.ResponseReturnValue: + return current_app.ensure_sync(self.dispatch_request)(**kwargs) # type: ignore[no-any-return] + + if cls.decorators: + view.__name__ = name + view.__module__ = cls.__module__ + for decorator in cls.decorators: + view = decorator(view) + + # We attach the view class to the view function for two reasons: + # first of all it allows us to easily figure out what class-based + # view this thing came from, secondly it's also used for instantiating + # the view class so you can actually replace it with something else + # for testing purposes and debugging. + view.view_class = cls # type: ignore + view.__name__ = name + view.__doc__ = cls.__doc__ + view.__module__ = cls.__module__ + view.methods = cls.methods # type: ignore + view.provide_automatic_options = cls.provide_automatic_options # type: ignore + return view + + +class MethodView(View): + """Dispatches request methods to the corresponding instance methods. + For example, if you implement a ``get`` method, it will be used to + handle ``GET`` requests. + + This can be useful for defining a REST API. + + :attr:`methods` is automatically set based on the methods defined on + the class. + + See :doc:`views` for a detailed guide. + + .. code-block:: python + + class CounterAPI(MethodView): + def get(self): + return str(session.get("counter", 0)) + + def post(self): + session["counter"] = session.get("counter", 0) + 1 + return redirect(url_for("counter")) + + app.add_url_rule( + "/counter", view_func=CounterAPI.as_view("counter") + ) + """ + + def __init_subclass__(cls, **kwargs: t.Any) -> None: + super().__init_subclass__(**kwargs) + + if "methods" not in cls.__dict__: + methods = set() + + for base in cls.__bases__: + if getattr(base, "methods", None): + methods.update(base.methods) # type: ignore[attr-defined] + + for key in http_method_funcs: + if hasattr(cls, key): + methods.add(key.upper()) + + if methods: + cls.methods = methods + + def dispatch_request(self, **kwargs: t.Any) -> ft.ResponseReturnValue: + meth = getattr(self, request.method.lower(), None) + + # If the request method is HEAD and we don't have a handler for it + # retry with GET. + if meth is None and request.method == "HEAD": + meth = getattr(self, "get", None) + + assert meth is not None, f"Unimplemented method {request.method!r}" + return current_app.ensure_sync(meth)(**kwargs) # type: ignore[no-any-return] diff --git a/venv/lib/python3.12/site-packages/flask/wrappers.py b/venv/lib/python3.12/site-packages/flask/wrappers.py new file mode 100644 index 0000000..c1eca80 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask/wrappers.py @@ -0,0 +1,174 @@ +from __future__ import annotations + +import typing as t + +from werkzeug.exceptions import BadRequest +from werkzeug.exceptions import HTTPException +from werkzeug.wrappers import Request as RequestBase +from werkzeug.wrappers import Response as ResponseBase + +from . import json +from .globals import current_app +from .helpers import _split_blueprint_path + +if t.TYPE_CHECKING: # pragma: no cover + from werkzeug.routing import Rule + + +class Request(RequestBase): + """The request object used by default in Flask. Remembers the + matched endpoint and view arguments. + + It is what ends up as :class:`~flask.request`. If you want to replace + the request object used you can subclass this and set + :attr:`~flask.Flask.request_class` to your subclass. + + The request object is a :class:`~werkzeug.wrappers.Request` subclass and + provides all of the attributes Werkzeug defines plus a few Flask + specific ones. + """ + + json_module: t.Any = json + + #: The internal URL rule that matched the request. This can be + #: useful to inspect which methods are allowed for the URL from + #: a before/after handler (``request.url_rule.methods``) etc. + #: Though if the request's method was invalid for the URL rule, + #: the valid list is available in ``routing_exception.valid_methods`` + #: instead (an attribute of the Werkzeug exception + #: :exc:`~werkzeug.exceptions.MethodNotAllowed`) + #: because the request was never internally bound. + #: + #: .. versionadded:: 0.6 + url_rule: Rule | None = None + + #: A dict of view arguments that matched the request. If an exception + #: happened when matching, this will be ``None``. + view_args: dict[str, t.Any] | None = None + + #: If matching the URL failed, this is the exception that will be + #: raised / was raised as part of the request handling. This is + #: usually a :exc:`~werkzeug.exceptions.NotFound` exception or + #: something similar. + routing_exception: HTTPException | None = None + + @property + def max_content_length(self) -> int | None: # type: ignore[override] + """Read-only view of the ``MAX_CONTENT_LENGTH`` config key.""" + if current_app: + return current_app.config["MAX_CONTENT_LENGTH"] # type: ignore[no-any-return] + else: + return None + + @property + def endpoint(self) -> str | None: + """The endpoint that matched the request URL. + + This will be ``None`` if matching failed or has not been + performed yet. + + This in combination with :attr:`view_args` can be used to + reconstruct the same URL or a modified URL. + """ + if self.url_rule is not None: + return self.url_rule.endpoint + + return None + + @property + def blueprint(self) -> str | None: + """The registered name of the current blueprint. + + This will be ``None`` if the endpoint is not part of a + blueprint, or if URL matching failed or has not been performed + yet. + + This does not necessarily match the name the blueprint was + created with. It may have been nested, or registered with a + different name. + """ + endpoint = self.endpoint + + if endpoint is not None and "." in endpoint: + return endpoint.rpartition(".")[0] + + return None + + @property + def blueprints(self) -> list[str]: + """The registered names of the current blueprint upwards through + parent blueprints. + + This will be an empty list if there is no current blueprint, or + if URL matching failed. + + .. versionadded:: 2.0.1 + """ + name = self.blueprint + + if name is None: + return [] + + return _split_blueprint_path(name) + + def _load_form_data(self) -> None: + super()._load_form_data() + + # In debug mode we're replacing the files multidict with an ad-hoc + # subclass that raises a different error for key errors. + if ( + current_app + and current_app.debug + and self.mimetype != "multipart/form-data" + and not self.files + ): + from .debughelpers import attach_enctype_error_multidict + + attach_enctype_error_multidict(self) + + def on_json_loading_failed(self, e: ValueError | None) -> t.Any: + try: + return super().on_json_loading_failed(e) + except BadRequest as e: + if current_app and current_app.debug: + raise + + raise BadRequest() from e + + +class Response(ResponseBase): + """The response object that is used by default in Flask. Works like the + response object from Werkzeug but is set to have an HTML mimetype by + default. Quite often you don't have to create this object yourself because + :meth:`~flask.Flask.make_response` will take care of that for you. + + If you want to replace the response object used you can subclass this and + set :attr:`~flask.Flask.response_class` to your subclass. + + .. versionchanged:: 1.0 + JSON support is added to the response, like the request. This is useful + when testing to get the test client response data as JSON. + + .. versionchanged:: 1.0 + + Added :attr:`max_cookie_size`. + """ + + default_mimetype: str | None = "text/html" + + json_module = json + + autocorrect_location_header = False + + @property + def max_cookie_size(self) -> int: # type: ignore + """Read-only view of the :data:`MAX_COOKIE_SIZE` config key. + + See :attr:`~werkzeug.wrappers.Response.max_cookie_size` in + Werkzeug's docs. + """ + if current_app: + return current_app.config["MAX_COOKIE_SIZE"] # type: ignore[no-any-return] + + # return Werkzeug's default when not in an app context + return super().max_cookie_size diff --git a/venv/lib/python3.12/site-packages/flask_socketio/__init__.py b/venv/lib/python3.12/site-packages/flask_socketio/__init__.py new file mode 100644 index 0000000..c065ae3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask_socketio/__init__.py @@ -0,0 +1,1117 @@ +from functools import wraps +import os +import sys + +# make sure gevent-socketio is not installed, as it conflicts with +# python-socketio +gevent_socketio_found = True +try: + from socketio import socketio_manage # noqa: F401 +except ImportError: + gevent_socketio_found = False +if gevent_socketio_found: + print('The gevent-socketio package is incompatible with this version of ' + 'the Flask-SocketIO extension. Please uninstall it, and then ' + 'install the latest version of python-socketio in its place.') + sys.exit(1) + +import flask +from flask import has_request_context, json as flask_json +from flask.sessions import SessionMixin +import socketio +from socketio.exceptions import ConnectionRefusedError # noqa: F401 +from werkzeug.debug import DebuggedApplication +from werkzeug._reloader import run_with_reloader + +from .namespace import Namespace +from .test_client import SocketIOTestClient + + +class _SocketIOMiddleware(socketio.WSGIApp): + """This WSGI middleware simply exposes the Flask application in the WSGI + environment before executing the request. + """ + def __init__(self, socketio_app, flask_app, socketio_path='socket.io'): + self.flask_app = flask_app + super(_SocketIOMiddleware, self).__init__(socketio_app, + flask_app.wsgi_app, + socketio_path=socketio_path) + + def __call__(self, environ, start_response): + environ = environ.copy() + environ['flask.app'] = self.flask_app + return super(_SocketIOMiddleware, self).__call__(environ, + start_response) + + +class _ManagedSession(dict, SessionMixin): + """This class is used for user sessions that are managed by + Flask-SocketIO. It is simple dict, expanded with the Flask session + attributes.""" + pass + + +class SocketIO(object): + """Create a Flask-SocketIO server. + + :param app: The flask application instance. If the application instance + isn't known at the time this class is instantiated, then call + ``socketio.init_app(app)`` once the application instance is + available. + :param manage_session: If set to ``True``, this extension manages the user + session for Socket.IO events. If set to ``False``, + Flask's own session management is used. When using + Flask's cookie based sessions it is recommended that + you leave this set to the default of ``True``. When + using server-side sessions, a ``False`` setting + enables sharing the user session between HTTP routes + and Socket.IO events. + :param message_queue: A connection URL for a message queue service the + server can use for multi-process communication. A + message queue is not required when using a single + server process. + :param channel: The channel name, when using a message queue. If a channel + isn't specified, a default channel will be used. If + multiple clusters of SocketIO processes need to use the + same message queue without interfering with each other, + then each cluster should use a different channel. + :param path: The path where the Socket.IO server is exposed. Defaults to + ``'socket.io'``. Leave this as is unless you know what you are + doing. + :param resource: Alias to ``path``. + :param kwargs: Socket.IO and Engine.IO server options. + + The Socket.IO server options are detailed below: + + :param client_manager: The client manager instance that will manage the + client list. When this is omitted, the client list + is stored in an in-memory structure, so the use of + multiple connected servers is not possible. In most + cases, this argument does not need to be set + explicitly. + :param logger: To enable logging set to ``True`` or pass a logger object to + use. To disable logging set to ``False``. The default is + ``False``. Note that fatal errors will be logged even when + ``logger`` is ``False``. + :param json: An alternative json module to use for encoding and decoding + packets. Custom json modules must have ``dumps`` and ``loads`` + functions that are compatible with the standard library + versions. To use the same json encoder and decoder as a Flask + application, use ``flask.json``. + :param async_handlers: If set to ``True``, event handlers for a client are + executed in separate threads. To run handlers for a + client synchronously, set to ``False``. The default + is ``True``. + :param always_connect: When set to ``False``, new connections are + provisory until the connect handler returns + something other than ``False``, at which point they + are accepted. When set to ``True``, connections are + immediately accepted, and then if the connect + handler returns ``False`` a disconnect is issued. + Set to ``True`` if you need to emit events from the + connect handler and your client is confused when it + receives events before the connection acceptance. + In any other case use the default of ``False``. + + The Engine.IO server configuration supports the following settings: + + :param async_mode: The asynchronous model to use. See the Deployment + section in the documentation for a description of the + available options. Valid async modes are ``threading``, + ``eventlet``, ``gevent`` and ``gevent_uwsgi``. If this + argument is not given, ``eventlet`` is tried first, then + ``gevent_uwsgi``, then ``gevent``, and finally + ``threading``. The first async mode that has all its + dependencies installed is then one that is chosen. + :param ping_interval: The interval in seconds at which the server pings + the client. The default is 25 seconds. For advanced + control, a two element tuple can be given, where + the first number is the ping interval and the second + is a grace period added by the server. + :param ping_timeout: The time in seconds that the client waits for the + server to respond before disconnecting. The default + is 5 seconds. + :param max_http_buffer_size: The maximum size of a message when using the + polling transport. The default is 1,000,000 + bytes. + :param allow_upgrades: Whether to allow transport upgrades or not. The + default is ``True``. + :param http_compression: Whether to compress packages when using the + polling transport. The default is ``True``. + :param compression_threshold: Only compress messages when their byte size + is greater than this value. The default is + 1024 bytes. + :param cookie: If set to a string, it is the name of the HTTP cookie the + server sends back to the client containing the client + session id. If set to a dictionary, the ``'name'`` key + contains the cookie name and other keys define cookie + attributes, where the value of each attribute can be a + string, a callable with no arguments, or a boolean. If set + to ``None`` (the default), a cookie is not sent to the + client. + :param cors_allowed_origins: Origin or list of origins that are allowed to + connect to this server. Only the same origin + is allowed by default. Set this argument to + ``'*'`` to allow all origins, or to ``[]`` to + disable CORS handling. + :param cors_credentials: Whether credentials (cookies, authentication) are + allowed in requests to this server. The default is + ``True``. + :param monitor_clients: If set to ``True``, a background task will ensure + inactive clients are closed. Set to ``False`` to + disable the monitoring task (not recommended). The + default is ``True``. + :param engineio_logger: To enable Engine.IO logging set to ``True`` or pass + a logger object to use. To disable logging set to + ``False``. The default is ``False``. Note that + fatal errors are logged even when + ``engineio_logger`` is ``False``. + """ + + def __init__(self, app=None, **kwargs): + self.server = None + self.server_options = {} + self.wsgi_server = None + self.handlers = [] + self.namespace_handlers = [] + self.exception_handlers = {} + self.default_exception_handler = None + self.manage_session = True + # We can call init_app when: + # - we were given the Flask app instance (standard initialization) + # - we were not given the app, but we were given a message_queue + # (standard initialization for auxiliary process) + # In all other cases we collect the arguments and assume the client + # will call init_app from an app factory function. + if app is not None or 'message_queue' in kwargs: + self.init_app(app, **kwargs) + else: + self.server_options.update(kwargs) + + def init_app(self, app, **kwargs): + if app is not None: + if not hasattr(app, 'extensions'): + app.extensions = {} # pragma: no cover + app.extensions['socketio'] = self + self.server_options.update(kwargs) + self.manage_session = self.server_options.pop('manage_session', + self.manage_session) + + if 'client_manager' not in kwargs: + url = self.server_options.get('message_queue', None) + channel = self.server_options.pop('channel', 'flask-socketio') + write_only = app is None + if url: + if url.startswith(('redis://', "rediss://")): + queue_class = socketio.RedisManager + elif url.startswith(('kafka://')): + queue_class = socketio.KafkaManager + elif url.startswith('zmq'): + queue_class = socketio.ZmqManager + else: + queue_class = socketio.KombuManager + queue = queue_class(url, channel=channel, + write_only=write_only) + self.server_options['client_manager'] = queue + + if 'json' in self.server_options and \ + self.server_options['json'] == flask_json: + # flask's json module is tricky to use because its output + # changes when it is invoked inside or outside the app context + # so here to prevent any ambiguities we replace it with wrappers + # that ensure that the app context is always present + class FlaskSafeJSON(object): + @staticmethod + def dumps(*args, **kwargs): + with app.app_context(): + return flask_json.dumps(*args, **kwargs) + + @staticmethod + def loads(*args, **kwargs): + with app.app_context(): + return flask_json.loads(*args, **kwargs) + + self.server_options['json'] = FlaskSafeJSON + + resource = self.server_options.pop('path', None) or \ + self.server_options.pop('resource', None) or 'socket.io' + if resource.startswith('/'): + resource = resource[1:] + if os.environ.get('FLASK_RUN_FROM_CLI'): + if self.server_options.get('async_mode') is None: + self.server_options['async_mode'] = 'threading' + self.server = socketio.Server(**self.server_options) + self.async_mode = self.server.async_mode + for handler in self.handlers: + self.server.on(handler[0], handler[1], namespace=handler[2]) + for namespace_handler in self.namespace_handlers: + self.server.register_namespace(namespace_handler) + + if app is not None: + # here we attach the SocketIO middleware to the SocketIO object so + # it can be referenced later if debug middleware needs to be + # inserted + self.sockio_mw = _SocketIOMiddleware(self.server, app, + socketio_path=resource) + app.wsgi_app = self.sockio_mw + + def on(self, message, namespace=None): + """Decorator to register a SocketIO event handler. + + This decorator must be applied to SocketIO event handlers. Example:: + + @socketio.on('my event', namespace='/chat') + def handle_my_custom_event(json): + print('received json: ' + str(json)) + + :param message: The name of the event. This is normally a user defined + string, but a few event names are already defined. Use + ``'message'`` to define a handler that takes a string + payload, ``'json'`` to define a handler that takes a + JSON blob payload, ``'connect'`` or ``'disconnect'`` + to create handlers for connection and disconnection + events. + :param namespace: The namespace on which the handler is to be + registered. Defaults to the global namespace. + """ + namespace = namespace or '/' + + def decorator(handler): + @wraps(handler) + def _handler(sid, *args): + return self._handle_event(handler, message, namespace, sid, + *args) + + if self.server: + self.server.on(message, _handler, namespace=namespace) + else: + self.handlers.append((message, _handler, namespace)) + return handler + return decorator + + def on_error(self, namespace=None): + """Decorator to define a custom error handler for SocketIO events. + + This decorator can be applied to a function that acts as an error + handler for a namespace. This handler will be invoked when a SocketIO + event handler raises an exception. The handler function must accept one + argument, which is the exception raised. Example:: + + @socketio.on_error(namespace='/chat') + def chat_error_handler(e): + print('An error has occurred: ' + str(e)) + + :param namespace: The namespace for which to register the error + handler. Defaults to the global namespace. + """ + namespace = namespace or '/' + + def decorator(exception_handler): + if not callable(exception_handler): + raise ValueError('exception_handler must be callable') + self.exception_handlers[namespace] = exception_handler + return exception_handler + return decorator + + def on_error_default(self, exception_handler): + """Decorator to define a default error handler for SocketIO events. + + This decorator can be applied to a function that acts as a default + error handler for any namespaces that do not have a specific handler. + Example:: + + @socketio.on_error_default + def error_handler(e): + print('An error has occurred: ' + str(e)) + """ + if not callable(exception_handler): + raise ValueError('exception_handler must be callable') + self.default_exception_handler = exception_handler + return exception_handler + + def on_event(self, message, handler, namespace=None): + """Register a SocketIO event handler. + + ``on_event`` is the non-decorator version of ``'on'``. + + Example:: + + def on_foo_event(json): + print('received json: ' + str(json)) + + socketio.on_event('my event', on_foo_event, namespace='/chat') + + :param message: The name of the event. This is normally a user defined + string, but a few event names are already defined. Use + ``'message'`` to define a handler that takes a string + payload, ``'json'`` to define a handler that takes a + JSON blob payload, ``'connect'`` or ``'disconnect'`` + to create handlers for connection and disconnection + events. + :param handler: The function that handles the event. + :param namespace: The namespace on which the handler is to be + registered. Defaults to the global namespace. + """ + self.on(message, namespace=namespace)(handler) + + def event(self, *args, **kwargs): + """Decorator to register an event handler. + + This is a simplified version of the ``on()`` method that takes the + event name from the decorated function. + + Example usage:: + + @socketio.event + def my_event(data): + print('Received data: ', data) + + The above example is equivalent to:: + + @socketio.on('my_event') + def my_event(data): + print('Received data: ', data) + + A custom namespace can be given as an argument to the decorator:: + + @socketio.event(namespace='/test') + def my_event(data): + print('Received data: ', data) + """ + if len(args) == 1 and len(kwargs) == 0 and callable(args[0]): + # the decorator was invoked without arguments + # args[0] is the decorated function + return self.on(args[0].__name__)(args[0]) + else: + # the decorator was invoked with arguments + def set_handler(handler): + return self.on(handler.__name__, *args, **kwargs)(handler) + + return set_handler + + def on_namespace(self, namespace_handler): + if not isinstance(namespace_handler, Namespace): + raise ValueError('Not a namespace instance.') + namespace_handler._set_socketio(self) + if self.server: + self.server.register_namespace(namespace_handler) + else: + self.namespace_handlers.append(namespace_handler) + + def emit(self, event, *args, **kwargs): + """Emit a server generated SocketIO event. + + This function emits a SocketIO event to one or more connected clients. + A JSON blob can be attached to the event as payload. This function can + be used outside of a SocketIO event context, so it is appropriate to + use when the server is the originator of an event, outside of any + client context, such as in a regular HTTP request handler or a + background task. Example:: + + @app.route('/ping') + def ping(): + socketio.emit('ping event', {'data': 42}, namespace='/chat') + + :param event: The name of the user event to emit. + :param args: A dictionary with the JSON data to send as payload. + :param namespace: The namespace under which the message is to be sent. + Defaults to the global namespace. + :param to: Send the message to all the users in the given room, or to + the user with the given session ID. If this parameter is not + included, the event is sent to all connected users. + :param include_self: ``True`` to include the sender when broadcasting + or addressing a room, or ``False`` to send to + everyone but the sender. + :param skip_sid: The session id of a client to ignore when broadcasting + or addressing a room. This is typically set to the + originator of the message, so that everyone except + that client receive the message. To skip multiple sids + pass a list. + :param callback: If given, this function will be called to acknowledge + that the client has received the message. The + arguments that will be passed to the function are + those provided by the client. Callback functions can + only be used when addressing an individual client. + """ + namespace = kwargs.pop('namespace', '/') + to = kwargs.pop('to', None) or kwargs.pop('room', None) + include_self = kwargs.pop('include_self', True) + skip_sid = kwargs.pop('skip_sid', None) + if not include_self and not skip_sid: + skip_sid = flask.request.sid + callback = kwargs.pop('callback', None) + if callback: + # wrap the callback so that it sets app app and request contexts + sid = None + original_callback = callback + original_namespace = namespace + if has_request_context(): + sid = getattr(flask.request, 'sid', None) + original_namespace = getattr(flask.request, 'namespace', None) + + def _callback_wrapper(*args): + return self._handle_event(original_callback, None, + original_namespace, sid, *args) + + if sid: + # the callback wrapper above will install a request context + # before invoking the original callback + # we only use it if the emit was issued from a Socket.IO + # populated request context (i.e. request.sid is defined) + callback = _callback_wrapper + self.server.emit(event, *args, namespace=namespace, to=to, + skip_sid=skip_sid, callback=callback, **kwargs) + + def call(self, event, *args, **kwargs): # pragma: no cover + """Emit a SocketIO event and wait for the response. + + This method issues an emit with a callback and waits for the callback + to be invoked by the client before returning. If the callback isn’t + invoked before the timeout, then a TimeoutError exception is raised. If + the Socket.IO connection drops during the wait, this method still waits + until the specified timeout. Example:: + + def get_status(client, data): + status = call('status', {'data': data}, to=client) + + :param event: The name of the user event to emit. + :param args: A dictionary with the JSON data to send as payload. + :param namespace: The namespace under which the message is to be sent. + Defaults to the global namespace. + :param to: The session ID of the recipient client. + :param timeout: The waiting timeout. If the timeout is reached before + the client acknowledges the event, then a + ``TimeoutError`` exception is raised. The default is 60 + seconds. + :param ignore_queue: Only used when a message queue is configured. If + set to ``True``, the event is emitted to the + client directly, without going through the queue. + This is more efficient, but only works when a + single server process is used, or when there is a + single addressee. It is recommended to always + leave this parameter with its default value of + ``False``. + """ + namespace = kwargs.pop('namespace', '/') + to = kwargs.pop('to', None) or kwargs.pop('room', None) + return self.server.call(event, *args, namespace=namespace, to=to, + **kwargs) + + def send(self, data, json=False, namespace=None, to=None, + callback=None, include_self=True, skip_sid=None, **kwargs): + """Send a server-generated SocketIO message. + + This function sends a simple SocketIO message to one or more connected + clients. The message can be a string or a JSON blob. This is a simpler + version of ``emit()``, which should be preferred. This function can be + used outside of a SocketIO event context, so it is appropriate to use + when the server is the originator of an event. + + :param data: The message to send, either a string or a JSON blob. + :param json: ``True`` if ``message`` is a JSON blob, ``False`` + otherwise. + :param namespace: The namespace under which the message is to be sent. + Defaults to the global namespace. + :param to: Send the message to all the users in the given room, or to + the user with the given session ID. If this parameter is not + included, the event is sent to all connected users. + :param include_self: ``True`` to include the sender when broadcasting + or addressing a room, or ``False`` to send to + everyone but the sender. + :param skip_sid: The session id of a client to ignore when broadcasting + or addressing a room. This is typically set to the + originator of the message, so that everyone except + that client receive the message. To skip multiple sids + pass a list. + :param callback: If given, this function will be called to acknowledge + that the client has received the message. The + arguments that will be passed to the function are + those provided by the client. Callback functions can + only be used when addressing an individual client. + """ + skip_sid = flask.request.sid if not include_self else skip_sid + if json: + self.emit('json', data, namespace=namespace, to=to, + skip_sid=skip_sid, callback=callback, **kwargs) + else: + self.emit('message', data, namespace=namespace, to=to, + skip_sid=skip_sid, callback=callback, **kwargs) + + def close_room(self, room, namespace=None): + """Close a room. + + This function removes any users that are in the given room and then + deletes the room from the server. This function can be used outside + of a SocketIO event context. + + :param room: The name of the room to close. + :param namespace: The namespace under which the room exists. Defaults + to the global namespace. + """ + self.server.close_room(room, namespace) + + def run(self, app, host=None, port=None, **kwargs): # pragma: no cover + """Run the SocketIO web server. + + :param app: The Flask application instance. + :param host: The hostname or IP address for the server to listen on. + Defaults to 127.0.0.1. + :param port: The port number for the server to listen on. Defaults to + 5000. + :param debug: ``True`` to start the server in debug mode, ``False`` to + start in normal mode. + :param use_reloader: ``True`` to enable the Flask reloader, ``False`` + to disable it. + :param reloader_options: A dictionary with options that are passed to + the Flask reloader, such as ``extra_files``, + ``reloader_type``, etc. + :param extra_files: A list of additional files that the Flask + reloader should watch. Defaults to ``None``. + Deprecated, use ``reloader_options`` instead. + :param log_output: If ``True``, the server logs all incoming + connections. If ``False`` logging is disabled. + Defaults to ``True`` in debug mode, ``False`` + in normal mode. Unused when the threading async + mode is used. + :param allow_unsafe_werkzeug: Set to ``True`` to allow the use of the + Werkzeug web server in a production + setting. Default is ``False``. Set to + ``True`` at your own risk. + :param kwargs: Additional web server options. The web server options + are specific to the server used in each of the supported + async modes. Note that options provided here will + not be seen when using an external web server such + as gunicorn, since this method is not called in that + case. + """ + if host is None: + host = '127.0.0.1' + if port is None: + server_name = app.config['SERVER_NAME'] + if server_name and ':' in server_name: + port = int(server_name.rsplit(':', 1)[1]) + else: + port = 5000 + + debug = kwargs.pop('debug', app.debug) + log_output = kwargs.pop('log_output', debug) + use_reloader = kwargs.pop('use_reloader', debug) + extra_files = kwargs.pop('extra_files', None) + reloader_options = kwargs.pop('reloader_options', {}) + if extra_files: + reloader_options['extra_files'] = extra_files + + app.debug = debug + if app.debug and self.server.eio.async_mode != 'threading': + # put the debug middleware between the SocketIO middleware + # and the Flask application instance + # + # mw1 mw2 mw3 Flask app + # o ---- o ---- o ---- o + # / + # o Flask-SocketIO + # \ middleware + # o + # Flask-SocketIO WebSocket handler + # + # BECOMES + # + # dbg-mw mw1 mw2 mw3 Flask app + # o ---- o ---- o ---- o ---- o + # / + # o Flask-SocketIO + # \ middleware + # o + # Flask-SocketIO WebSocket handler + # + self.sockio_mw.wsgi_app = DebuggedApplication( + self.sockio_mw.wsgi_app, evalex=True) + + allow_unsafe_werkzeug = kwargs.pop('allow_unsafe_werkzeug', False) + if self.server.eio.async_mode == 'threading': + try: + import simple_websocket # noqa: F401 + except ImportError: + from werkzeug._internal import _log + _log('warning', 'WebSocket transport not available. Install ' + 'simple-websocket for improved performance.') + if not sys.stdin or not sys.stdin.isatty(): # pragma: no cover + if not allow_unsafe_werkzeug: + raise RuntimeError('The Werkzeug web server is not ' + 'designed to run in production. Pass ' + 'allow_unsafe_werkzeug=True to the ' + 'run() method to disable this error.') + else: + from werkzeug._internal import _log + _log('warning', ('Werkzeug appears to be used in a ' + 'production deployment. Consider ' + 'switching to a production web server ' + 'instead.')) + app.run(host=host, port=port, threaded=True, + use_reloader=use_reloader, **reloader_options, **kwargs) + elif self.server.eio.async_mode == 'eventlet': + def run_server(): + import eventlet + import eventlet.wsgi + import eventlet.green + addresses = eventlet.green.socket.getaddrinfo(host, port) + if not addresses: + raise RuntimeError( + 'Could not resolve host to a valid address') + eventlet_socket = eventlet.listen(addresses[0][4], + addresses[0][0]) + + # If provided an SSL argument, use an SSL socket + ssl_args = ['keyfile', 'certfile', 'server_side', 'cert_reqs', + 'ssl_version', 'ca_certs', + 'do_handshake_on_connect', 'suppress_ragged_eofs', + 'ciphers'] + ssl_params = {k: kwargs[k] for k in kwargs + if k in ssl_args and kwargs[k] is not None} + for k in ssl_args: + kwargs.pop(k, None) + if len(ssl_params) > 0: + ssl_params['server_side'] = True # Listening requires true + eventlet_socket = eventlet.wrap_ssl(eventlet_socket, + **ssl_params) + + eventlet.wsgi.server(eventlet_socket, app, + log_output=log_output, **kwargs) + + if use_reloader: + run_with_reloader(run_server, **reloader_options) + else: + run_server() + elif self.server.eio.async_mode == 'gevent': + from gevent import pywsgi + try: + from geventwebsocket.handler import WebSocketHandler + websocket = True + except ImportError: + app.logger.warning( + 'WebSocket transport not available. Install ' + 'gevent-websocket for improved performance.') + websocket = False + + log = 'default' + if not log_output: + log = None + if websocket: + self.wsgi_server = pywsgi.WSGIServer( + (host, port), app, handler_class=WebSocketHandler, + log=log, **kwargs) + else: + self.wsgi_server = pywsgi.WSGIServer((host, port), app, + log=log, **kwargs) + + if use_reloader: + # monkey patching is required by the reloader + from gevent import monkey + monkey.patch_thread() + monkey.patch_time() + + def run_server(): + self.wsgi_server.serve_forever() + + run_with_reloader(run_server, **reloader_options) + else: + self.wsgi_server.serve_forever() + + def stop(self): + """Stop a running SocketIO web server. + + This method must be called from a HTTP or SocketIO handler function. + """ + if self.server.eio.async_mode == 'threading': + func = flask.request.environ.get('werkzeug.server.shutdown') + if func: + func() + else: + raise RuntimeError('Cannot stop unknown web server') + elif self.server.eio.async_mode == 'eventlet': + raise SystemExit + elif self.server.eio.async_mode == 'gevent': + self.wsgi_server.stop() + + def start_background_task(self, target, *args, **kwargs): + """Start a background task using the appropriate async model. + + This is a utility function that applications can use to start a + background task using the method that is compatible with the + selected async mode. + + :param target: the target function to execute. + :param args: arguments to pass to the function. + :param kwargs: keyword arguments to pass to the function. + + This function returns an object that represents the background task, + on which the ``join()`` method can be invoked to wait for the task to + complete. + """ + return self.server.start_background_task(target, *args, **kwargs) + + def sleep(self, seconds=0): + """Sleep for the requested amount of time using the appropriate async + model. + + This is a utility function that applications can use to put a task to + sleep without having to worry about using the correct call for the + selected async mode. + """ + return self.server.sleep(seconds) + + def test_client(self, app, namespace=None, query_string=None, + headers=None, auth=None, flask_test_client=None): + """The Socket.IO test client is useful for testing a Flask-SocketIO + server. It works in a similar way to the Flask Test Client, but + adapted to the Socket.IO server. + + :param app: The Flask application instance. + :param namespace: The namespace for the client. If not provided, the + client connects to the server on the global + namespace. + :param query_string: A string with custom query string arguments. + :param headers: A dictionary with custom HTTP headers. + :param auth: Optional authentication data, given as a dictionary. + :param flask_test_client: The instance of the Flask test client + currently in use. Passing the Flask test + client is optional, but is necessary if you + want the Flask user session and any other + cookies set in HTTP routes accessible from + Socket.IO events. + """ + return SocketIOTestClient(app, self, namespace=namespace, + query_string=query_string, headers=headers, + auth=auth, + flask_test_client=flask_test_client) + + def _handle_event(self, handler, message, namespace, sid, *args): + environ = self.server.get_environ(sid, namespace=namespace) + if not environ: + # we don't have record of this client, ignore this event + return '', 400 + app = environ['flask.app'] + with app.request_context(environ): + if self.manage_session: + # manage a separate session for this client's Socket.IO events + # created as a copy of the regular user session + if 'saved_session' not in environ: + environ['saved_session'] = _ManagedSession(flask.session) + session_obj = environ['saved_session'] + if hasattr(flask, 'globals') and \ + hasattr(flask.globals, 'request_ctx'): + # update session for Flask >= 2.2 + ctx = flask.globals.request_ctx._get_current_object() + else: # pragma: no cover + # update session for Flask < 2.2 + ctx = flask._request_ctx_stack.top + ctx.session = session_obj + else: + # let Flask handle the user session + # for cookie based sessions, this effectively freezes the + # session to its state at connection time + # for server-side sessions, this allows HTTP and Socket.IO to + # share the session, with both having read/write access to it + session_obj = flask.session._get_current_object() + flask.request.sid = sid + flask.request.namespace = namespace + flask.request.event = {'message': message, 'args': args} + try: + if message == 'connect': + auth = args[1] if len(args) > 1 else None + try: + ret = handler(auth) + except TypeError: + ret = handler() + else: + ret = handler(*args) + except ConnectionRefusedError: + raise # let this error bubble up to python-socketio + except: + err_handler = self.exception_handlers.get( + namespace, self.default_exception_handler) + if err_handler is None: + raise + type, value, traceback = sys.exc_info() + return err_handler(value) + if not self.manage_session: + # when Flask is managing the user session, it needs to save it + if not hasattr(session_obj, 'modified') or \ + session_obj.modified: + resp = app.response_class() + app.session_interface.save_session(app, session_obj, resp) + return ret + + +def emit(event, *args, **kwargs): + """Emit a SocketIO event. + + This function emits a SocketIO event to one or more connected clients. A + JSON blob can be attached to the event as payload. This is a function that + can only be called from a SocketIO event handler, as in obtains some + information from the current client context. Example:: + + @socketio.on('my event') + def handle_my_custom_event(json): + emit('my response', {'data': 42}) + + :param event: The name of the user event to emit. + :param args: A dictionary with the JSON data to send as payload. + :param namespace: The namespace under which the message is to be sent. + Defaults to the namespace used by the originating event. + A ``'/'`` can be used to explicitly specify the global + namespace. + :param callback: Callback function to invoke with the client's + acknowledgement. + :param broadcast: ``True`` to send the message to all clients, or ``False`` + to only reply to the sender of the originating event. + :param to: Send the message to all the users in the given room, or to the + user with the given session ID. If this argument is not set and + ``broadcast`` is ``False``, then the message is sent only to the + originating user. + :param include_self: ``True`` to include the sender when broadcasting or + addressing a room, or ``False`` to send to everyone + but the sender. + :param skip_sid: The session id of a client to ignore when broadcasting + or addressing a room. This is typically set to the + originator of the message, so that everyone except + that client receive the message. To skip multiple sids + pass a list. + :param ignore_queue: Only used when a message queue is configured. If + set to ``True``, the event is emitted to the + clients directly, without going through the queue. + This is more efficient, but only works when a + single server process is used, or when there is a + single addressee. It is recommended to always leave + this parameter with its default value of ``False``. + """ + if 'namespace' in kwargs: + namespace = kwargs['namespace'] + else: + namespace = flask.request.namespace + callback = kwargs.get('callback') + broadcast = kwargs.get('broadcast') + to = kwargs.pop('to', None) or kwargs.pop('room', None) + if to is None and not broadcast: + to = flask.request.sid + include_self = kwargs.get('include_self', True) + skip_sid = kwargs.get('skip_sid') + ignore_queue = kwargs.get('ignore_queue', False) + + socketio = flask.current_app.extensions['socketio'] + return socketio.emit(event, *args, namespace=namespace, to=to, + include_self=include_self, skip_sid=skip_sid, + callback=callback, ignore_queue=ignore_queue) + + +def call(event, *args, **kwargs): # pragma: no cover + """Emit a SocketIO event and wait for the response. + + This function issues an emit with a callback and waits for the callback to + be invoked by the client before returning. If the callback isn’t invoked + before the timeout, then a TimeoutError exception is raised. If the + Socket.IO connection drops during the wait, this method still waits until + the specified timeout. Example:: + + def get_status(client, data): + status = call('status', {'data': data}, to=client) + + :param event: The name of the user event to emit. + :param args: A dictionary with the JSON data to send as payload. + :param namespace: The namespace under which the message is to be sent. + Defaults to the namespace used by the originating event. + A ``'/'`` can be used to explicitly specify the global + namespace. + :param to: The session ID of the recipient client. If this argument is not + given, the event is sent to the originating client. + :param timeout: The waiting timeout. If the timeout is reached before the + client acknowledges the event, then a ``TimeoutError`` + exception is raised. The default is 60 seconds. + :param ignore_queue: Only used when a message queue is configured. If + set to ``True``, the event is emitted to the + client directly, without going through the queue. + This is more efficient, but only works when a + single server process is used, or when there is a + single addressee. It is recommended to always leave + this parameter with its default value of ``False``. + """ + if 'namespace' in kwargs: + namespace = kwargs['namespace'] + else: + namespace = flask.request.namespace + to = kwargs.pop('to', None) or kwargs.pop('room', None) + if to is None: + to = flask.request.sid + timeout = kwargs.get('timeout', 60) + ignore_queue = kwargs.get('ignore_queue', False) + + socketio = flask.current_app.extensions['socketio'] + return socketio.call(event, *args, namespace=namespace, to=to, + ignore_queue=ignore_queue, timeout=timeout) + + +def send(message, **kwargs): + """Send a SocketIO message. + + This function sends a simple SocketIO message to one or more connected + clients. The message can be a string or a JSON blob. This is a simpler + version of ``emit()``, which should be preferred. This is a function that + can only be called from a SocketIO event handler. + + :param message: The message to send, either a string or a JSON blob. + :param json: ``True`` if ``message`` is a JSON blob, ``False`` + otherwise. + :param namespace: The namespace under which the message is to be sent. + Defaults to the namespace used by the originating event. + An empty string can be used to use the global namespace. + :param callback: Callback function to invoke with the client's + acknowledgement. + :param broadcast: ``True`` to send the message to all connected clients, or + ``False`` to only reply to the sender of the originating + event. + :param to: Send the message to all the users in the given room, or to the + user with the given session ID. If this argument is not set and + ``broadcast`` is ``False``, then the message is sent only to the + originating user. + :param include_self: ``True`` to include the sender when broadcasting or + addressing a room, or ``False`` to send to everyone + but the sender. + :param skip_sid: The session id of a client to ignore when broadcasting + or addressing a room. This is typically set to the + originator of the message, so that everyone except + that client receive the message. To skip multiple sids + pass a list. + :param ignore_queue: Only used when a message queue is configured. If + set to ``True``, the event is emitted to the + clients directly, without going through the queue. + This is more efficient, but only works when a + single server process is used, or when there is a + single addressee. It is recommended to always leave + this parameter with its default value of ``False``. + """ + json = kwargs.get('json', False) + if 'namespace' in kwargs: + namespace = kwargs['namespace'] + else: + namespace = flask.request.namespace + callback = kwargs.get('callback') + broadcast = kwargs.get('broadcast') + to = kwargs.pop('to', None) or kwargs.pop('room', None) + if to is None and not broadcast: + to = flask.request.sid + include_self = kwargs.get('include_self', True) + skip_sid = kwargs.get('skip_sid') + ignore_queue = kwargs.get('ignore_queue', False) + + socketio = flask.current_app.extensions['socketio'] + return socketio.send(message, json=json, namespace=namespace, to=to, + include_self=include_self, skip_sid=skip_sid, + callback=callback, ignore_queue=ignore_queue) + + +def join_room(room, sid=None, namespace=None): + """Join a room. + + This function puts the user in a room, under the current namespace. The + user and the namespace are obtained from the event context. This is a + function that can only be called from a SocketIO event handler. Example:: + + @socketio.on('join') + def on_join(data): + username = session['username'] + room = data['room'] + join_room(room) + send(username + ' has entered the room.', to=room) + + :param room: The name of the room to join. + :param sid: The session id of the client. If not provided, the client is + obtained from the request context. + :param namespace: The namespace for the room. If not provided, the + namespace is obtained from the request context. + """ + socketio = flask.current_app.extensions['socketio'] + sid = sid or flask.request.sid + namespace = namespace or flask.request.namespace + socketio.server.enter_room(sid, room, namespace=namespace) + + +def leave_room(room, sid=None, namespace=None): + """Leave a room. + + This function removes the user from a room, under the current namespace. + The user and the namespace are obtained from the event context. Example:: + + @socketio.on('leave') + def on_leave(data): + username = session['username'] + room = data['room'] + leave_room(room) + send(username + ' has left the room.', to=room) + + :param room: The name of the room to leave. + :param sid: The session id of the client. If not provided, the client is + obtained from the request context. + :param namespace: The namespace for the room. If not provided, the + namespace is obtained from the request context. + """ + socketio = flask.current_app.extensions['socketio'] + sid = sid or flask.request.sid + namespace = namespace or flask.request.namespace + socketio.server.leave_room(sid, room, namespace=namespace) + + +def close_room(room, namespace=None): + """Close a room. + + This function removes any users that are in the given room and then deletes + the room from the server. + + :param room: The name of the room to close. + :param namespace: The namespace for the room. If not provided, the + namespace is obtained from the request context. + """ + socketio = flask.current_app.extensions['socketio'] + namespace = namespace or flask.request.namespace + socketio.server.close_room(room, namespace=namespace) + + +def rooms(sid=None, namespace=None): + """Return a list of the rooms the client is in. + + This function returns all the rooms the client has entered, including its + own room, assigned by the Socket.IO server. + + :param sid: The session id of the client. If not provided, the client is + obtained from the request context. + :param namespace: The namespace for the room. If not provided, the + namespace is obtained from the request context. + """ + socketio = flask.current_app.extensions['socketio'] + sid = sid or flask.request.sid + namespace = namespace or flask.request.namespace + return socketio.server.rooms(sid, namespace=namespace) + + +def disconnect(sid=None, namespace=None, silent=False): + """Disconnect the client. + + This function terminates the connection with the client. As a result of + this call the client will receive a disconnect event. Example:: + + @socketio.on('message') + def receive_message(msg): + if is_banned(session['username']): + disconnect() + else: + # ... + + :param sid: The session id of the client. If not provided, the client is + obtained from the request context. + :param namespace: The namespace for the room. If not provided, the + namespace is obtained from the request context. + :param silent: this option is deprecated. + """ + socketio = flask.current_app.extensions['socketio'] + sid = sid or flask.request.sid + namespace = namespace or flask.request.namespace + return socketio.server.disconnect(sid, namespace=namespace) diff --git a/venv/lib/python3.12/site-packages/flask_socketio/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask_socketio/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..083899089461be227648428494a0c9a6b7505a37 GIT binary patch literal 57874 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 Cxh7Wt literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask_socketio/__pycache__/namespace.cpython-312.pyc b/venv/lib/python3.12/site-packages/flask_socketio/__pycache__/namespace.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1c746bd2406ff93d8b11c8ab3eec75e5d48e1954 GIT binary patch literal 2727 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 An*aa+ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/flask_socketio/namespace.py b/venv/lib/python3.12/site-packages/flask_socketio/namespace.py new file mode 100644 index 0000000..43833a9 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask_socketio/namespace.py @@ -0,0 +1,46 @@ +from socketio import Namespace as _Namespace + + +class Namespace(_Namespace): + def __init__(self, namespace=None): + super(Namespace, self).__init__(namespace) + self.socketio = None + + def _set_socketio(self, socketio): + self.socketio = socketio + + def trigger_event(self, event, *args): + """Dispatch an event to the proper handler method. + + In the most common usage, this method is not overloaded by subclasses, + as it performs the routing of events to methods. However, this + method can be overridden if special dispatching rules are needed, or if + having a single method that catches all events is desired. + """ + handler_name = 'on_' + event + if not hasattr(self, handler_name): + # there is no handler for this event, so we ignore it + return + handler = getattr(self, handler_name) + return self.socketio._handle_event(handler, event, self.namespace, + *args) + + def emit(self, event, data=None, room=None, include_self=True, + namespace=None, callback=None): + """Emit a custom event to one or more connected clients.""" + return self.socketio.emit(event, data, room=room, + include_self=include_self, + namespace=namespace or self.namespace, + callback=callback) + + def send(self, data, room=None, include_self=True, namespace=None, + callback=None): + """Send a message to one or more connected clients.""" + return self.socketio.send(data, room=room, include_self=include_self, + namespace=namespace or self.namespace, + callback=callback) + + def close_room(self, room, namespace=None): + """Close a room.""" + return self.socketio.close_room(room=room, + namespace=namespace or self.namespace) diff --git a/venv/lib/python3.12/site-packages/flask_socketio/test_client.py b/venv/lib/python3.12/site-packages/flask_socketio/test_client.py new file mode 100644 index 0000000..0603d77 --- /dev/null +++ b/venv/lib/python3.12/site-packages/flask_socketio/test_client.py @@ -0,0 +1,236 @@ +import uuid + +from socketio import packet +from socketio.pubsub_manager import PubSubManager +from werkzeug.test import EnvironBuilder + + +class SocketIOTestClient(object): + """ + This class is useful for testing a Flask-SocketIO server. It works in a + similar way to the Flask Test Client, but adapted to the Socket.IO server. + + :param app: The Flask application instance. + :param socketio: The application's ``SocketIO`` instance. + :param namespace: The namespace for the client. If not provided, the client + connects to the server on the global namespace. + :param query_string: A string with custom query string arguments. + :param headers: A dictionary with custom HTTP headers. + :param auth: Optional authentication data, given as a dictionary. + :param flask_test_client: The instance of the Flask test client + currently in use. Passing the Flask test + client is optional, but is necessary if you + want the Flask user session and any other + cookies set in HTTP routes accessible from + Socket.IO events. + """ + clients = {} + + def __init__(self, app, socketio, namespace=None, query_string=None, + headers=None, auth=None, flask_test_client=None): + def _mock_send_packet(eio_sid, pkt): + # make sure the packet can be encoded and decoded + epkt = pkt.encode() + if not isinstance(epkt, list): + pkt = packet.Packet(encoded_packet=epkt) + else: + pkt = packet.Packet(encoded_packet=epkt[0]) + for att in epkt[1:]: + pkt.add_attachment(att) + client = self.clients.get(eio_sid) + if not client: + return + if pkt.packet_type == packet.EVENT or \ + pkt.packet_type == packet.BINARY_EVENT: + if pkt.data[0] == 'message' or pkt.data[0] == 'json': + client.queue.append({ + 'name': pkt.data[0], + 'args': pkt.data[1], + 'namespace': pkt.namespace or '/'}) + else: + client.queue.append({ + 'name': pkt.data[0], + 'args': pkt.data[1:], + 'namespace': pkt.namespace or '/'}) + elif pkt.packet_type == packet.ACK or \ + pkt.packet_type == packet.BINARY_ACK: + client.acks = {'args': pkt.data, + 'namespace': pkt.namespace or '/'} + elif pkt.packet_type in [packet.DISCONNECT, packet.CONNECT_ERROR]: + client.connected[pkt.namespace or '/'] = False + + _current_packet = None + + def _mock_send_eio_packet(eio_sid, eio_pkt): + nonlocal _current_packet + if _current_packet is not None: + _current_packet.add_attachment(eio_pkt.data) + if _current_packet.attachment_count == \ + len(_current_packet.attachments): + _mock_send_packet(eio_sid, _current_packet) + _current_packet = None + else: + pkt = packet.Packet(encoded_packet=eio_pkt.data) + if pkt.attachment_count == 0: + _mock_send_packet(eio_sid, pkt) + else: + _current_packet = pkt + + self.app = app + self.flask_test_client = flask_test_client + self.eio_sid = uuid.uuid4().hex + self.clients[self.eio_sid] = self + self.callback_counter = 0 + self.socketio = socketio + self.connected = {} + self.queue = [] + self.acks = None + socketio.server._send_packet = _mock_send_packet + socketio.server._send_eio_packet = _mock_send_eio_packet + socketio.server.environ[self.eio_sid] = {} + socketio.server.async_handlers = False # easier to test when + socketio.server.eio.async_handlers = False # events are sync + if isinstance(socketio.server.manager, PubSubManager): + raise RuntimeError('Test client cannot be used with a message ' + 'queue. Disable the queue on your test ' + 'configuration.') + socketio.server.manager.initialize() + self.connect(namespace=namespace, query_string=query_string, + headers=headers, auth=auth) + + def is_connected(self, namespace=None): + """Check if a namespace is connected. + + :param namespace: The namespace to check. The global namespace is + assumed if this argument is not provided. + """ + return self.connected.get(namespace or '/', False) + + def connect(self, namespace=None, query_string=None, headers=None, + auth=None): + """Connect the client. + + :param namespace: The namespace for the client. If not provided, the + client connects to the server on the global + namespace. + :param query_string: A string with custom query string arguments. + :param headers: A dictionary with custom HTTP headers. + :param auth: Optional authentication data, given as a dictionary. + + Note that it is usually not necessary to explicitly call this method, + since a connection is automatically established when an instance of + this class is created. An example where it this method would be useful + is when the application accepts multiple namespace connections. + """ + url = '/socket.io' + namespace = namespace or '/' + if query_string: + if query_string[0] != '?': + query_string = '?' + query_string + url += query_string + environ = EnvironBuilder(url, headers=headers).get_environ() + environ['flask.app'] = self.app + if self.flask_test_client: + # inject cookies from Flask + if hasattr(self.flask_test_client, '_add_cookies_to_wsgi'): + # flask >= 2.3 + self.flask_test_client._add_cookies_to_wsgi(environ) + else: # pragma: no cover + # flask < 2.3 + self.flask_test_client.cookie_jar.inject_wsgi(environ) + self.socketio.server._handle_eio_connect(self.eio_sid, environ) + pkt = packet.Packet(packet.CONNECT, auth, namespace=namespace) + self.socketio.server._handle_eio_message(self.eio_sid, pkt.encode()) + sid = self.socketio.server.manager.sid_from_eio_sid(self.eio_sid, + namespace) + if sid: + self.connected[namespace] = True + + def disconnect(self, namespace=None): + """Disconnect the client. + + :param namespace: The namespace to disconnect. The global namespace is + assumed if this argument is not provided. + """ + if not self.is_connected(namespace): + raise RuntimeError('not connected') + pkt = packet.Packet(packet.DISCONNECT, namespace=namespace) + self.socketio.server._handle_eio_message(self.eio_sid, pkt.encode()) + del self.connected[namespace or '/'] + + def emit(self, event, *args, **kwargs): + """Emit an event to the server. + + :param event: The event name. + :param *args: The event arguments. + :param callback: ``True`` if the client requests a callback, ``False`` + if not. Note that client-side callbacks are not + implemented, a callback request will just tell the + server to provide the arguments to invoke the + callback, but no callback is invoked. Instead, the + arguments that the server provided for the callback + are returned by this function. + :param namespace: The namespace of the event. The global namespace is + assumed if this argument is not provided. + """ + namespace = kwargs.pop('namespace', None) + if not self.is_connected(namespace): + raise RuntimeError('not connected') + callback = kwargs.pop('callback', False) + id = None + if callback: + self.callback_counter += 1 + id = self.callback_counter + pkt = packet.Packet(packet.EVENT, data=[event] + list(args), + namespace=namespace, id=id) + encoded_pkt = pkt.encode() + if isinstance(encoded_pkt, list): + for epkt in encoded_pkt: + self.socketio.server._handle_eio_message(self.eio_sid, epkt) + else: + self.socketio.server._handle_eio_message(self.eio_sid, encoded_pkt) + if self.acks is not None: + ack = self.acks + self.acks = None + return ack['args'][0] if len(ack['args']) == 1 \ + else ack['args'] + + def send(self, data, json=False, callback=False, namespace=None): + """Send a text or JSON message to the server. + + :param data: A string, dictionary or list to send to the server. + :param json: ``True`` to send a JSON message, ``False`` to send a text + message. + :param callback: ``True`` if the client requests a callback, ``False`` + if not. Note that client-side callbacks are not + implemented, a callback request will just tell the + server to provide the arguments to invoke the + callback, but no callback is invoked. Instead, the + arguments that the server provided for the callback + are returned by this function. + :param namespace: The namespace of the event. The global namespace is + assumed if this argument is not provided. + """ + if json: + msg = 'json' + else: + msg = 'message' + return self.emit(msg, data, callback=callback, namespace=namespace) + + def get_received(self, namespace=None): + """Return the list of messages received from the server. + + Since this is not a real client, any time the server emits an event, + the event is simply stored. The test code can invoke this method to + obtain the list of events that were received since the last call. + + :param namespace: The namespace to get events from. The global + namespace is assumed if this argument is not + provided. + """ + if not self.is_connected(namespace): + raise RuntimeError('not connected') + namespace = namespace or '/' + r = [pkt for pkt in self.queue if pkt['namespace'] == namespace] + self.queue = [pkt for pkt in self.queue if pkt not in r] + return r diff --git a/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/LICENSE.txt b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/LICENSE.txt new file mode 100644 index 0000000..8f080ea --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/LICENSE.txt @@ -0,0 +1,22 @@ +The MIT License (MIT) + +Copyright (c) 2016 Nathaniel J. Smith and other contributors + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/METADATA new file mode 100644 index 0000000..cf12a82 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/METADATA @@ -0,0 +1,193 @@ +Metadata-Version: 2.1 +Name: h11 +Version: 0.14.0 +Summary: A pure-Python, bring-your-own-I/O implementation of HTTP/1.1 +Home-page: https://github.com/python-hyper/h11 +Author: Nathaniel J. Smith +Author-email: njs@pobox.com +License: MIT +Classifier: Development Status :: 3 - Alpha +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Topic :: Internet :: WWW/HTTP +Classifier: Topic :: System :: Networking +Requires-Python: >=3.7 +License-File: LICENSE.txt +Requires-Dist: typing-extensions ; python_version < "3.8" + +h11 +=== + +.. image:: https://travis-ci.org/python-hyper/h11.svg?branch=master + :target: https://travis-ci.org/python-hyper/h11 + :alt: Automated test status + +.. image:: https://codecov.io/gh/python-hyper/h11/branch/master/graph/badge.svg + :target: https://codecov.io/gh/python-hyper/h11 + :alt: Test coverage + +.. image:: https://readthedocs.org/projects/h11/badge/?version=latest + :target: http://h11.readthedocs.io/en/latest/?badge=latest + :alt: Documentation Status + +This is a little HTTP/1.1 library written from scratch in Python, +heavily inspired by `hyper-h2 `_. + +It's a "bring-your-own-I/O" library; h11 contains no IO code +whatsoever. This means you can hook h11 up to your favorite network +API, and that could be anything you want: synchronous, threaded, +asynchronous, or your own implementation of `RFC 6214 +`_ -- h11 won't judge you. +(Compare this to the current state of the art, where every time a `new +network API `_ comes along then someone +gets to start over reimplementing the entire HTTP protocol from +scratch.) Cory Benfield made an `excellent blog post describing the +benefits of this approach +`_, or if you like video +then here's his `PyCon 2016 talk on the same theme +`_. + +This also means that h11 is not immediately useful out of the box: +it's a toolkit for building programs that speak HTTP, not something +that could directly replace ``requests`` or ``twisted.web`` or +whatever. But h11 makes it much easier to implement something like +``requests`` or ``twisted.web``. + +At a high level, working with h11 goes like this: + +1) First, create an ``h11.Connection`` object to track the state of a + single HTTP/1.1 connection. + +2) When you read data off the network, pass it to + ``conn.receive_data(...)``; you'll get back a list of objects + representing high-level HTTP "events". + +3) When you want to send a high-level HTTP event, create the + corresponding "event" object and pass it to ``conn.send(...)``; + this will give you back some bytes that you can then push out + through the network. + +For example, a client might instantiate and then send a +``h11.Request`` object, then zero or more ``h11.Data`` objects for the +request body (e.g., if this is a POST), and then a +``h11.EndOfMessage`` to indicate the end of the message. Then the +server would then send back a ``h11.Response``, some ``h11.Data``, and +its own ``h11.EndOfMessage``. If either side violates the protocol, +you'll get a ``h11.ProtocolError`` exception. + +h11 is suitable for implementing both servers and clients, and has a +pleasantly symmetric API: the events you send as a client are exactly +the ones that you receive as a server and vice-versa. + +`Here's an example of a tiny HTTP client +`_ + +It also has `a fine manual `_. + +FAQ +--- + +*Whyyyyy?* + +I wanted to play with HTTP in `Curio +`__ and `Trio +`__, which at the time didn't have any +HTTP libraries. So I thought, no big deal, Python has, like, a dozen +different implementations of HTTP, surely I can find one that's +reusable. I didn't find one, but I did find Cory's call-to-arms +blog-post. So I figured, well, fine, if I have to implement HTTP from +scratch, at least I can make sure no-one *else* has to ever again. + +*Should I use it?* + +Maybe. You should be aware that it's a very young project. But, it's +feature complete and has an exhaustive test-suite and complete docs, +so the next step is for people to try using it and see how it goes +:-). If you do then please let us know -- if nothing else we'll want +to talk to you before making any incompatible changes! + +*What are the features/limitations?* + +Roughly speaking, it's trying to be a robust, complete, and non-hacky +implementation of the first "chapter" of the HTTP/1.1 spec: `RFC 7230: +HTTP/1.1 Message Syntax and Routing +`_. That is, it mostly focuses on +implementing HTTP at the level of taking bytes on and off the wire, +and the headers related to that, and tries to be anal about spec +conformance. It doesn't know about higher-level concerns like URL +routing, conditional GETs, cross-origin cookie policies, or content +negotiation. But it does know how to take care of framing, +cross-version differences in keep-alive handling, and the "obsolete +line folding" rule, so you can focus your energies on the hard / +interesting parts for your application, and it tries to support the +full specification in the sense that any useful HTTP/1.1 conformant +application should be able to use h11. + +It's pure Python, and has no dependencies outside of the standard +library. + +It has a test suite with 100.0% coverage for both statements and +branches. + +Currently it supports Python 3 (testing on 3.7-3.10) and PyPy 3. +The last Python 2-compatible version was h11 0.11.x. +(Originally it had a Cython wrapper for `http-parser +`_ and a beautiful nested state +machine implemented with ``yield from`` to postprocess the output. But +I had to take these out -- the new *parser* needs fewer lines-of-code +than the old *parser wrapper*, is written in pure Python, uses no +exotic language syntax, and has more features. It's sad, really; that +old state machine was really slick. I just need a few sentences here +to mourn that.) + +I don't know how fast it is. I haven't benchmarked or profiled it yet, +so it's probably got a few pointless hot spots, and I've been trying +to err on the side of simplicity and robustness instead of +micro-optimization. But at the architectural level I tried hard to +avoid fundamentally bad decisions, e.g., I believe that all the +parsing algorithms remain linear-time even in the face of pathological +input like slowloris, and there are no byte-by-byte loops. (I also +believe that it maintains bounded memory usage in the face of +arbitrary/pathological input.) + +The whole library is ~800 lines-of-code. You can read and understand +the whole thing in less than an hour. Most of the energy invested in +this so far has been spent on trying to keep things simple by +minimizing special-cases and ad hoc state manipulation; even though it +is now quite small and simple, I'm still annoyed that I haven't +figured out how to make it even smaller and simpler. (Unfortunately, +HTTP does not lend itself to simplicity.) + +The API is ~feature complete and I don't expect the general outlines +to change much, but you can't judge an API's ergonomics until you +actually document and use it, so I'd expect some changes in the +details. + +*How do I try it?* + +.. code-block:: sh + + $ pip install h11 + $ git clone git@github.com:python-hyper/h11 + $ cd h11/examples + $ python basic-client.py + +and go from there. + +*License?* + +MIT + +*Code of conduct?* + +Contributors are requested to follow our `code of conduct +`_ in +all project spaces. diff --git a/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/RECORD new file mode 100644 index 0000000..7f10b55 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/RECORD @@ -0,0 +1,53 @@ +h11-0.14.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +h11-0.14.0.dist-info/LICENSE.txt,sha256=N9tbuFkm2yikJ6JYZ_ELEjIAOuob5pzLhRE4rbjm82E,1124 +h11-0.14.0.dist-info/METADATA,sha256=B7pZ0m7WBXNs17vl6hUH9bJTL9s37DaGvY31w7jNxSg,8175 +h11-0.14.0.dist-info/RECORD,, +h11-0.14.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +h11-0.14.0.dist-info/WHEEL,sha256=ewwEueio1C2XeHTvT17n8dZUJgOvyCWCt0WVNLClP9o,92 +h11-0.14.0.dist-info/top_level.txt,sha256=F7dC4jl3zeh8TGHEPaWJrMbeuoWbS379Gwdi-Yvdcis,4 +h11/__init__.py,sha256=iO1KzkSO42yZ6ffg-VMgbx_ZVTWGUY00nRYEWn-s3kY,1507 +h11/__pycache__/__init__.cpython-312.pyc,, +h11/__pycache__/_abnf.cpython-312.pyc,, +h11/__pycache__/_connection.cpython-312.pyc,, +h11/__pycache__/_events.cpython-312.pyc,, +h11/__pycache__/_headers.cpython-312.pyc,, +h11/__pycache__/_readers.cpython-312.pyc,, +h11/__pycache__/_receivebuffer.cpython-312.pyc,, +h11/__pycache__/_state.cpython-312.pyc,, +h11/__pycache__/_util.cpython-312.pyc,, +h11/__pycache__/_version.cpython-312.pyc,, +h11/__pycache__/_writers.cpython-312.pyc,, +h11/_abnf.py,sha256=ybixr0xsupnkA6GFAyMubuXF6Tc1lb_hF890NgCsfNc,4815 +h11/_connection.py,sha256=eS2sorMD0zKLCFiB9lW9W9F_Nzny2tjHa4e6s1ujr1c,26539 +h11/_events.py,sha256=LEfuvg1AbhHaVRwxCd0I-pFn9-ezUOaoL8o2Kvy1PBA,11816 +h11/_headers.py,sha256=RqB8cd8CN0blYPzcLe5qeCh-phv6D1U_CHj4hs67lgQ,10230 +h11/_readers.py,sha256=EbSed0jzwVUiD1nOPAeUcVE4Flf3wXkxfb8c06-OTBM,8383 +h11/_receivebuffer.py,sha256=xrspsdsNgWFxRfQcTXxR8RrdjRXXTK0Io5cQYWpJ1Ws,5252 +h11/_state.py,sha256=k1VL6SDbaPkSrZ-49ewCXDpuiUS69_46YhbWjuV1qEY,13300 +h11/_util.py,sha256=LWkkjXyJaFlAy6Lt39w73UStklFT5ovcvo0TkY7RYuk,4888 +h11/_version.py,sha256=LVyTdiZRzIIEv79UyOgbM5iUrJUllEzlCWaJEYBY1zc,686 +h11/_writers.py,sha256=oFKm6PtjeHfbj4RLX7VB7KDc1gIY53gXG3_HR9ltmTA,5081 +h11/py.typed,sha256=sow9soTwP9T_gEAQSVh7Gb8855h04Nwmhs2We-JRgZM,7 +h11/tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +h11/tests/__pycache__/__init__.cpython-312.pyc,, +h11/tests/__pycache__/helpers.cpython-312.pyc,, +h11/tests/__pycache__/test_against_stdlib_http.cpython-312.pyc,, +h11/tests/__pycache__/test_connection.cpython-312.pyc,, +h11/tests/__pycache__/test_events.cpython-312.pyc,, +h11/tests/__pycache__/test_headers.cpython-312.pyc,, +h11/tests/__pycache__/test_helpers.cpython-312.pyc,, +h11/tests/__pycache__/test_io.cpython-312.pyc,, +h11/tests/__pycache__/test_receivebuffer.cpython-312.pyc,, +h11/tests/__pycache__/test_state.cpython-312.pyc,, +h11/tests/__pycache__/test_util.cpython-312.pyc,, +h11/tests/data/test-file,sha256=ZJ03Rqs98oJw29OHzJg7LlMzyGQaRAY0r3AqBeM2wVU,65 +h11/tests/helpers.py,sha256=a1EVG_p7xU4wRsa3tMPTRxuaKCmretok9sxXWvqfmQA,3355 +h11/tests/test_against_stdlib_http.py,sha256=cojCHgHXFQ8gWhNlEEwl3trmOpN-5uDukRoHnElqo3A,3995 +h11/tests/test_connection.py,sha256=ZbPLDPclKvjgjAhgk-WlCPBaf17c4XUIV2tpaW08jOI,38720 +h11/tests/test_events.py,sha256=LPVLbcV-NvPNK9fW3rraR6Bdpz1hAlsWubMtNaJ5gHg,4657 +h11/tests/test_headers.py,sha256=qd8T1Zenuz5GbD6wklSJ5G8VS7trrYgMV0jT-SMvqg8,5612 +h11/tests/test_helpers.py,sha256=kAo0CEM4LGqmyyP2ZFmhsyq3UFJqoFfAbzu3hbWreRM,794 +h11/tests/test_io.py,sha256=uCZVnjarkRBkudfC1ij-KSCQ71XWJhnkgkgWWkKgYPQ,16386 +h11/tests/test_receivebuffer.py,sha256=3jGbeJM36Akqg_pAhPb7XzIn2NS6RhPg-Ryg8Eu6ytk,3454 +h11/tests/test_state.py,sha256=rqll9WqFsJPE0zSrtCn9LH659mPKsDeXZ-DwXwleuBQ,8928 +h11/tests/test_util.py,sha256=VO5L4nSFe4pgtSwKuv6u_6l0H7UeizF5WKuHTWreg70,2970 diff --git a/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/WHEEL new file mode 100644 index 0000000..5bad85f --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.37.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/top_level.txt new file mode 100644 index 0000000..0d24def --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11-0.14.0.dist-info/top_level.txt @@ -0,0 +1 @@ +h11 diff --git a/venv/lib/python3.12/site-packages/h11/__init__.py b/venv/lib/python3.12/site-packages/h11/__init__.py new file mode 100644 index 0000000..989e92c --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/__init__.py @@ -0,0 +1,62 @@ +# A highish-level implementation of the HTTP/1.1 wire protocol (RFC 7230), +# containing no networking code at all, loosely modelled on hyper-h2's generic +# implementation of HTTP/2 (and in particular the h2.connection.H2Connection +# class). There's still a bunch of subtle details you need to get right if you +# want to make this actually useful, because it doesn't implement all the +# semantics to check that what you're asking to write to the wire is sensible, +# but at least it gets you out of dealing with the wire itself. + +from h11._connection import Connection, NEED_DATA, PAUSED +from h11._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from h11._state import ( + CLIENT, + CLOSED, + DONE, + ERROR, + IDLE, + MIGHT_SWITCH_PROTOCOL, + MUST_CLOSE, + SEND_BODY, + SEND_RESPONSE, + SERVER, + SWITCHED_PROTOCOL, +) +from h11._util import LocalProtocolError, ProtocolError, RemoteProtocolError +from h11._version import __version__ + +PRODUCT_ID = "python-h11/" + __version__ + + +__all__ = ( + "Connection", + "NEED_DATA", + "PAUSED", + "ConnectionClosed", + "Data", + "EndOfMessage", + "Event", + "InformationalResponse", + "Request", + "Response", + "CLIENT", + "CLOSED", + "DONE", + "ERROR", + "IDLE", + "MUST_CLOSE", + "SEND_BODY", + "SEND_RESPONSE", + "SERVER", + "SWITCHED_PROTOCOL", + "ProtocolError", + "LocalProtocolError", + "RemoteProtocolError", +) diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a86b9f1a64c7cf409e7a6c361081ea85799c2091 GIT binary patch literal 1067 zcma))&u`N(6vv(ZNZO=Xf354*F+gZS^sq%6Cnf|MO~fj-O_g>a%)!c9Z>@-v;$%bH z3H}N=ap!O0w5uf~q@B2J+MyCB>}&-M2?r(#sJY z>SPYikvz>hCK#ikQzsvIc^mR1&-N(OVFfCrkqCw$*Xkuy{ zA4YD3|E;ei6#Pph%f=}Vqp^1-H5M)OvRu4!eS>saxK!R3bGOk)O_M1Ixt@p67jVg! zz)#y41q2&}j@-c;Obru<1D77Sq45syZ5q6$Bf}f-8CQLHxW2JzgyRUWO?Wtem!ZLr zGY}g4;|QVk$uY}3Cc*H~!%ygao?qf$*ycD-N|H1!0cq$Oj>PxS}y)pL1KOMFo1D$n=}c>@tH literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_abnf.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_abnf.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0a03511e528652cbe74cc39a9f798b8f0282dfa6 GIT binary patch literal 1773 zcma)6O>E;t6dosb>ijry($aRfEOfUEty5B`t>}tUTFUOyt%OP?RxG&58aJLcp^05= zx3tb0`HGMbD-IkuA-GgM?g?>19Fd?swepn%S4VqTi4$+^v`KHVMt*N*zVFR@-y6-J z9G5`w-CCO8{yT@zKV)+8#oEsEzbJ%$Kq``uN=X!^q=*`kqH0v4F)c9>q|%?KE=V1# z=4vQ{aNluz=@;r-N@4-c^o))JI@U8f0huL%(bqF0rLqzSjCjwCw3?7Iz)1GY-~pZL z8J$%*DF=*n&y0RGBMkt9@0sz^VOHq3V;iF-tDLt-HVQY#Zol^Wcz$x~vHaPSuZo4Y zl!Conkjj&Ga-(!GGhHYh+`(l#zVWzpP%M_rvOV71s^PjS?^mjd;Y>~}%?HsYuPzID zJ2%l@s_2@9HOmo}?E4c->kA=YQyO@&jUc`w%r`%L^pVp+>?`%XOGq$rgaBf*&GzZ` z*n@`;*G0mqTGp<-j}5b?Yl|CDNx3u?7{Pv*>^HDg)z!sjXdPjcELw`OjjhF|fxp

F1)W4w#r1%2lqd@x4Hr{G^gK~DLRfFeS0b& z)>oZju(v)2o8@bGAr=+qZCE?JnG}!sGmdeahLH~lM2|s_vFQ1aJ_WQ~ot6*FX7@5hF^w?QCe@e!kqesV|f^m~ROEUvLq8aW5 zL>>70<5rwzZnju7^vd_O!1tqw;{4kvk#S?^*|G0N&az{tWE6ke{<#LmO`m7pbW=V} zGdD=2L5MVTYHyA4a;4GS^9_b0@rb#?PISarf7u->!jyOlg)W`iNzO z7d*-rj|N*=mU*YequKdqLg14qDSsFxhTWK-Lh1Yock7H3PRW=%S~*??1LC9**YC!C kI>HS5D8gj_%?>>sY%w$wYsFA9_l?l%BR(n4xCUbX51CTy3;+NC literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_connection.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_connection.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19d030d893d5e135af5d05e16c07e1218757ffe6 GIT binary patch literal 22594 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_events.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_events.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6f1de861d33908325512d702971d71a47bab7f41 GIT binary patch literal 13273 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 Nv1XnM^le!0{{`hbtM>o^ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_headers.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_headers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..11f0d8604b13686a7b6408ed68923153ea1f06e8 GIT binary patch literal 7840 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 N-6L-MKe{-m{|^K}ACLe5 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_readers.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_readers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e41398ed1b92ab6ef7cb02ba4e8fbc60447d190a GIT binary patch literal 9402 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_receivebuffer.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_receivebuffer.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..bfb6020a97c67e312d4bdcf6fec363006c02511f GIT binary patch literal 4691 zcmcH+TTC0-_0G%KW55O*5=fQ|uY$8Alq9R&pgg(>Nkf{Dc9V3w?qf7~#xRZ_``q3-- z+;h)8_xjxPp1;-Ai3CQ+`N6UKK|;R4MS1WgWGe&65>biD#7WqhnJ@!uHqIuvFqh!N zd_o8d3{kl;ChTH~Mq>5lYqn>V2fBZIUB(`>4i@&Xhn~PFAf0dLz*BKkESxq}h<4y5JhiMKyDh zCPyL+tjYtG$H8yw9DpTaR`wp3I5I@8&{PIiC3WK~VTEVyktVC`2*u41Z+S-3rlwG; zq%A>K6;rVqD$}=!BhcqLi&@sj6zo(6!=%3P(Q~hy$w0|OPj;E3*j}M&aH*`}wHUaF)m}c~k z4-E9n)UoiWZQ78K#K8L{i8jDwzd%vdsxPqV@8O9i0CQyBUHee{OkB_l?jyez*L{Jk zmj+;Gmn)!)+X5d2WTz{b6(eWJ-*2 z&`;w5d?qN{7x?00j(;@#`7iVCw*698)Y=E^JEhE!*iQAsE{=V2(pI3_n%yU6jVy!o zAZ62Dm$1oa;9y0_#)VT$gNuXzCm}5X1IVZ@rbm|TT@duZUO`J6-$PN+OHiM|g%DW|7p_ULyO(xCi?)nQjhVEL;Syhr@TFET?=G|YhXPw0GhNO{U!DFy$ggEDQ z;QWMQx?klSM{ft*;!=~Qfu@$W-5v4=RU+oTfGyE40=Mx#fH|^J-}o>#AIml8y7To? zmRqm&KfF4Bbzv$eEKKEV+ctK_@e6n7hOaRzI~YC?lB7sceOgnc?4zydc8aO7a z@^^YcC5KE;nYa2~WsB^rZ)pL}yJq0vEC;8&tLnWlEIpxrG# zswY(^m!S)UcsqEkMyIyQhN(~!Dx9iKTiyx4btNwA>a@iHusa;|KPNjM*zE?DIz7|< zHgBo0eGGqZL;=i^*CJ_aUv5|)df7Et=o)Q_5T5?d+&em3K3?m*Q~gx>N3$e>{0!`vP3GsGt|KSE3!fQVq#dk_YBolIa`Bm zrk($*=r2>zAA}DV!}_ylKxba63$uKNA0j_L0JjMlA%@M!o}s$Syaw~2DI=&gXUT&W zo@98{gHph3OA}$IS=$yaRm9m4u98m~h9E>@=g zW76b=WTx!cbRu{(t|af2;#f(llG8s+3XmYaAxUG18^NfukVQqVHNZiihmf!w2r$MIL7{sm1iDkPu(qniDwl2^dPbf)CFec(Ue9LG_ z)wrjd;~|%m0EC2MM#kv?vUef7U<+yS_JpD0D8LE*!0ynud1l(*7WOvFI9y|h@J=WZ zB7x#MI6t^Bx^OppE_eI6w*$-V_4(_$_7}B>*8@%2;SH~E2g}FLyw>U&4P3|LMqI2MPm2Yez3( z%IGPjjG$et8a_|tE)?pIK;ef*ATgiFU0k!<0DoY~v*^inulc2{@J+BKI|Qw;Q^~&c zb*={w<{B5T6a~`M3YE{_wD8e8VL0o`%XWrNng=zKiZoYKHS&HgkHn z;s1xDk3b&dH~?@6R`9ey`VJn%{y3*Bo?Sjw2=wG@d;ayx*YXd-cv`*+94vA$e`{bV z`?MiQzVJxgZyAY$Ct=PT2?g=Rr;L@8D8GV7E(X8QO#31OhY?J&)ibfK_6f(vA=NyV(Z)uw(ol zz|*0*pf2Hir}%1I=3J^kR>aN*=-q<0mAKA~gf;L}hcbY_bHUhI&Brsbck zs83I?rV8EXwg{|?KW1D)%d=ar2~19U@meg^EY3(9mdi{}K#FtTYQG=VX2BPa5{K_H zs|MQ>J+4`v>$k7n8oo9>a*1Lu?P%Z%Vwj>!pL1s%dz_;;fQISLK=px58Rl!^`I?A- xC%pyIyWwrki-+cFiX#jOwk@2n9U`{U@uY9HZ!PeCp7{UiiZKj01w#7|{tHAe0(<}f literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_state.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_state.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ca6818d4e6244d25361d17263e5bd2e75566c493 GIT binary patch literal 8526 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_util.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_util.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f9ec552d8c97b896c0e1c31cec7c8475361d86b1 GIT binary patch literal 4711 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 aL9Qz10TLgW85tQrC@}DgH*y!T00jW;PBnA@ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/__pycache__/_writers.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/__pycache__/_writers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9a23226524ce065f1bddf1c23b705e86bfa93d5c GIT binary patch literal 6277 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 Vc%`Dl(ZbK$7g{%ngX0;Z{|8fgOV|Ja literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/_abnf.py b/venv/lib/python3.12/site-packages/h11/_abnf.py new file mode 100644 index 0000000..933587f --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_abnf.py @@ -0,0 +1,132 @@ +# We use native strings for all the re patterns, to take advantage of string +# formatting, and then convert to bytestrings when compiling the final re +# objects. + +# https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230.html#whitespace +# OWS = *( SP / HTAB ) +# ; optional whitespace +OWS = r"[ \t]*" + +# https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230.html#rule.token.separators +# token = 1*tchar +# +# tchar = "!" / "#" / "$" / "%" / "&" / "'" / "*" +# / "+" / "-" / "." / "^" / "_" / "`" / "|" / "~" +# / DIGIT / ALPHA +# ; any VCHAR, except delimiters +token = r"[-!#$%&'*+.^_`|~0-9a-zA-Z]+" + +# https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230.html#header.fields +# field-name = token +field_name = token + +# The standard says: +# +# field-value = *( field-content / obs-fold ) +# field-content = field-vchar [ 1*( SP / HTAB ) field-vchar ] +# field-vchar = VCHAR / obs-text +# obs-fold = CRLF 1*( SP / HTAB ) +# ; obsolete line folding +# ; see Section 3.2.4 +# +# https://tools.ietf.org/html/rfc5234#appendix-B.1 +# +# VCHAR = %x21-7E +# ; visible (printing) characters +# +# https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230.html#rule.quoted-string +# obs-text = %x80-FF +# +# However, the standard definition of field-content is WRONG! It disallows +# fields containing a single visible character surrounded by whitespace, +# e.g. "foo a bar". +# +# See: https://www.rfc-editor.org/errata_search.php?rfc=7230&eid=4189 +# +# So our definition of field_content attempts to fix it up... +# +# Also, we allow lots of control characters, because apparently people assume +# that they're legal in practice (e.g., google analytics makes cookies with +# \x01 in them!): +# https://github.com/python-hyper/h11/issues/57 +# We still don't allow NUL or whitespace, because those are often treated as +# meta-characters and letting them through can lead to nasty issues like SSRF. +vchar = r"[\x21-\x7e]" +vchar_or_obs_text = r"[^\x00\s]" +field_vchar = vchar_or_obs_text +field_content = r"{field_vchar}+(?:[ \t]+{field_vchar}+)*".format(**globals()) + +# We handle obs-fold at a different level, and our fixed-up field_content +# already grows to swallow the whole value, so ? instead of * +field_value = r"({field_content})?".format(**globals()) + +# header-field = field-name ":" OWS field-value OWS +header_field = ( + r"(?P{field_name})" + r":" + r"{OWS}" + r"(?P{field_value})" + r"{OWS}".format(**globals()) +) + +# https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230.html#request.line +# +# request-line = method SP request-target SP HTTP-version CRLF +# method = token +# HTTP-version = HTTP-name "/" DIGIT "." DIGIT +# HTTP-name = %x48.54.54.50 ; "HTTP", case-sensitive +# +# request-target is complicated (see RFC 7230 sec 5.3) -- could be path, full +# URL, host+port (for connect), or even "*", but in any case we are guaranteed +# that it contists of the visible printing characters. +method = token +request_target = r"{vchar}+".format(**globals()) +http_version = r"HTTP/(?P[0-9]\.[0-9])" +request_line = ( + r"(?P{method})" + r" " + r"(?P{request_target})" + r" " + r"{http_version}".format(**globals()) +) + +# https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230.html#status.line +# +# status-line = HTTP-version SP status-code SP reason-phrase CRLF +# status-code = 3DIGIT +# reason-phrase = *( HTAB / SP / VCHAR / obs-text ) +status_code = r"[0-9]{3}" +reason_phrase = r"([ \t]|{vchar_or_obs_text})*".format(**globals()) +status_line = ( + r"{http_version}" + r" " + r"(?P{status_code})" + # However, there are apparently a few too many servers out there that just + # leave out the reason phrase: + # https://github.com/scrapy/scrapy/issues/345#issuecomment-281756036 + # https://github.com/seanmonstar/httparse/issues/29 + # so make it optional. ?: is a non-capturing group. + r"(?: (?P{reason_phrase}))?".format(**globals()) +) + +HEXDIG = r"[0-9A-Fa-f]" +# Actually +# +# chunk-size = 1*HEXDIG +# +# but we impose an upper-limit to avoid ridiculosity. len(str(2**64)) == 20 +chunk_size = r"({HEXDIG}){{1,20}}".format(**globals()) +# Actually +# +# chunk-ext = *( ";" chunk-ext-name [ "=" chunk-ext-val ] ) +# +# but we aren't parsing the things so we don't really care. +chunk_ext = r";.*" +chunk_header = ( + r"(?P{chunk_size})" + r"(?P{chunk_ext})?" + r"{OWS}\r\n".format( + **globals() + ) # Even though the specification does not allow for extra whitespaces, + # we are lenient with trailing whitespaces because some servers on the wild use it. +) diff --git a/venv/lib/python3.12/site-packages/h11/_connection.py b/venv/lib/python3.12/site-packages/h11/_connection.py new file mode 100644 index 0000000..d175270 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_connection.py @@ -0,0 +1,633 @@ +# This contains the main Connection class. Everything in h11 revolves around +# this. +from typing import Any, Callable, cast, Dict, List, Optional, Tuple, Type, Union + +from ._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from ._headers import get_comma_header, has_expect_100_continue, set_comma_header +from ._readers import READERS, ReadersType +from ._receivebuffer import ReceiveBuffer +from ._state import ( + _SWITCH_CONNECT, + _SWITCH_UPGRADE, + CLIENT, + ConnectionState, + DONE, + ERROR, + MIGHT_SWITCH_PROTOCOL, + SEND_BODY, + SERVER, + SWITCHED_PROTOCOL, +) +from ._util import ( # Import the internal things we need + LocalProtocolError, + RemoteProtocolError, + Sentinel, +) +from ._writers import WRITERS, WritersType + +# Everything in __all__ gets re-exported as part of the h11 public API. +__all__ = ["Connection", "NEED_DATA", "PAUSED"] + + +class NEED_DATA(Sentinel, metaclass=Sentinel): + pass + + +class PAUSED(Sentinel, metaclass=Sentinel): + pass + + +# If we ever have this much buffered without it making a complete parseable +# event, we error out. The only time we really buffer is when reading the +# request/response line + headers together, so this is effectively the limit on +# the size of that. +# +# Some precedents for defaults: +# - node.js: 80 * 1024 +# - tomcat: 8 * 1024 +# - IIS: 16 * 1024 +# - Apache: <8 KiB per line> +DEFAULT_MAX_INCOMPLETE_EVENT_SIZE = 16 * 1024 + +# RFC 7230's rules for connection lifecycles: +# - If either side says they want to close the connection, then the connection +# must close. +# - HTTP/1.1 defaults to keep-alive unless someone says Connection: close +# - HTTP/1.0 defaults to close unless both sides say Connection: keep-alive +# (and even this is a mess -- e.g. if you're implementing a proxy then +# sending Connection: keep-alive is forbidden). +# +# We simplify life by simply not supporting keep-alive with HTTP/1.0 peers. So +# our rule is: +# - If someone says Connection: close, we will close +# - If someone uses HTTP/1.0, we will close. +def _keep_alive(event: Union[Request, Response]) -> bool: + connection = get_comma_header(event.headers, b"connection") + if b"close" in connection: + return False + if getattr(event, "http_version", b"1.1") < b"1.1": + return False + return True + + +def _body_framing( + request_method: bytes, event: Union[Request, Response] +) -> Tuple[str, Union[Tuple[()], Tuple[int]]]: + # Called when we enter SEND_BODY to figure out framing information for + # this body. + # + # These are the only two events that can trigger a SEND_BODY state: + assert type(event) in (Request, Response) + # Returns one of: + # + # ("content-length", count) + # ("chunked", ()) + # ("http/1.0", ()) + # + # which are (lookup key, *args) for constructing body reader/writer + # objects. + # + # Reference: https://tools.ietf.org/html/rfc7230#section-3.3.3 + # + # Step 1: some responses always have an empty body, regardless of what the + # headers say. + if type(event) is Response: + if ( + event.status_code in (204, 304) + or request_method == b"HEAD" + or (request_method == b"CONNECT" and 200 <= event.status_code < 300) + ): + return ("content-length", (0,)) + # Section 3.3.3 also lists another case -- responses with status_code + # < 200. For us these are InformationalResponses, not Responses, so + # they can't get into this function in the first place. + assert event.status_code >= 200 + + # Step 2: check for Transfer-Encoding (T-E beats C-L): + transfer_encodings = get_comma_header(event.headers, b"transfer-encoding") + if transfer_encodings: + assert transfer_encodings == [b"chunked"] + return ("chunked", ()) + + # Step 3: check for Content-Length + content_lengths = get_comma_header(event.headers, b"content-length") + if content_lengths: + return ("content-length", (int(content_lengths[0]),)) + + # Step 4: no applicable headers; fallback/default depends on type + if type(event) is Request: + return ("content-length", (0,)) + else: + return ("http/1.0", ()) + + +################################################################ +# +# The main Connection class +# +################################################################ + + +class Connection: + """An object encapsulating the state of an HTTP connection. + + Args: + our_role: If you're implementing a client, pass :data:`h11.CLIENT`. If + you're implementing a server, pass :data:`h11.SERVER`. + + max_incomplete_event_size (int): + The maximum number of bytes we're willing to buffer of an + incomplete event. In practice this mostly sets a limit on the + maximum size of the request/response line + headers. If this is + exceeded, then :meth:`next_event` will raise + :exc:`RemoteProtocolError`. + + """ + + def __init__( + self, + our_role: Type[Sentinel], + max_incomplete_event_size: int = DEFAULT_MAX_INCOMPLETE_EVENT_SIZE, + ) -> None: + self._max_incomplete_event_size = max_incomplete_event_size + # State and role tracking + if our_role not in (CLIENT, SERVER): + raise ValueError("expected CLIENT or SERVER, not {!r}".format(our_role)) + self.our_role = our_role + self.their_role: Type[Sentinel] + if our_role is CLIENT: + self.their_role = SERVER + else: + self.their_role = CLIENT + self._cstate = ConnectionState() + + # Callables for converting data->events or vice-versa given the + # current state + self._writer = self._get_io_object(self.our_role, None, WRITERS) + self._reader = self._get_io_object(self.their_role, None, READERS) + + # Holds any unprocessed received data + self._receive_buffer = ReceiveBuffer() + # If this is true, then it indicates that the incoming connection was + # closed *after* the end of whatever's in self._receive_buffer: + self._receive_buffer_closed = False + + # Extra bits of state that don't fit into the state machine. + # + # These two are only used to interpret framing headers for figuring + # out how to read/write response bodies. their_http_version is also + # made available as a convenient public API. + self.their_http_version: Optional[bytes] = None + self._request_method: Optional[bytes] = None + # This is pure flow-control and doesn't at all affect the set of legal + # transitions, so no need to bother ConnectionState with it: + self.client_is_waiting_for_100_continue = False + + @property + def states(self) -> Dict[Type[Sentinel], Type[Sentinel]]: + """A dictionary like:: + + {CLIENT: , SERVER: } + + See :ref:`state-machine` for details. + + """ + return dict(self._cstate.states) + + @property + def our_state(self) -> Type[Sentinel]: + """The current state of whichever role we are playing. See + :ref:`state-machine` for details. + """ + return self._cstate.states[self.our_role] + + @property + def their_state(self) -> Type[Sentinel]: + """The current state of whichever role we are NOT playing. See + :ref:`state-machine` for details. + """ + return self._cstate.states[self.their_role] + + @property + def they_are_waiting_for_100_continue(self) -> bool: + return self.their_role is CLIENT and self.client_is_waiting_for_100_continue + + def start_next_cycle(self) -> None: + """Attempt to reset our connection state for a new request/response + cycle. + + If both client and server are in :data:`DONE` state, then resets them + both to :data:`IDLE` state in preparation for a new request/response + cycle on this same connection. Otherwise, raises a + :exc:`LocalProtocolError`. + + See :ref:`keepalive-and-pipelining`. + + """ + old_states = dict(self._cstate.states) + self._cstate.start_next_cycle() + self._request_method = None + # self.their_http_version gets left alone, since it presumably lasts + # beyond a single request/response cycle + assert not self.client_is_waiting_for_100_continue + self._respond_to_state_changes(old_states) + + def _process_error(self, role: Type[Sentinel]) -> None: + old_states = dict(self._cstate.states) + self._cstate.process_error(role) + self._respond_to_state_changes(old_states) + + def _server_switch_event(self, event: Event) -> Optional[Type[Sentinel]]: + if type(event) is InformationalResponse and event.status_code == 101: + return _SWITCH_UPGRADE + if type(event) is Response: + if ( + _SWITCH_CONNECT in self._cstate.pending_switch_proposals + and 200 <= event.status_code < 300 + ): + return _SWITCH_CONNECT + return None + + # All events go through here + def _process_event(self, role: Type[Sentinel], event: Event) -> None: + # First, pass the event through the state machine to make sure it + # succeeds. + old_states = dict(self._cstate.states) + if role is CLIENT and type(event) is Request: + if event.method == b"CONNECT": + self._cstate.process_client_switch_proposal(_SWITCH_CONNECT) + if get_comma_header(event.headers, b"upgrade"): + self._cstate.process_client_switch_proposal(_SWITCH_UPGRADE) + server_switch_event = None + if role is SERVER: + server_switch_event = self._server_switch_event(event) + self._cstate.process_event(role, type(event), server_switch_event) + + # Then perform the updates triggered by it. + + if type(event) is Request: + self._request_method = event.method + + if role is self.their_role and type(event) in ( + Request, + Response, + InformationalResponse, + ): + event = cast(Union[Request, Response, InformationalResponse], event) + self.their_http_version = event.http_version + + # Keep alive handling + # + # RFC 7230 doesn't really say what one should do if Connection: close + # shows up on a 1xx InformationalResponse. I think the idea is that + # this is not supposed to happen. In any case, if it does happen, we + # ignore it. + if type(event) in (Request, Response) and not _keep_alive( + cast(Union[Request, Response], event) + ): + self._cstate.process_keep_alive_disabled() + + # 100-continue + if type(event) is Request and has_expect_100_continue(event): + self.client_is_waiting_for_100_continue = True + if type(event) in (InformationalResponse, Response): + self.client_is_waiting_for_100_continue = False + if role is CLIENT and type(event) in (Data, EndOfMessage): + self.client_is_waiting_for_100_continue = False + + self._respond_to_state_changes(old_states, event) + + def _get_io_object( + self, + role: Type[Sentinel], + event: Optional[Event], + io_dict: Union[ReadersType, WritersType], + ) -> Optional[Callable[..., Any]]: + # event may be None; it's only used when entering SEND_BODY + state = self._cstate.states[role] + if state is SEND_BODY: + # Special case: the io_dict has a dict of reader/writer factories + # that depend on the request/response framing. + framing_type, args = _body_framing( + cast(bytes, self._request_method), cast(Union[Request, Response], event) + ) + return io_dict[SEND_BODY][framing_type](*args) # type: ignore[index] + else: + # General case: the io_dict just has the appropriate reader/writer + # for this state + return io_dict.get((role, state)) # type: ignore[return-value] + + # This must be called after any action that might have caused + # self._cstate.states to change. + def _respond_to_state_changes( + self, + old_states: Dict[Type[Sentinel], Type[Sentinel]], + event: Optional[Event] = None, + ) -> None: + # Update reader/writer + if self.our_state != old_states[self.our_role]: + self._writer = self._get_io_object(self.our_role, event, WRITERS) + if self.their_state != old_states[self.their_role]: + self._reader = self._get_io_object(self.their_role, event, READERS) + + @property + def trailing_data(self) -> Tuple[bytes, bool]: + """Data that has been received, but not yet processed, represented as + a tuple with two elements, where the first is a byte-string containing + the unprocessed data itself, and the second is a bool that is True if + the receive connection was closed. + + See :ref:`switching-protocols` for discussion of why you'd want this. + """ + return (bytes(self._receive_buffer), self._receive_buffer_closed) + + def receive_data(self, data: bytes) -> None: + """Add data to our internal receive buffer. + + This does not actually do any processing on the data, just stores + it. To trigger processing, you have to call :meth:`next_event`. + + Args: + data (:term:`bytes-like object`): + The new data that was just received. + + Special case: If *data* is an empty byte-string like ``b""``, + then this indicates that the remote side has closed the + connection (end of file). Normally this is convenient, because + standard Python APIs like :meth:`file.read` or + :meth:`socket.recv` use ``b""`` to indicate end-of-file, while + other failures to read are indicated using other mechanisms + like raising :exc:`TimeoutError`. When using such an API you + can just blindly pass through whatever you get from ``read`` + to :meth:`receive_data`, and everything will work. + + But, if you have an API where reading an empty string is a + valid non-EOF condition, then you need to be aware of this and + make sure to check for such strings and avoid passing them to + :meth:`receive_data`. + + Returns: + Nothing, but after calling this you should call :meth:`next_event` + to parse the newly received data. + + Raises: + RuntimeError: + Raised if you pass an empty *data*, indicating EOF, and then + pass a non-empty *data*, indicating more data that somehow + arrived after the EOF. + + (Calling ``receive_data(b"")`` multiple times is fine, + and equivalent to calling it once.) + + """ + if data: + if self._receive_buffer_closed: + raise RuntimeError("received close, then received more data?") + self._receive_buffer += data + else: + self._receive_buffer_closed = True + + def _extract_next_receive_event( + self, + ) -> Union[Event, Type[NEED_DATA], Type[PAUSED]]: + state = self.their_state + # We don't pause immediately when they enter DONE, because even in + # DONE state we can still process a ConnectionClosed() event. But + # if we have data in our buffer, then we definitely aren't getting + # a ConnectionClosed() immediately and we need to pause. + if state is DONE and self._receive_buffer: + return PAUSED + if state is MIGHT_SWITCH_PROTOCOL or state is SWITCHED_PROTOCOL: + return PAUSED + assert self._reader is not None + event = self._reader(self._receive_buffer) + if event is None: + if not self._receive_buffer and self._receive_buffer_closed: + # In some unusual cases (basically just HTTP/1.0 bodies), EOF + # triggers an actual protocol event; in that case, we want to + # return that event, and then the state will change and we'll + # get called again to generate the actual ConnectionClosed(). + if hasattr(self._reader, "read_eof"): + event = self._reader.read_eof() # type: ignore[attr-defined] + else: + event = ConnectionClosed() + if event is None: + event = NEED_DATA + return event # type: ignore[no-any-return] + + def next_event(self) -> Union[Event, Type[NEED_DATA], Type[PAUSED]]: + """Parse the next event out of our receive buffer, update our internal + state, and return it. + + This is a mutating operation -- think of it like calling :func:`next` + on an iterator. + + Returns: + : One of three things: + + 1) An event object -- see :ref:`events`. + + 2) The special constant :data:`NEED_DATA`, which indicates that + you need to read more data from your socket and pass it to + :meth:`receive_data` before this method will be able to return + any more events. + + 3) The special constant :data:`PAUSED`, which indicates that we + are not in a state where we can process incoming data (usually + because the peer has finished their part of the current + request/response cycle, and you have not yet called + :meth:`start_next_cycle`). See :ref:`flow-control` for details. + + Raises: + RemoteProtocolError: + The peer has misbehaved. You should close the connection + (possibly after sending some kind of 4xx response). + + Once this method returns :class:`ConnectionClosed` once, then all + subsequent calls will also return :class:`ConnectionClosed`. + + If this method raises any exception besides :exc:`RemoteProtocolError` + then that's a bug -- if it happens please file a bug report! + + If this method raises any exception then it also sets + :attr:`Connection.their_state` to :data:`ERROR` -- see + :ref:`error-handling` for discussion. + + """ + + if self.their_state is ERROR: + raise RemoteProtocolError("Can't receive data when peer state is ERROR") + try: + event = self._extract_next_receive_event() + if event not in [NEED_DATA, PAUSED]: + self._process_event(self.their_role, cast(Event, event)) + if event is NEED_DATA: + if len(self._receive_buffer) > self._max_incomplete_event_size: + # 431 is "Request header fields too large" which is pretty + # much the only situation where we can get here + raise RemoteProtocolError( + "Receive buffer too long", error_status_hint=431 + ) + if self._receive_buffer_closed: + # We're still trying to complete some event, but that's + # never going to happen because no more data is coming + raise RemoteProtocolError("peer unexpectedly closed connection") + return event + except BaseException as exc: + self._process_error(self.their_role) + if isinstance(exc, LocalProtocolError): + exc._reraise_as_remote_protocol_error() + else: + raise + + def send(self, event: Event) -> Optional[bytes]: + """Convert a high-level event into bytes that can be sent to the peer, + while updating our internal state machine. + + Args: + event: The :ref:`event ` to send. + + Returns: + If ``type(event) is ConnectionClosed``, then returns + ``None``. Otherwise, returns a :term:`bytes-like object`. + + Raises: + LocalProtocolError: + Sending this event at this time would violate our + understanding of the HTTP/1.1 protocol. + + If this method raises any exception then it also sets + :attr:`Connection.our_state` to :data:`ERROR` -- see + :ref:`error-handling` for discussion. + + """ + data_list = self.send_with_data_passthrough(event) + if data_list is None: + return None + else: + return b"".join(data_list) + + def send_with_data_passthrough(self, event: Event) -> Optional[List[bytes]]: + """Identical to :meth:`send`, except that in situations where + :meth:`send` returns a single :term:`bytes-like object`, this instead + returns a list of them -- and when sending a :class:`Data` event, this + list is guaranteed to contain the exact object you passed in as + :attr:`Data.data`. See :ref:`sendfile` for discussion. + + """ + if self.our_state is ERROR: + raise LocalProtocolError("Can't send data when our state is ERROR") + try: + if type(event) is Response: + event = self._clean_up_response_headers_for_sending(event) + # We want to call _process_event before calling the writer, + # because if someone tries to do something invalid then this will + # give a sensible error message, while our writers all just assume + # they will only receive valid events. But, _process_event might + # change self._writer. So we have to do a little dance: + writer = self._writer + self._process_event(self.our_role, event) + if type(event) is ConnectionClosed: + return None + else: + # In any situation where writer is None, process_event should + # have raised ProtocolError + assert writer is not None + data_list: List[bytes] = [] + writer(event, data_list.append) + return data_list + except: + self._process_error(self.our_role) + raise + + def send_failed(self) -> None: + """Notify the state machine that we failed to send the data it gave + us. + + This causes :attr:`Connection.our_state` to immediately become + :data:`ERROR` -- see :ref:`error-handling` for discussion. + + """ + self._process_error(self.our_role) + + # When sending a Response, we take responsibility for a few things: + # + # - Sometimes you MUST set Connection: close. We take care of those + # times. (You can also set it yourself if you want, and if you do then + # we'll respect that and close the connection at the right time. But you + # don't have to worry about that unless you want to.) + # + # - The user has to set Content-Length if they want it. Otherwise, for + # responses that have bodies (e.g. not HEAD), then we will automatically + # select the right mechanism for streaming a body of unknown length, + # which depends on depending on the peer's HTTP version. + # + # This function's *only* responsibility is making sure headers are set up + # right -- everything downstream just looks at the headers. There are no + # side channels. + def _clean_up_response_headers_for_sending(self, response: Response) -> Response: + assert type(response) is Response + + headers = response.headers + need_close = False + + # HEAD requests need some special handling: they always act like they + # have Content-Length: 0, and that's how _body_framing treats + # them. But their headers are supposed to match what we would send if + # the request was a GET. (Technically there is one deviation allowed: + # we're allowed to leave out the framing headers -- see + # https://tools.ietf.org/html/rfc7231#section-4.3.2 . But it's just as + # easy to get them right.) + method_for_choosing_headers = cast(bytes, self._request_method) + if method_for_choosing_headers == b"HEAD": + method_for_choosing_headers = b"GET" + framing_type, _ = _body_framing(method_for_choosing_headers, response) + if framing_type in ("chunked", "http/1.0"): + # This response has a body of unknown length. + # If our peer is HTTP/1.1, we use Transfer-Encoding: chunked + # If our peer is HTTP/1.0, we use no framing headers, and close the + # connection afterwards. + # + # Make sure to clear Content-Length (in principle user could have + # set both and then we ignored Content-Length b/c + # Transfer-Encoding overwrote it -- this would be naughty of them, + # but the HTTP spec says that if our peer does this then we have + # to fix it instead of erroring out, so we'll accord the user the + # same respect). + headers = set_comma_header(headers, b"content-length", []) + if self.their_http_version is None or self.their_http_version < b"1.1": + # Either we never got a valid request and are sending back an + # error (their_http_version is None), so we assume the worst; + # or else we did get a valid HTTP/1.0 request, so we know that + # they don't understand chunked encoding. + headers = set_comma_header(headers, b"transfer-encoding", []) + # This is actually redundant ATM, since currently we + # unconditionally disable keep-alive when talking to HTTP/1.0 + # peers. But let's be defensive just in case we add + # Connection: keep-alive support later: + if self._request_method != b"HEAD": + need_close = True + else: + headers = set_comma_header(headers, b"transfer-encoding", [b"chunked"]) + + if not self._cstate.keep_alive or need_close: + # Make sure Connection: close is set + connection = set(get_comma_header(headers, b"connection")) + connection.discard(b"keep-alive") + connection.add(b"close") + headers = set_comma_header(headers, b"connection", sorted(connection)) + + return Response( + headers=headers, + status_code=response.status_code, + http_version=response.http_version, + reason=response.reason, + ) diff --git a/venv/lib/python3.12/site-packages/h11/_events.py b/venv/lib/python3.12/site-packages/h11/_events.py new file mode 100644 index 0000000..075bf8a --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_events.py @@ -0,0 +1,369 @@ +# High level events that make up HTTP/1.1 conversations. Loosely inspired by +# the corresponding events in hyper-h2: +# +# http://python-hyper.org/h2/en/stable/api.html#events +# +# Don't subclass these. Stuff will break. + +import re +from abc import ABC +from dataclasses import dataclass, field +from typing import Any, cast, Dict, List, Tuple, Union + +from ._abnf import method, request_target +from ._headers import Headers, normalize_and_validate +from ._util import bytesify, LocalProtocolError, validate + +# Everything in __all__ gets re-exported as part of the h11 public API. +__all__ = [ + "Event", + "Request", + "InformationalResponse", + "Response", + "Data", + "EndOfMessage", + "ConnectionClosed", +] + +method_re = re.compile(method.encode("ascii")) +request_target_re = re.compile(request_target.encode("ascii")) + + +class Event(ABC): + """ + Base class for h11 events. + """ + + __slots__ = () + + +@dataclass(init=False, frozen=True) +class Request(Event): + """The beginning of an HTTP request. + + Fields: + + .. attribute:: method + + An HTTP method, e.g. ``b"GET"`` or ``b"POST"``. Always a byte + string. :term:`Bytes-like objects ` and native + strings containing only ascii characters will be automatically + converted to byte strings. + + .. attribute:: target + + The target of an HTTP request, e.g. ``b"/index.html"``, or one of the + more exotic formats described in `RFC 7320, section 5.3 + `_. Always a byte + string. :term:`Bytes-like objects ` and native + strings containing only ascii characters will be automatically + converted to byte strings. + + .. attribute:: headers + + Request headers, represented as a list of (name, value) pairs. See + :ref:`the header normalization rules ` for details. + + .. attribute:: http_version + + The HTTP protocol version, represented as a byte string like + ``b"1.1"``. See :ref:`the HTTP version normalization rules + ` for details. + + """ + + __slots__ = ("method", "headers", "target", "http_version") + + method: bytes + headers: Headers + target: bytes + http_version: bytes + + def __init__( + self, + *, + method: Union[bytes, str], + headers: Union[Headers, List[Tuple[bytes, bytes]], List[Tuple[str, str]]], + target: Union[bytes, str], + http_version: Union[bytes, str] = b"1.1", + _parsed: bool = False, + ) -> None: + super().__init__() + if isinstance(headers, Headers): + object.__setattr__(self, "headers", headers) + else: + object.__setattr__( + self, "headers", normalize_and_validate(headers, _parsed=_parsed) + ) + if not _parsed: + object.__setattr__(self, "method", bytesify(method)) + object.__setattr__(self, "target", bytesify(target)) + object.__setattr__(self, "http_version", bytesify(http_version)) + else: + object.__setattr__(self, "method", method) + object.__setattr__(self, "target", target) + object.__setattr__(self, "http_version", http_version) + + # "A server MUST respond with a 400 (Bad Request) status code to any + # HTTP/1.1 request message that lacks a Host header field and to any + # request message that contains more than one Host header field or a + # Host header field with an invalid field-value." + # -- https://tools.ietf.org/html/rfc7230#section-5.4 + host_count = 0 + for name, value in self.headers: + if name == b"host": + host_count += 1 + if self.http_version == b"1.1" and host_count == 0: + raise LocalProtocolError("Missing mandatory Host: header") + if host_count > 1: + raise LocalProtocolError("Found multiple Host: headers") + + validate(method_re, self.method, "Illegal method characters") + validate(request_target_re, self.target, "Illegal target characters") + + # This is an unhashable type. + __hash__ = None # type: ignore + + +@dataclass(init=False, frozen=True) +class _ResponseBase(Event): + __slots__ = ("headers", "http_version", "reason", "status_code") + + headers: Headers + http_version: bytes + reason: bytes + status_code: int + + def __init__( + self, + *, + headers: Union[Headers, List[Tuple[bytes, bytes]], List[Tuple[str, str]]], + status_code: int, + http_version: Union[bytes, str] = b"1.1", + reason: Union[bytes, str] = b"", + _parsed: bool = False, + ) -> None: + super().__init__() + if isinstance(headers, Headers): + object.__setattr__(self, "headers", headers) + else: + object.__setattr__( + self, "headers", normalize_and_validate(headers, _parsed=_parsed) + ) + if not _parsed: + object.__setattr__(self, "reason", bytesify(reason)) + object.__setattr__(self, "http_version", bytesify(http_version)) + if not isinstance(status_code, int): + raise LocalProtocolError("status code must be integer") + # Because IntEnum objects are instances of int, but aren't + # duck-compatible (sigh), see gh-72. + object.__setattr__(self, "status_code", int(status_code)) + else: + object.__setattr__(self, "reason", reason) + object.__setattr__(self, "http_version", http_version) + object.__setattr__(self, "status_code", status_code) + + self.__post_init__() + + def __post_init__(self) -> None: + pass + + # This is an unhashable type. + __hash__ = None # type: ignore + + +@dataclass(init=False, frozen=True) +class InformationalResponse(_ResponseBase): + """An HTTP informational response. + + Fields: + + .. attribute:: status_code + + The status code of this response, as an integer. For an + :class:`InformationalResponse`, this is always in the range [100, + 200). + + .. attribute:: headers + + Request headers, represented as a list of (name, value) pairs. See + :ref:`the header normalization rules ` for + details. + + .. attribute:: http_version + + The HTTP protocol version, represented as a byte string like + ``b"1.1"``. See :ref:`the HTTP version normalization rules + ` for details. + + .. attribute:: reason + + The reason phrase of this response, as a byte string. For example: + ``b"OK"``, or ``b"Not Found"``. + + """ + + def __post_init__(self) -> None: + if not (100 <= self.status_code < 200): + raise LocalProtocolError( + "InformationalResponse status_code should be in range " + "[100, 200), not {}".format(self.status_code) + ) + + # This is an unhashable type. + __hash__ = None # type: ignore + + +@dataclass(init=False, frozen=True) +class Response(_ResponseBase): + """The beginning of an HTTP response. + + Fields: + + .. attribute:: status_code + + The status code of this response, as an integer. For an + :class:`Response`, this is always in the range [200, + 1000). + + .. attribute:: headers + + Request headers, represented as a list of (name, value) pairs. See + :ref:`the header normalization rules ` for details. + + .. attribute:: http_version + + The HTTP protocol version, represented as a byte string like + ``b"1.1"``. See :ref:`the HTTP version normalization rules + ` for details. + + .. attribute:: reason + + The reason phrase of this response, as a byte string. For example: + ``b"OK"``, or ``b"Not Found"``. + + """ + + def __post_init__(self) -> None: + if not (200 <= self.status_code < 1000): + raise LocalProtocolError( + "Response status_code should be in range [200, 1000), not {}".format( + self.status_code + ) + ) + + # This is an unhashable type. + __hash__ = None # type: ignore + + +@dataclass(init=False, frozen=True) +class Data(Event): + """Part of an HTTP message body. + + Fields: + + .. attribute:: data + + A :term:`bytes-like object` containing part of a message body. Or, if + using the ``combine=False`` argument to :meth:`Connection.send`, then + any object that your socket writing code knows what to do with, and for + which calling :func:`len` returns the number of bytes that will be + written -- see :ref:`sendfile` for details. + + .. attribute:: chunk_start + + A marker that indicates whether this data object is from the start of a + chunked transfer encoding chunk. This field is ignored when when a Data + event is provided to :meth:`Connection.send`: it is only valid on + events emitted from :meth:`Connection.next_event`. You probably + shouldn't use this attribute at all; see + :ref:`chunk-delimiters-are-bad` for details. + + .. attribute:: chunk_end + + A marker that indicates whether this data object is the last for a + given chunked transfer encoding chunk. This field is ignored when when + a Data event is provided to :meth:`Connection.send`: it is only valid + on events emitted from :meth:`Connection.next_event`. You probably + shouldn't use this attribute at all; see + :ref:`chunk-delimiters-are-bad` for details. + + """ + + __slots__ = ("data", "chunk_start", "chunk_end") + + data: bytes + chunk_start: bool + chunk_end: bool + + def __init__( + self, data: bytes, chunk_start: bool = False, chunk_end: bool = False + ) -> None: + object.__setattr__(self, "data", data) + object.__setattr__(self, "chunk_start", chunk_start) + object.__setattr__(self, "chunk_end", chunk_end) + + # This is an unhashable type. + __hash__ = None # type: ignore + + +# XX FIXME: "A recipient MUST ignore (or consider as an error) any fields that +# are forbidden to be sent in a trailer, since processing them as if they were +# present in the header section might bypass external security filters." +# https://svn.tools.ietf.org/svn/wg/httpbis/specs/rfc7230.html#chunked.trailer.part +# Unfortunately, the list of forbidden fields is long and vague :-/ +@dataclass(init=False, frozen=True) +class EndOfMessage(Event): + """The end of an HTTP message. + + Fields: + + .. attribute:: headers + + Default value: ``[]`` + + Any trailing headers attached to this message, represented as a list of + (name, value) pairs. See :ref:`the header normalization rules + ` for details. + + Must be empty unless ``Transfer-Encoding: chunked`` is in use. + + """ + + __slots__ = ("headers",) + + headers: Headers + + def __init__( + self, + *, + headers: Union[ + Headers, List[Tuple[bytes, bytes]], List[Tuple[str, str]], None + ] = None, + _parsed: bool = False, + ) -> None: + super().__init__() + if headers is None: + headers = Headers([]) + elif not isinstance(headers, Headers): + headers = normalize_and_validate(headers, _parsed=_parsed) + + object.__setattr__(self, "headers", headers) + + # This is an unhashable type. + __hash__ = None # type: ignore + + +@dataclass(frozen=True) +class ConnectionClosed(Event): + """This event indicates that the sender has closed their outgoing + connection. + + Note that this does not necessarily mean that they can't *receive* further + data, because TCP connections are composed to two one-way channels which + can be closed independently. See :ref:`closing` for details. + + No fields. + """ + + pass diff --git a/venv/lib/python3.12/site-packages/h11/_headers.py b/venv/lib/python3.12/site-packages/h11/_headers.py new file mode 100644 index 0000000..b97d020 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_headers.py @@ -0,0 +1,278 @@ +import re +from typing import AnyStr, cast, List, overload, Sequence, Tuple, TYPE_CHECKING, Union + +from ._abnf import field_name, field_value +from ._util import bytesify, LocalProtocolError, validate + +if TYPE_CHECKING: + from ._events import Request + +try: + from typing import Literal +except ImportError: + from typing_extensions import Literal # type: ignore + + +# Facts +# ----- +# +# Headers are: +# keys: case-insensitive ascii +# values: mixture of ascii and raw bytes +# +# "Historically, HTTP has allowed field content with text in the ISO-8859-1 +# charset [ISO-8859-1], supporting other charsets only through use of +# [RFC2047] encoding. In practice, most HTTP header field values use only a +# subset of the US-ASCII charset [USASCII]. Newly defined header fields SHOULD +# limit their field values to US-ASCII octets. A recipient SHOULD treat other +# octets in field content (obs-text) as opaque data." +# And it deprecates all non-ascii values +# +# Leading/trailing whitespace in header names is forbidden +# +# Values get leading/trailing whitespace stripped +# +# Content-Disposition actually needs to contain unicode semantically; to +# accomplish this it has a terrifically weird way of encoding the filename +# itself as ascii (and even this still has lots of cross-browser +# incompatibilities) +# +# Order is important: +# "a proxy MUST NOT change the order of these field values when forwarding a +# message" +# (and there are several headers where the order indicates a preference) +# +# Multiple occurences of the same header: +# "A sender MUST NOT generate multiple header fields with the same field name +# in a message unless either the entire field value for that header field is +# defined as a comma-separated list [or the header is Set-Cookie which gets a +# special exception]" - RFC 7230. (cookies are in RFC 6265) +# +# So every header aside from Set-Cookie can be merged by b", ".join if it +# occurs repeatedly. But, of course, they can't necessarily be split by +# .split(b","), because quoting. +# +# Given all this mess (case insensitive, duplicates allowed, order is +# important, ...), there doesn't appear to be any standard way to handle +# headers in Python -- they're almost like dicts, but... actually just +# aren't. For now we punt and just use a super simple representation: headers +# are a list of pairs +# +# [(name1, value1), (name2, value2), ...] +# +# where all entries are bytestrings, names are lowercase and have no +# leading/trailing whitespace, and values are bytestrings with no +# leading/trailing whitespace. Searching and updating are done via naive O(n) +# methods. +# +# Maybe a dict-of-lists would be better? + +_content_length_re = re.compile(rb"[0-9]+") +_field_name_re = re.compile(field_name.encode("ascii")) +_field_value_re = re.compile(field_value.encode("ascii")) + + +class Headers(Sequence[Tuple[bytes, bytes]]): + """ + A list-like interface that allows iterating over headers as byte-pairs + of (lowercased-name, value). + + Internally we actually store the representation as three-tuples, + including both the raw original casing, in order to preserve casing + over-the-wire, and the lowercased name, for case-insensitive comparisions. + + r = Request( + method="GET", + target="/", + headers=[("Host", "example.org"), ("Connection", "keep-alive")], + http_version="1.1", + ) + assert r.headers == [ + (b"host", b"example.org"), + (b"connection", b"keep-alive") + ] + assert r.headers.raw_items() == [ + (b"Host", b"example.org"), + (b"Connection", b"keep-alive") + ] + """ + + __slots__ = "_full_items" + + def __init__(self, full_items: List[Tuple[bytes, bytes, bytes]]) -> None: + self._full_items = full_items + + def __bool__(self) -> bool: + return bool(self._full_items) + + def __eq__(self, other: object) -> bool: + return list(self) == list(other) # type: ignore + + def __len__(self) -> int: + return len(self._full_items) + + def __repr__(self) -> str: + return "" % repr(list(self)) + + def __getitem__(self, idx: int) -> Tuple[bytes, bytes]: # type: ignore[override] + _, name, value = self._full_items[idx] + return (name, value) + + def raw_items(self) -> List[Tuple[bytes, bytes]]: + return [(raw_name, value) for raw_name, _, value in self._full_items] + + +HeaderTypes = Union[ + List[Tuple[bytes, bytes]], + List[Tuple[bytes, str]], + List[Tuple[str, bytes]], + List[Tuple[str, str]], +] + + +@overload +def normalize_and_validate(headers: Headers, _parsed: Literal[True]) -> Headers: + ... + + +@overload +def normalize_and_validate(headers: HeaderTypes, _parsed: Literal[False]) -> Headers: + ... + + +@overload +def normalize_and_validate( + headers: Union[Headers, HeaderTypes], _parsed: bool = False +) -> Headers: + ... + + +def normalize_and_validate( + headers: Union[Headers, HeaderTypes], _parsed: bool = False +) -> Headers: + new_headers = [] + seen_content_length = None + saw_transfer_encoding = False + for name, value in headers: + # For headers coming out of the parser, we can safely skip some steps, + # because it always returns bytes and has already run these regexes + # over the data: + if not _parsed: + name = bytesify(name) + value = bytesify(value) + validate(_field_name_re, name, "Illegal header name {!r}", name) + validate(_field_value_re, value, "Illegal header value {!r}", value) + assert isinstance(name, bytes) + assert isinstance(value, bytes) + + raw_name = name + name = name.lower() + if name == b"content-length": + lengths = {length.strip() for length in value.split(b",")} + if len(lengths) != 1: + raise LocalProtocolError("conflicting Content-Length headers") + value = lengths.pop() + validate(_content_length_re, value, "bad Content-Length") + if seen_content_length is None: + seen_content_length = value + new_headers.append((raw_name, name, value)) + elif seen_content_length != value: + raise LocalProtocolError("conflicting Content-Length headers") + elif name == b"transfer-encoding": + # "A server that receives a request message with a transfer coding + # it does not understand SHOULD respond with 501 (Not + # Implemented)." + # https://tools.ietf.org/html/rfc7230#section-3.3.1 + if saw_transfer_encoding: + raise LocalProtocolError( + "multiple Transfer-Encoding headers", error_status_hint=501 + ) + # "All transfer-coding names are case-insensitive" + # -- https://tools.ietf.org/html/rfc7230#section-4 + value = value.lower() + if value != b"chunked": + raise LocalProtocolError( + "Only Transfer-Encoding: chunked is supported", + error_status_hint=501, + ) + saw_transfer_encoding = True + new_headers.append((raw_name, name, value)) + else: + new_headers.append((raw_name, name, value)) + return Headers(new_headers) + + +def get_comma_header(headers: Headers, name: bytes) -> List[bytes]: + # Should only be used for headers whose value is a list of + # comma-separated, case-insensitive values. + # + # The header name `name` is expected to be lower-case bytes. + # + # Connection: meets these criteria (including cast insensitivity). + # + # Content-Length: technically is just a single value (1*DIGIT), but the + # standard makes reference to implementations that do multiple values, and + # using this doesn't hurt. Ditto, case insensitivity doesn't things either + # way. + # + # Transfer-Encoding: is more complex (allows for quoted strings), so + # splitting on , is actually wrong. For example, this is legal: + # + # Transfer-Encoding: foo; options="1,2", chunked + # + # and should be parsed as + # + # foo; options="1,2" + # chunked + # + # but this naive function will parse it as + # + # foo; options="1 + # 2" + # chunked + # + # However, this is okay because the only thing we are going to do with + # any Transfer-Encoding is reject ones that aren't just "chunked", so + # both of these will be treated the same anyway. + # + # Expect: the only legal value is the literal string + # "100-continue". Splitting on commas is harmless. Case insensitive. + # + out: List[bytes] = [] + for _, found_name, found_raw_value in headers._full_items: + if found_name == name: + found_raw_value = found_raw_value.lower() + for found_split_value in found_raw_value.split(b","): + found_split_value = found_split_value.strip() + if found_split_value: + out.append(found_split_value) + return out + + +def set_comma_header(headers: Headers, name: bytes, new_values: List[bytes]) -> Headers: + # The header name `name` is expected to be lower-case bytes. + # + # Note that when we store the header we use title casing for the header + # names, in order to match the conventional HTTP header style. + # + # Simply calling `.title()` is a blunt approach, but it's correct + # here given the cases where we're using `set_comma_header`... + # + # Connection, Content-Length, Transfer-Encoding. + new_headers: List[Tuple[bytes, bytes]] = [] + for found_raw_name, found_name, found_raw_value in headers._full_items: + if found_name != name: + new_headers.append((found_raw_name, found_raw_value)) + for new_value in new_values: + new_headers.append((name.title(), new_value)) + return normalize_and_validate(new_headers) + + +def has_expect_100_continue(request: "Request") -> bool: + # https://tools.ietf.org/html/rfc7231#section-5.1.1 + # "A server that receives a 100-continue expectation in an HTTP/1.0 request + # MUST ignore that expectation." + if request.http_version < b"1.1": + return False + expect = get_comma_header(request.headers, b"expect") + return b"100-continue" in expect diff --git a/venv/lib/python3.12/site-packages/h11/_readers.py b/venv/lib/python3.12/site-packages/h11/_readers.py new file mode 100644 index 0000000..08a9574 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_readers.py @@ -0,0 +1,247 @@ +# Code to read HTTP data +# +# Strategy: each reader is a callable which takes a ReceiveBuffer object, and +# either: +# 1) consumes some of it and returns an Event +# 2) raises a LocalProtocolError (for consistency -- e.g. we call validate() +# and it might raise a LocalProtocolError, so simpler just to always use +# this) +# 3) returns None, meaning "I need more data" +# +# If they have a .read_eof attribute, then this will be called if an EOF is +# received -- but this is optional. Either way, the actual ConnectionClosed +# event will be generated afterwards. +# +# READERS is a dict describing how to pick a reader. It maps states to either: +# - a reader +# - or, for body readers, a dict of per-framing reader factories + +import re +from typing import Any, Callable, Dict, Iterable, NoReturn, Optional, Tuple, Type, Union + +from ._abnf import chunk_header, header_field, request_line, status_line +from ._events import Data, EndOfMessage, InformationalResponse, Request, Response +from ._receivebuffer import ReceiveBuffer +from ._state import ( + CLIENT, + CLOSED, + DONE, + IDLE, + MUST_CLOSE, + SEND_BODY, + SEND_RESPONSE, + SERVER, +) +from ._util import LocalProtocolError, RemoteProtocolError, Sentinel, validate + +__all__ = ["READERS"] + +header_field_re = re.compile(header_field.encode("ascii")) +obs_fold_re = re.compile(rb"[ \t]+") + + +def _obsolete_line_fold(lines: Iterable[bytes]) -> Iterable[bytes]: + it = iter(lines) + last: Optional[bytes] = None + for line in it: + match = obs_fold_re.match(line) + if match: + if last is None: + raise LocalProtocolError("continuation line at start of headers") + if not isinstance(last, bytearray): + # Cast to a mutable type, avoiding copy on append to ensure O(n) time + last = bytearray(last) + last += b" " + last += line[match.end() :] + else: + if last is not None: + yield last + last = line + if last is not None: + yield last + + +def _decode_header_lines( + lines: Iterable[bytes], +) -> Iterable[Tuple[bytes, bytes]]: + for line in _obsolete_line_fold(lines): + matches = validate(header_field_re, line, "illegal header line: {!r}", line) + yield (matches["field_name"], matches["field_value"]) + + +request_line_re = re.compile(request_line.encode("ascii")) + + +def maybe_read_from_IDLE_client(buf: ReceiveBuffer) -> Optional[Request]: + lines = buf.maybe_extract_lines() + if lines is None: + if buf.is_next_line_obviously_invalid_request_line(): + raise LocalProtocolError("illegal request line") + return None + if not lines: + raise LocalProtocolError("no request line received") + matches = validate( + request_line_re, lines[0], "illegal request line: {!r}", lines[0] + ) + return Request( + headers=list(_decode_header_lines(lines[1:])), _parsed=True, **matches + ) + + +status_line_re = re.compile(status_line.encode("ascii")) + + +def maybe_read_from_SEND_RESPONSE_server( + buf: ReceiveBuffer, +) -> Union[InformationalResponse, Response, None]: + lines = buf.maybe_extract_lines() + if lines is None: + if buf.is_next_line_obviously_invalid_request_line(): + raise LocalProtocolError("illegal request line") + return None + if not lines: + raise LocalProtocolError("no response line received") + matches = validate(status_line_re, lines[0], "illegal status line: {!r}", lines[0]) + http_version = ( + b"1.1" if matches["http_version"] is None else matches["http_version"] + ) + reason = b"" if matches["reason"] is None else matches["reason"] + status_code = int(matches["status_code"]) + class_: Union[Type[InformationalResponse], Type[Response]] = ( + InformationalResponse if status_code < 200 else Response + ) + return class_( + headers=list(_decode_header_lines(lines[1:])), + _parsed=True, + status_code=status_code, + reason=reason, + http_version=http_version, + ) + + +class ContentLengthReader: + def __init__(self, length: int) -> None: + self._length = length + self._remaining = length + + def __call__(self, buf: ReceiveBuffer) -> Union[Data, EndOfMessage, None]: + if self._remaining == 0: + return EndOfMessage() + data = buf.maybe_extract_at_most(self._remaining) + if data is None: + return None + self._remaining -= len(data) + return Data(data=data) + + def read_eof(self) -> NoReturn: + raise RemoteProtocolError( + "peer closed connection without sending complete message body " + "(received {} bytes, expected {})".format( + self._length - self._remaining, self._length + ) + ) + + +chunk_header_re = re.compile(chunk_header.encode("ascii")) + + +class ChunkedReader: + def __init__(self) -> None: + self._bytes_in_chunk = 0 + # After reading a chunk, we have to throw away the trailing \r\n; if + # this is >0 then we discard that many bytes before resuming regular + # de-chunkification. + self._bytes_to_discard = 0 + self._reading_trailer = False + + def __call__(self, buf: ReceiveBuffer) -> Union[Data, EndOfMessage, None]: + if self._reading_trailer: + lines = buf.maybe_extract_lines() + if lines is None: + return None + return EndOfMessage(headers=list(_decode_header_lines(lines))) + if self._bytes_to_discard > 0: + data = buf.maybe_extract_at_most(self._bytes_to_discard) + if data is None: + return None + self._bytes_to_discard -= len(data) + if self._bytes_to_discard > 0: + return None + # else, fall through and read some more + assert self._bytes_to_discard == 0 + if self._bytes_in_chunk == 0: + # We need to refill our chunk count + chunk_header = buf.maybe_extract_next_line() + if chunk_header is None: + return None + matches = validate( + chunk_header_re, + chunk_header, + "illegal chunk header: {!r}", + chunk_header, + ) + # XX FIXME: we discard chunk extensions. Does anyone care? + self._bytes_in_chunk = int(matches["chunk_size"], base=16) + if self._bytes_in_chunk == 0: + self._reading_trailer = True + return self(buf) + chunk_start = True + else: + chunk_start = False + assert self._bytes_in_chunk > 0 + data = buf.maybe_extract_at_most(self._bytes_in_chunk) + if data is None: + return None + self._bytes_in_chunk -= len(data) + if self._bytes_in_chunk == 0: + self._bytes_to_discard = 2 + chunk_end = True + else: + chunk_end = False + return Data(data=data, chunk_start=chunk_start, chunk_end=chunk_end) + + def read_eof(self) -> NoReturn: + raise RemoteProtocolError( + "peer closed connection without sending complete message body " + "(incomplete chunked read)" + ) + + +class Http10Reader: + def __call__(self, buf: ReceiveBuffer) -> Optional[Data]: + data = buf.maybe_extract_at_most(999999999) + if data is None: + return None + return Data(data=data) + + def read_eof(self) -> EndOfMessage: + return EndOfMessage() + + +def expect_nothing(buf: ReceiveBuffer) -> None: + if buf: + raise LocalProtocolError("Got data when expecting EOF") + return None + + +ReadersType = Dict[ + Union[Type[Sentinel], Tuple[Type[Sentinel], Type[Sentinel]]], + Union[Callable[..., Any], Dict[str, Callable[..., Any]]], +] + +READERS: ReadersType = { + (CLIENT, IDLE): maybe_read_from_IDLE_client, + (SERVER, IDLE): maybe_read_from_SEND_RESPONSE_server, + (SERVER, SEND_RESPONSE): maybe_read_from_SEND_RESPONSE_server, + (CLIENT, DONE): expect_nothing, + (CLIENT, MUST_CLOSE): expect_nothing, + (CLIENT, CLOSED): expect_nothing, + (SERVER, DONE): expect_nothing, + (SERVER, MUST_CLOSE): expect_nothing, + (SERVER, CLOSED): expect_nothing, + SEND_BODY: { + "chunked": ChunkedReader, + "content-length": ContentLengthReader, + "http/1.0": Http10Reader, + }, +} diff --git a/venv/lib/python3.12/site-packages/h11/_receivebuffer.py b/venv/lib/python3.12/site-packages/h11/_receivebuffer.py new file mode 100644 index 0000000..e5c4e08 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_receivebuffer.py @@ -0,0 +1,153 @@ +import re +import sys +from typing import List, Optional, Union + +__all__ = ["ReceiveBuffer"] + + +# Operations we want to support: +# - find next \r\n or \r\n\r\n (\n or \n\n are also acceptable), +# or wait until there is one +# - read at-most-N bytes +# Goals: +# - on average, do this fast +# - worst case, do this in O(n) where n is the number of bytes processed +# Plan: +# - store bytearray, offset, how far we've searched for a separator token +# - use the how-far-we've-searched data to avoid rescanning +# - while doing a stream of uninterrupted processing, advance offset instead +# of constantly copying +# WARNING: +# - I haven't benchmarked or profiled any of this yet. +# +# Note that starting in Python 3.4, deleting the initial n bytes from a +# bytearray is amortized O(n), thanks to some excellent work by Antoine +# Martin: +# +# https://bugs.python.org/issue19087 +# +# This means that if we only supported 3.4+, we could get rid of the code here +# involving self._start and self.compress, because it's doing exactly the same +# thing that bytearray now does internally. +# +# BUT unfortunately, we still support 2.7, and reading short segments out of a +# long buffer MUST be O(bytes read) to avoid DoS issues, so we can't actually +# delete this code. Yet: +# +# https://pythonclock.org/ +# +# (Two things to double-check first though: make sure PyPy also has the +# optimization, and benchmark to make sure it's a win, since we do have a +# slightly clever thing where we delay calling compress() until we've +# processed a whole event, which could in theory be slightly more efficient +# than the internal bytearray support.) +blank_line_regex = re.compile(b"\n\r?\n", re.MULTILINE) + + +class ReceiveBuffer: + def __init__(self) -> None: + self._data = bytearray() + self._next_line_search = 0 + self._multiple_lines_search = 0 + + def __iadd__(self, byteslike: Union[bytes, bytearray]) -> "ReceiveBuffer": + self._data += byteslike + return self + + def __bool__(self) -> bool: + return bool(len(self)) + + def __len__(self) -> int: + return len(self._data) + + # for @property unprocessed_data + def __bytes__(self) -> bytes: + return bytes(self._data) + + def _extract(self, count: int) -> bytearray: + # extracting an initial slice of the data buffer and return it + out = self._data[:count] + del self._data[:count] + + self._next_line_search = 0 + self._multiple_lines_search = 0 + + return out + + def maybe_extract_at_most(self, count: int) -> Optional[bytearray]: + """ + Extract a fixed number of bytes from the buffer. + """ + out = self._data[:count] + if not out: + return None + + return self._extract(count) + + def maybe_extract_next_line(self) -> Optional[bytearray]: + """ + Extract the first line, if it is completed in the buffer. + """ + # Only search in buffer space that we've not already looked at. + search_start_index = max(0, self._next_line_search - 1) + partial_idx = self._data.find(b"\r\n", search_start_index) + + if partial_idx == -1: + self._next_line_search = len(self._data) + return None + + # + 2 is to compensate len(b"\r\n") + idx = partial_idx + 2 + + return self._extract(idx) + + def maybe_extract_lines(self) -> Optional[List[bytearray]]: + """ + Extract everything up to the first blank line, and return a list of lines. + """ + # Handle the case where we have an immediate empty line. + if self._data[:1] == b"\n": + self._extract(1) + return [] + + if self._data[:2] == b"\r\n": + self._extract(2) + return [] + + # Only search in buffer space that we've not already looked at. + match = blank_line_regex.search(self._data, self._multiple_lines_search) + if match is None: + self._multiple_lines_search = max(0, len(self._data) - 2) + return None + + # Truncate the buffer and return it. + idx = match.span(0)[-1] + out = self._extract(idx) + lines = out.split(b"\n") + + for line in lines: + if line.endswith(b"\r"): + del line[-1] + + assert lines[-2] == lines[-1] == b"" + + del lines[-2:] + + return lines + + # In theory we should wait until `\r\n` before starting to validate + # incoming data. However it's interesting to detect (very) invalid data + # early given they might not even contain `\r\n` at all (hence only + # timeout will get rid of them). + # This is not a 100% effective detection but more of a cheap sanity check + # allowing for early abort in some useful cases. + # This is especially interesting when peer is messing up with HTTPS and + # sent us a TLS stream where we were expecting plain HTTP given all + # versions of TLS so far start handshake with a 0x16 message type code. + def is_next_line_obviously_invalid_request_line(self) -> bool: + try: + # HTTP header line must not contain non-printable characters + # and should not start with a space + return self._data[0] < 0x21 + except IndexError: + return False diff --git a/venv/lib/python3.12/site-packages/h11/_state.py b/venv/lib/python3.12/site-packages/h11/_state.py new file mode 100644 index 0000000..3593430 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_state.py @@ -0,0 +1,367 @@ +################################################################ +# The core state machine +################################################################ +# +# Rule 1: everything that affects the state machine and state transitions must +# live here in this file. As much as possible goes into the table-based +# representation, but for the bits that don't quite fit, the actual code and +# state must nonetheless live here. +# +# Rule 2: this file does not know about what role we're playing; it only knows +# about HTTP request/response cycles in the abstract. This ensures that we +# don't cheat and apply different rules to local and remote parties. +# +# +# Theory of operation +# =================== +# +# Possibly the simplest way to think about this is that we actually have 5 +# different state machines here. Yes, 5. These are: +# +# 1) The client state, with its complicated automaton (see the docs) +# 2) The server state, with its complicated automaton (see the docs) +# 3) The keep-alive state, with possible states {True, False} +# 4) The SWITCH_CONNECT state, with possible states {False, True} +# 5) The SWITCH_UPGRADE state, with possible states {False, True} +# +# For (3)-(5), the first state listed is the initial state. +# +# (1)-(3) are stored explicitly in member variables. The last +# two are stored implicitly in the pending_switch_proposals set as: +# (state of 4) == (_SWITCH_CONNECT in pending_switch_proposals) +# (state of 5) == (_SWITCH_UPGRADE in pending_switch_proposals) +# +# And each of these machines has two different kinds of transitions: +# +# a) Event-triggered +# b) State-triggered +# +# Event triggered is the obvious thing that you'd think it is: some event +# happens, and if it's the right event at the right time then a transition +# happens. But there are somewhat complicated rules for which machines can +# "see" which events. (As a rule of thumb, if a machine "sees" an event, this +# means two things: the event can affect the machine, and if the machine is +# not in a state where it expects that event then it's an error.) These rules +# are: +# +# 1) The client machine sees all h11.events objects emitted by the client. +# +# 2) The server machine sees all h11.events objects emitted by the server. +# +# It also sees the client's Request event. +# +# And sometimes, server events are annotated with a _SWITCH_* event. For +# example, we can have a (Response, _SWITCH_CONNECT) event, which is +# different from a regular Response event. +# +# 3) The keep-alive machine sees the process_keep_alive_disabled() event +# (which is derived from Request/Response events), and this event +# transitions it from True -> False, or from False -> False. There's no way +# to transition back. +# +# 4&5) The _SWITCH_* machines transition from False->True when we get a +# Request that proposes the relevant type of switch (via +# process_client_switch_proposals), and they go from True->False when we +# get a Response that has no _SWITCH_* annotation. +# +# So that's event-triggered transitions. +# +# State-triggered transitions are less standard. What they do here is couple +# the machines together. The way this works is, when certain *joint* +# configurations of states are achieved, then we automatically transition to a +# new *joint* state. So, for example, if we're ever in a joint state with +# +# client: DONE +# keep-alive: False +# +# then the client state immediately transitions to: +# +# client: MUST_CLOSE +# +# This is fundamentally different from an event-based transition, because it +# doesn't matter how we arrived at the {client: DONE, keep-alive: False} state +# -- maybe the client transitioned SEND_BODY -> DONE, or keep-alive +# transitioned True -> False. Either way, once this precondition is satisfied, +# this transition is immediately triggered. +# +# What if two conflicting state-based transitions get enabled at the same +# time? In practice there's only one case where this arises (client DONE -> +# MIGHT_SWITCH_PROTOCOL versus DONE -> MUST_CLOSE), and we resolve it by +# explicitly prioritizing the DONE -> MIGHT_SWITCH_PROTOCOL transition. +# +# Implementation +# -------------- +# +# The event-triggered transitions for the server and client machines are all +# stored explicitly in a table. Ditto for the state-triggered transitions that +# involve just the server and client state. +# +# The transitions for the other machines, and the state-triggered transitions +# that involve the other machines, are written out as explicit Python code. +# +# It'd be nice if there were some cleaner way to do all this. This isn't +# *too* terrible, but I feel like it could probably be better. +# +# WARNING +# ------- +# +# The script that generates the state machine diagrams for the docs knows how +# to read out the EVENT_TRIGGERED_TRANSITIONS and STATE_TRIGGERED_TRANSITIONS +# tables. But it can't automatically read the transitions that are written +# directly in Python code. So if you touch those, you need to also update the +# script to keep it in sync! +from typing import cast, Dict, Optional, Set, Tuple, Type, Union + +from ._events import * +from ._util import LocalProtocolError, Sentinel + +# Everything in __all__ gets re-exported as part of the h11 public API. +__all__ = [ + "CLIENT", + "SERVER", + "IDLE", + "SEND_RESPONSE", + "SEND_BODY", + "DONE", + "MUST_CLOSE", + "CLOSED", + "MIGHT_SWITCH_PROTOCOL", + "SWITCHED_PROTOCOL", + "ERROR", +] + + +class CLIENT(Sentinel, metaclass=Sentinel): + pass + + +class SERVER(Sentinel, metaclass=Sentinel): + pass + + +# States +class IDLE(Sentinel, metaclass=Sentinel): + pass + + +class SEND_RESPONSE(Sentinel, metaclass=Sentinel): + pass + + +class SEND_BODY(Sentinel, metaclass=Sentinel): + pass + + +class DONE(Sentinel, metaclass=Sentinel): + pass + + +class MUST_CLOSE(Sentinel, metaclass=Sentinel): + pass + + +class CLOSED(Sentinel, metaclass=Sentinel): + pass + + +class ERROR(Sentinel, metaclass=Sentinel): + pass + + +# Switch types +class MIGHT_SWITCH_PROTOCOL(Sentinel, metaclass=Sentinel): + pass + + +class SWITCHED_PROTOCOL(Sentinel, metaclass=Sentinel): + pass + + +class _SWITCH_UPGRADE(Sentinel, metaclass=Sentinel): + pass + + +class _SWITCH_CONNECT(Sentinel, metaclass=Sentinel): + pass + + +EventTransitionType = Dict[ + Type[Sentinel], + Dict[ + Type[Sentinel], + Dict[Union[Type[Event], Tuple[Type[Event], Type[Sentinel]]], Type[Sentinel]], + ], +] + +EVENT_TRIGGERED_TRANSITIONS: EventTransitionType = { + CLIENT: { + IDLE: {Request: SEND_BODY, ConnectionClosed: CLOSED}, + SEND_BODY: {Data: SEND_BODY, EndOfMessage: DONE}, + DONE: {ConnectionClosed: CLOSED}, + MUST_CLOSE: {ConnectionClosed: CLOSED}, + CLOSED: {ConnectionClosed: CLOSED}, + MIGHT_SWITCH_PROTOCOL: {}, + SWITCHED_PROTOCOL: {}, + ERROR: {}, + }, + SERVER: { + IDLE: { + ConnectionClosed: CLOSED, + Response: SEND_BODY, + # Special case: server sees client Request events, in this form + (Request, CLIENT): SEND_RESPONSE, + }, + SEND_RESPONSE: { + InformationalResponse: SEND_RESPONSE, + Response: SEND_BODY, + (InformationalResponse, _SWITCH_UPGRADE): SWITCHED_PROTOCOL, + (Response, _SWITCH_CONNECT): SWITCHED_PROTOCOL, + }, + SEND_BODY: {Data: SEND_BODY, EndOfMessage: DONE}, + DONE: {ConnectionClosed: CLOSED}, + MUST_CLOSE: {ConnectionClosed: CLOSED}, + CLOSED: {ConnectionClosed: CLOSED}, + SWITCHED_PROTOCOL: {}, + ERROR: {}, + }, +} + +StateTransitionType = Dict[ + Tuple[Type[Sentinel], Type[Sentinel]], Dict[Type[Sentinel], Type[Sentinel]] +] + +# NB: there are also some special-case state-triggered transitions hard-coded +# into _fire_state_triggered_transitions below. +STATE_TRIGGERED_TRANSITIONS: StateTransitionType = { + # (Client state, Server state) -> new states + # Protocol negotiation + (MIGHT_SWITCH_PROTOCOL, SWITCHED_PROTOCOL): {CLIENT: SWITCHED_PROTOCOL}, + # Socket shutdown + (CLOSED, DONE): {SERVER: MUST_CLOSE}, + (CLOSED, IDLE): {SERVER: MUST_CLOSE}, + (ERROR, DONE): {SERVER: MUST_CLOSE}, + (DONE, CLOSED): {CLIENT: MUST_CLOSE}, + (IDLE, CLOSED): {CLIENT: MUST_CLOSE}, + (DONE, ERROR): {CLIENT: MUST_CLOSE}, +} + + +class ConnectionState: + def __init__(self) -> None: + # Extra bits of state that don't quite fit into the state model. + + # If this is False then it enables the automatic DONE -> MUST_CLOSE + # transition. Don't set this directly; call .keep_alive_disabled() + self.keep_alive = True + + # This is a subset of {UPGRADE, CONNECT}, containing the proposals + # made by the client for switching protocols. + self.pending_switch_proposals: Set[Type[Sentinel]] = set() + + self.states: Dict[Type[Sentinel], Type[Sentinel]] = {CLIENT: IDLE, SERVER: IDLE} + + def process_error(self, role: Type[Sentinel]) -> None: + self.states[role] = ERROR + self._fire_state_triggered_transitions() + + def process_keep_alive_disabled(self) -> None: + self.keep_alive = False + self._fire_state_triggered_transitions() + + def process_client_switch_proposal(self, switch_event: Type[Sentinel]) -> None: + self.pending_switch_proposals.add(switch_event) + self._fire_state_triggered_transitions() + + def process_event( + self, + role: Type[Sentinel], + event_type: Type[Event], + server_switch_event: Optional[Type[Sentinel]] = None, + ) -> None: + _event_type: Union[Type[Event], Tuple[Type[Event], Type[Sentinel]]] = event_type + if server_switch_event is not None: + assert role is SERVER + if server_switch_event not in self.pending_switch_proposals: + raise LocalProtocolError( + "Received server {} event without a pending proposal".format( + server_switch_event + ) + ) + _event_type = (event_type, server_switch_event) + if server_switch_event is None and _event_type is Response: + self.pending_switch_proposals = set() + self._fire_event_triggered_transitions(role, _event_type) + # Special case: the server state does get to see Request + # events. + if _event_type is Request: + assert role is CLIENT + self._fire_event_triggered_transitions(SERVER, (Request, CLIENT)) + self._fire_state_triggered_transitions() + + def _fire_event_triggered_transitions( + self, + role: Type[Sentinel], + event_type: Union[Type[Event], Tuple[Type[Event], Type[Sentinel]]], + ) -> None: + state = self.states[role] + try: + new_state = EVENT_TRIGGERED_TRANSITIONS[role][state][event_type] + except KeyError: + event_type = cast(Type[Event], event_type) + raise LocalProtocolError( + "can't handle event type {} when role={} and state={}".format( + event_type.__name__, role, self.states[role] + ) + ) from None + self.states[role] = new_state + + def _fire_state_triggered_transitions(self) -> None: + # We apply these rules repeatedly until converging on a fixed point + while True: + start_states = dict(self.states) + + # It could happen that both these special-case transitions are + # enabled at the same time: + # + # DONE -> MIGHT_SWITCH_PROTOCOL + # DONE -> MUST_CLOSE + # + # For example, this will always be true of a HTTP/1.0 client + # requesting CONNECT. If this happens, the protocol switch takes + # priority. From there the client will either go to + # SWITCHED_PROTOCOL, in which case it's none of our business when + # they close the connection, or else the server will deny the + # request, in which case the client will go back to DONE and then + # from there to MUST_CLOSE. + if self.pending_switch_proposals: + if self.states[CLIENT] is DONE: + self.states[CLIENT] = MIGHT_SWITCH_PROTOCOL + + if not self.pending_switch_proposals: + if self.states[CLIENT] is MIGHT_SWITCH_PROTOCOL: + self.states[CLIENT] = DONE + + if not self.keep_alive: + for role in (CLIENT, SERVER): + if self.states[role] is DONE: + self.states[role] = MUST_CLOSE + + # Tabular state-triggered transitions + joint_state = (self.states[CLIENT], self.states[SERVER]) + changes = STATE_TRIGGERED_TRANSITIONS.get(joint_state, {}) + self.states.update(changes) + + if self.states == start_states: + # Fixed point reached + return + + def start_next_cycle(self) -> None: + if self.states != {CLIENT: DONE, SERVER: DONE}: + raise LocalProtocolError( + "not in a reusable state. self.states={}".format(self.states) + ) + # Can't reach DONE/DONE with any of these active, but still, let's be + # sure. + assert self.keep_alive + assert not self.pending_switch_proposals + self.states = {CLIENT: IDLE, SERVER: IDLE} diff --git a/venv/lib/python3.12/site-packages/h11/_util.py b/venv/lib/python3.12/site-packages/h11/_util.py new file mode 100644 index 0000000..6718445 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_util.py @@ -0,0 +1,135 @@ +from typing import Any, Dict, NoReturn, Pattern, Tuple, Type, TypeVar, Union + +__all__ = [ + "ProtocolError", + "LocalProtocolError", + "RemoteProtocolError", + "validate", + "bytesify", +] + + +class ProtocolError(Exception): + """Exception indicating a violation of the HTTP/1.1 protocol. + + This as an abstract base class, with two concrete base classes: + :exc:`LocalProtocolError`, which indicates that you tried to do something + that HTTP/1.1 says is illegal, and :exc:`RemoteProtocolError`, which + indicates that the remote peer tried to do something that HTTP/1.1 says is + illegal. See :ref:`error-handling` for details. + + In addition to the normal :exc:`Exception` features, it has one attribute: + + .. attribute:: error_status_hint + + This gives a suggestion as to what status code a server might use if + this error occurred as part of a request. + + For a :exc:`RemoteProtocolError`, this is useful as a suggestion for + how you might want to respond to a misbehaving peer, if you're + implementing a server. + + For a :exc:`LocalProtocolError`, this can be taken as a suggestion for + how your peer might have responded to *you* if h11 had allowed you to + continue. + + The default is 400 Bad Request, a generic catch-all for protocol + violations. + + """ + + def __init__(self, msg: str, error_status_hint: int = 400) -> None: + if type(self) is ProtocolError: + raise TypeError("tried to directly instantiate ProtocolError") + Exception.__init__(self, msg) + self.error_status_hint = error_status_hint + + +# Strategy: there are a number of public APIs where a LocalProtocolError can +# be raised (send(), all the different event constructors, ...), and only one +# public API where RemoteProtocolError can be raised +# (receive_data()). Therefore we always raise LocalProtocolError internally, +# and then receive_data will translate this into a RemoteProtocolError. +# +# Internally: +# LocalProtocolError is the generic "ProtocolError". +# Externally: +# LocalProtocolError is for local errors and RemoteProtocolError is for +# remote errors. +class LocalProtocolError(ProtocolError): + def _reraise_as_remote_protocol_error(self) -> NoReturn: + # After catching a LocalProtocolError, use this method to re-raise it + # as a RemoteProtocolError. This method must be called from inside an + # except: block. + # + # An easy way to get an equivalent RemoteProtocolError is just to + # modify 'self' in place. + self.__class__ = RemoteProtocolError # type: ignore + # But the re-raising is somewhat non-trivial -- you might think that + # now that we've modified the in-flight exception object, that just + # doing 'raise' to re-raise it would be enough. But it turns out that + # this doesn't work, because Python tracks the exception type + # (exc_info[0]) separately from the exception object (exc_info[1]), + # and we only modified the latter. So we really do need to re-raise + # the new type explicitly. + # On py3, the traceback is part of the exception object, so our + # in-place modification preserved it and we can just re-raise: + raise self + + +class RemoteProtocolError(ProtocolError): + pass + + +def validate( + regex: Pattern[bytes], data: bytes, msg: str = "malformed data", *format_args: Any +) -> Dict[str, bytes]: + match = regex.fullmatch(data) + if not match: + if format_args: + msg = msg.format(*format_args) + raise LocalProtocolError(msg) + return match.groupdict() + + +# Sentinel values +# +# - Inherit identity-based comparison and hashing from object +# - Have a nice repr +# - Have a *bonus property*: type(sentinel) is sentinel +# +# The bonus property is useful if you want to take the return value from +# next_event() and do some sort of dispatch based on type(event). + +_T_Sentinel = TypeVar("_T_Sentinel", bound="Sentinel") + + +class Sentinel(type): + def __new__( + cls: Type[_T_Sentinel], + name: str, + bases: Tuple[type, ...], + namespace: Dict[str, Any], + **kwds: Any + ) -> _T_Sentinel: + assert bases == (Sentinel,) + v = super().__new__(cls, name, bases, namespace, **kwds) + v.__class__ = v # type: ignore + return v + + def __repr__(self) -> str: + return self.__name__ + + +# Used for methods, request targets, HTTP versions, header names, and header +# values. Accepts ascii-strings, or bytes/bytearray/memoryview/..., and always +# returns bytes. +def bytesify(s: Union[bytes, bytearray, memoryview, int, str]) -> bytes: + # Fast-path: + if type(s) is bytes: + return s + if isinstance(s, str): + s = s.encode("ascii") + if isinstance(s, int): + raise TypeError("expected bytes-like object, not int") + return bytes(s) diff --git a/venv/lib/python3.12/site-packages/h11/_version.py b/venv/lib/python3.12/site-packages/h11/_version.py new file mode 100644 index 0000000..4c89113 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_version.py @@ -0,0 +1,16 @@ +# This file must be kept very simple, because it is consumed from several +# places -- it is imported by h11/__init__.py, execfile'd by setup.py, etc. + +# We use a simple scheme: +# 1.0.0 -> 1.0.0+dev -> 1.1.0 -> 1.1.0+dev +# where the +dev versions are never released into the wild, they're just what +# we stick into the VCS in between releases. +# +# This is compatible with PEP 440: +# http://legacy.python.org/dev/peps/pep-0440/ +# via the use of the "local suffix" "+dev", which is disallowed on index +# servers and causes 1.0.0+dev to sort after plain 1.0.0, which is what we +# want. (Contrast with the special suffix 1.0.0.dev, which sorts *before* +# 1.0.0.) + +__version__ = "0.14.0" diff --git a/venv/lib/python3.12/site-packages/h11/_writers.py b/venv/lib/python3.12/site-packages/h11/_writers.py new file mode 100644 index 0000000..939cdb9 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/_writers.py @@ -0,0 +1,145 @@ +# Code to read HTTP data +# +# Strategy: each writer takes an event + a write-some-bytes function, which is +# calls. +# +# WRITERS is a dict describing how to pick a reader. It maps states to either: +# - a writer +# - or, for body writers, a dict of framin-dependent writer factories + +from typing import Any, Callable, Dict, List, Tuple, Type, Union + +from ._events import Data, EndOfMessage, Event, InformationalResponse, Request, Response +from ._headers import Headers +from ._state import CLIENT, IDLE, SEND_BODY, SEND_RESPONSE, SERVER +from ._util import LocalProtocolError, Sentinel + +__all__ = ["WRITERS"] + +Writer = Callable[[bytes], Any] + + +def write_headers(headers: Headers, write: Writer) -> None: + # "Since the Host field-value is critical information for handling a + # request, a user agent SHOULD generate Host as the first header field + # following the request-line." - RFC 7230 + raw_items = headers._full_items + for raw_name, name, value in raw_items: + if name == b"host": + write(b"%s: %s\r\n" % (raw_name, value)) + for raw_name, name, value in raw_items: + if name != b"host": + write(b"%s: %s\r\n" % (raw_name, value)) + write(b"\r\n") + + +def write_request(request: Request, write: Writer) -> None: + if request.http_version != b"1.1": + raise LocalProtocolError("I only send HTTP/1.1") + write(b"%s %s HTTP/1.1\r\n" % (request.method, request.target)) + write_headers(request.headers, write) + + +# Shared between InformationalResponse and Response +def write_any_response( + response: Union[InformationalResponse, Response], write: Writer +) -> None: + if response.http_version != b"1.1": + raise LocalProtocolError("I only send HTTP/1.1") + status_bytes = str(response.status_code).encode("ascii") + # We don't bother sending ascii status messages like "OK"; they're + # optional and ignored by the protocol. (But the space after the numeric + # status code is mandatory.) + # + # XX FIXME: could at least make an effort to pull out the status message + # from stdlib's http.HTTPStatus table. Or maybe just steal their enums + # (either by import or copy/paste). We already accept them as status codes + # since they're of type IntEnum < int. + write(b"HTTP/1.1 %s %s\r\n" % (status_bytes, response.reason)) + write_headers(response.headers, write) + + +class BodyWriter: + def __call__(self, event: Event, write: Writer) -> None: + if type(event) is Data: + self.send_data(event.data, write) + elif type(event) is EndOfMessage: + self.send_eom(event.headers, write) + else: # pragma: no cover + assert False + + def send_data(self, data: bytes, write: Writer) -> None: + pass + + def send_eom(self, headers: Headers, write: Writer) -> None: + pass + + +# +# These are all careful not to do anything to 'data' except call len(data) and +# write(data). This allows us to transparently pass-through funny objects, +# like placeholder objects referring to files on disk that will be sent via +# sendfile(2). +# +class ContentLengthWriter(BodyWriter): + def __init__(self, length: int) -> None: + self._length = length + + def send_data(self, data: bytes, write: Writer) -> None: + self._length -= len(data) + if self._length < 0: + raise LocalProtocolError("Too much data for declared Content-Length") + write(data) + + def send_eom(self, headers: Headers, write: Writer) -> None: + if self._length != 0: + raise LocalProtocolError("Too little data for declared Content-Length") + if headers: + raise LocalProtocolError("Content-Length and trailers don't mix") + + +class ChunkedWriter(BodyWriter): + def send_data(self, data: bytes, write: Writer) -> None: + # if we encoded 0-length data in the naive way, it would look like an + # end-of-message. + if not data: + return + write(b"%x\r\n" % len(data)) + write(data) + write(b"\r\n") + + def send_eom(self, headers: Headers, write: Writer) -> None: + write(b"0\r\n") + write_headers(headers, write) + + +class Http10Writer(BodyWriter): + def send_data(self, data: bytes, write: Writer) -> None: + write(data) + + def send_eom(self, headers: Headers, write: Writer) -> None: + if headers: + raise LocalProtocolError("can't send trailers to HTTP/1.0 client") + # no need to close the socket ourselves, that will be taken care of by + # Connection: close machinery + + +WritersType = Dict[ + Union[Tuple[Type[Sentinel], Type[Sentinel]], Type[Sentinel]], + Union[ + Dict[str, Type[BodyWriter]], + Callable[[Union[InformationalResponse, Response], Writer], None], + Callable[[Request, Writer], None], + ], +] + +WRITERS: WritersType = { + (CLIENT, IDLE): write_request, + (SERVER, IDLE): write_any_response, + (SERVER, SEND_RESPONSE): write_any_response, + SEND_BODY: { + "chunked": ChunkedWriter, + "content-length": ContentLengthWriter, + "http/1.0": Http10Writer, + }, +} diff --git a/venv/lib/python3.12/site-packages/h11/py.typed b/venv/lib/python3.12/site-packages/h11/py.typed new file mode 100644 index 0000000..f5642f7 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/py.typed @@ -0,0 +1 @@ +Marker diff --git a/venv/lib/python3.12/site-packages/h11/tests/__init__.py b/venv/lib/python3.12/site-packages/h11/tests/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a295b25c16b5c2c6fd1c43b1a77a87b8d1854b99 GIT binary patch literal 182 zcmX@j%ge<81WNW+=^*+sh(HIQS%4zb87dhx8U0o=6fpsLpFwJVh3aSI=celC7G)$R zXQvkFyQCH;Cl;kA7VDR%CK>6MrRJ6C=VT`77gUyHr z3CL{GDj&`+tAbPsBISct(Uz!{n(kJseC$tG{a9&#aG}DTQnk{4tg8KSOQfv&vwQ9g zW4l$lAFI8R&m5n7?m73K*FE=db#)#DutQ{!ahc!?lm>1sH@@k&I*}ixfs; z6jovthvZN=iBouqXOPUwj;vF0NiIc@1jQ}6O&XW=D54}PUdgM}Np*@(@+p4FuLPuk z5|n}_51*}98l(m#B!!f)6jmZqL}`>7%{gcGF{MdrVvw6^cY*e(6onZ9yJR~*wj?3s86RZE4vd4IXOQ$s5;Lc|#9G{!P27gh_ z_BE9qa~Pg;IaS4Jold()6N$m(;MwuBhV!Mf7snEVF_#gjGMvliG%Oq3U`kIJ-h?W@ zIPn73wA3UhNLV{yGV3*Ew=Z6!c}oulc{M&Wr%&b7C;E;Zk85D^qcgw`zSiPX$BxBya3^3m3wpJ_ znK{EZiS=YEo3(bUkuJ~{fuDu}ETU4dVR5A7@s$FhRsV{AE6`EkOJd;7%Xgfcp`N1H zQ}PDO9^{Q|a^VMV6b!$4aV@bGI0#%q{f^L76q?o!Z42$YqJNqH?Wyf(Z&B=pH6<|& zE6PD6`u9K)GB_EcGhOi{km$M1Xcz!w^+)0$&(wH{a+@QMZ0Z;ytw4&ghL_+p&RoSw zs>nQMj5Tdex`9EXn%mn+CwvUQ&6-l>B-n?2w|> znIq3mJ8iuBwa+dyGV>n$?*2L&=j2L_9!7T1s%LZ8%v2&j&0c3gw@}S6_&2Pw3{r=x z`^oQ1demMXy~BCXTUk}f$?6FzbLO2=rBkeWBFgm)P?p|?46bBomAh(51}%NanYAFs zjSfMsQI{KHdTLg^lGGp^bi-}^fvo)c-!Nh>(hfX?iZ%FG=OAy)MdWcxJxW0v01(wn zIXt;pJ8j89AlON3#Zy?N#WkCmw}Q`3wPV0YS8Klq08w?IeR1UTV6?#RC(G@wqIh68 z^w@2@o_J^Et&yz*@%tD5inl}Kg~VrK_;%OY{KmmszuJoSeb{wx_K!!lqKS_~+tI{s zYey;Ew$85nawmMa7(Tqw|Ng+;fnvD7)Y839ZjJ7=oG7-OC`G&0FWlf z;%SGV&4+$)8k2gC@`eE{qObf7Z_M4C+wr#*{cT(Rj!mJ%D!@E+GU+LUBe^U#L=AF! zKjjQ3zCHt8Q@Ubv5Jan~d8$v$x?Ecat98%r7Bokmon#hRnOWduc7e~cP{ARI7o5xcEGb)D03B4?!HTGn*j0#m>O=E-0Lbq*2BjlATlYZbKAOKk{ zf}5PA__Gw8rhulBb$vL~R$uL@2ACnJ_?p#VbO4`5Qy5w|YnXQdq47K4@Po*v5}uQfzQO?e`6Wj_CCEE?pz;yXZWq*4f*})yVLhW#lF+Ut}|QV zpAqUjiD z!^~10V=M;+3@B)7O2Nsb;YlWyoIIPQxHp-6Z8nv)X2?@uDMOecIcQ|{IYJZ6s+gxJ zMsu1xMggt)geIohc@vr&Bu)W!#9d_W!1Bx!lu7~hv-UcG8)%PZ`4eRUIelf8;SVm) zulE)kkA8~)-*ed1asZtfV!m;=@}aMM^~+D)RLeZzWhaU>uRXcW-#WFyZ#Ew-hWpAc zN*7QtvMjIluUuL0-{`s5Q|uksj0_Y5r^-|WbkiRH0}(K5Z*)hav4e&a-U=CY(t1Uh z2Qm+7o{yg15R~f!CG=5XUPlI>oYgZ~%e>T{hB&Ou3BVAZv7CLHjKN=e^Js4aC_5O2`4XM@6rK17I$1;~AF=|&K12Y%q2OUX zVoraGp8W!~lsN~}`vrHP?C~&>wP+c^XM@|gcvsw`XgSI_r~uZ`rws4iatEt!-T#?0RC0J%pjowLV)T0l8e#3^?s*O W!+nIDXHTM!PKrO}9e?2%fd2t;MWW6C literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_against_stdlib_http.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_against_stdlib_http.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fa1098d6ada687103be8ecf0c7069d46f123610b GIT binary patch literal 6906 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_connection.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_connection.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6665a2cf92602ef2b62630a9944303260fe61940 GIT binary patch literal 57975 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 QDQ6p-{H%+GMiaRIf7Rv82mk;8 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_events.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_events.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0299cf32fc8575af4ae26512afed0446bf8baeac GIT binary patch literal 5437 zcmb_gTTC3+8J_#j?%82sx!(!cn8ghX2B)!u?F8(^P2%0e#A&jsh1NS`F5U|{GuQ!P z8C8AoDwZJXLr4`VJoEv}mWtGe@)#*q>o%!WtI-6l1VLQ zjHQx;@szHqrf@uJL{0CBq#8bdO4Ie|h-Qi>sJvPEljQjnPDH76G=5ssCsIjWGhL^( zcP2I6FlCzrHvF%qV$t|(IAx?_srU(uQ#eLlvKvhr5C7}`anaNmtj!p=lV%fOGz9y{ zjlA4JhGh(RGS^gAg+z|9s&G@hk(a$pQw)DM^7@L(OWWmVm~q+G=!~lCLI=a>+{?_* zS&*<6+u_ogDi=t23%QnrdxR~JDJdf3aU^y|rlJw9FgEa{s2$Zi!fn&@{j;j5%1+yl z<@JZMQm`63t*9l(nX`u(<}&*O)QY0|)Y2Jt8kXTa2l0KY~rmF;@H%+K)ShpW%afXMrD%b%cn1w+mIG-EWS znvxO4Bbs5lMzyG_VcqnO8pg!%MVJB>q0-$t-Fu*Aoz@g6vc{;@pR;%%1L}p*@Q^W$ zw0EP4iMZAkOC>;*LWa?lZs-Um1uRoI33Nq-}uL16tFs@{}zg7mbvft%{8VQ*Qx{e+?`*QRA$R-7R#5Wm*Tf7H+atHxyo;f zjA#FbmqGr8%0+!Svi$0;$u-ZJ*}=b|lDWg_!wXdz)J%kCf||2=N<{`W5}}cxMoM`u z{oF$TLRSWL5TS#h4xoL3>Q_{QON6}y?cI<-f7Vx#_4%`9^`xwtcB`SzM7*qTVoVN&`W#P*F_6s7f2rm_Ppl+`Wt{j&M0l$A^7 zl(aHGx+XUln)Q~0*~K@P6U)P7=&f&fPAS>4;sPZb{=(2?U$(q0TV4y9m=8l5z?|Cy zPvnx&ywtnWxZ+!LpPU`YB4zGq`sl(?2DK2Og`gHnp(`6CwVfH%NrX; zXmkDP{)GeE3I?PaR#C&EltJx8XeX$>(2lQqad6rH$=)^J$*Y2Gsh|kt(uFfi11o3l z$#fwg;2lK*p0=;F-a2?se%&C2CjHF(Pcx{22n_@^eC4TnuWNSD zuH;sS;jX>wuAd#ak9_mod(V>U{TZ~M2>Vyj{>?Mg?y9@<(Pp2J#|L23ga2@~IUSD`0|9Pb^+{^#vm>6=qZhOU0mFsq`7;1CfZWlw{?%Ta$ z=!p9cBZfV$JBk>tcHOBH!+TtJ_KD$c*PUK5-0zBk>8&QhjNUuz6>#fpe~UG?-eSkC zYhmjNYXZ21y~%B%MF!sH=s~)peY*|^K^XK5wOVmKHtuoczFo5|Kgs6adY$LKL;u#h z@nrsed5Q_}Axr@wZig-)Ve1Z|88f-?E7rAQ3dYogX7Xc6<2q}ySf}@Q3x0;m)L4f$ zaJ1xPVtD)Yc@)^Q@UPS5m}Q{4-DMv|K0f>5+2w&x&aBC= zLV%zEEmZac<$dKYYWlT$^YCwuTt9NR{m?2pM1(^G9V+0rty*U@^y^@TDOh^CVAj(A z6DHf2KKC&~72pL?yeT=KBMd5SHArKTqOjAxg9TtI_vg zTtPb;6t=!baTWwx-wwPiB|0sp*w)9Xb^6m$72quVV_~xa;J|Mx;Mm23lqy(A$K>N$ z(gHcA8%Hk<17Jw#xE}1#SddTpi^fjH~W8f5ITf&+# ziIbr~8Gu_r#hBI^4nSuzm>y6TNXr2?3$xMVA_wa%97wmMDGpB>WAPk1r059K4Q9oE zov{q%Hl*C2NU4)??I?Z~_;jc0z0f`6S(g1PQ~xES{DZ05m Tfn|TR{xe=;+c*3QoAds^3tT?j literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_headers.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_headers.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..931aae45e4a26f1682c4c47585ab8712ca0c15fe GIT binary patch literal 6951 zcmcf`S!^4}br0@AE|;PXTe2;Ql$6vVMTw$hS(oovk!0CQOiFDnq#!8nilWU!-CbEW z;h;v)p8x`qzc@fp8~L*96!2%i+9plgvNTI^k9|oGD2vDG|sX(ZI+BZwCNKsnV zfvhgU*_n6Gn|U*DX20Nh8wOA7$-&q^_F>pxQNwtMVkQ4WsJxE}n1Cm+X-pslGJz+F zX#z)eOM*;VrY%Wono82sbds57lI%3Ac9mez7GGG5pFa7$y_vu($Ct8i1S7Aes7e*<#d6Zv|=9AA`FW z!^?G(CAr{N{dd1OQb4ym*_Ib8`>k@jshwmCv|=^-{S)l6J|~U#W^Y_IJiWV~GCNtb zOE0o}DBJpCWp5fG+fK3tt~5e7{vRV`-^rR?ju5|xvK@OUyJ`<*JNHm_^^USj>uODj zPN?0quI?_{>q>H8_?o$I4`tT~`(uQ$4{T$3$#eBWeThFFJX)LHkgAZ7;@>~rkG!wVt!_d zdCL^@rYWY?6oZ>!h^5D-7&EJhB{QpuB{QpurE{iwJf;}N1cNXA#uRhg6fBWKfTjhu-{9wLvXD>U`D4v|rM3lO)&L&ZbrZ8rdnHdDj{b&)HRVGu)sy@TcilF~&1>q%-gaRwW0Dzx~WHKyN-jtx`AxaoqMH`fC;1L5f-EM<{bt8+)D3EMu zS`7lmS^(T5o;hBHGl`f|I?ju!m@=o~0dS223_@oW1W)MjJX*E@CDp)NvqWTJ)@Trc zYxjz9yxRccT~Mn7TAdL!5Mzewa{Js}9#X1?R-tHsnt^5lfDZUT%CqW8DUy+4vuPRm z#r^D(e=eOA{Yhyq61^fy{|YdTy8Tzh)Kz~XKH~>nbLmu1XQ10J#}%<- z9>^mxQTERT0)AwMte3^}que=vT|0!p;q8x!(qYh!21{OqxqB0P#I@Wxp|*BsxgNED zRP7sE=EhXZn97X-Ms4d+TaRS9UUl%CIxxP>jjNV%l^b89F`M(N+o!tvbL@c5w4G7k3BRpbJ*w+Sj_oa)wg1DmTd~{850cq~zK5JowfI!d zx7Dn2rmeo{Rb5AOY@eyoJ9ED%ER2G^Rc#woTZgjTu~oL^2}zvB>8BWBr=MU1g$g^p zol^%@*HDfdF%sy4tPm54pg4h=A~WX!Sn(yVZ+c>(Fbxy$&I3R@p*hFdIC@_U6~RW3wuQ z$!RFs5L;(J40-ZDVFCITAGDC4`1oKo`RPGE*i8Pmg%7rqpH=a}e)6;9e25}{*UpD( z$lrJKAs6`vHy`qmpF8-_0Qvbbev&5t=;bGC$v-vllWy`0C_Bh6X?}8${PKuniXp#Z z9aDAWSAG0c3#nT9sZR1?jbmzvT((d_2eVvF1rIUH%~bFeX1SdT_A<-;RES`*6cwss zvNcqwk;%HKkcY|osL)X+J3vj6Opc}|olLHlnrvcnZferY@nrdfOI;p9CW@U)_KE*_#%Nq~cc2F{rZ-mXD{N4@D8F=ZO0r~evhI|8V zB8^)xpdvpizmua3$v|ZhD1nB&xX1}IkT(6fjJB_eN7=ZEGEQOoZQN#wOu5AEGHtMk zHMPhppnI1Mdv0Jr&6QJc&AFGn#T?8&;UOUlvq8?0f;-W8I;Bz3L|PUB$S%&o#phMH zHMPpHmnyK)#t<#!Av*2r6B%yy^|a3iDZ-i4!941zflH@6WFB==7bc+{QL2I>k6e@z z7jO@q2C?MfMbcTKz-Ry0cP$ZP$N);l?K%3b{0(R^$1F83h%%bo|*S;wiHBNe+u!>#%|?GLC2^4%N8KJo;X z_}Zr!T@M=&jW!?}Z9q^1B~>mYPCYuJ_Ks#9V>d@&@vI>I7b0Ch1nZ0ni=K?K<4>&4 zGX(i5L7m|?#~vCuJ@y_!r9AdZu_oZ?3xHsW5g${=yfvbu@)o?3D~507kt%M^D|t|K zZRPr3nvi`0^D%oL9YWwSEG%fdj(MyT8aXmNso{Qz3d?9(Rx+G;Es~s1h@J4!0f6+d z{-q&fhffV1D1Aqt8a$*%qi9MC8m&M|Dk{<-h=-YX3SI?T2uGbZLk2p#JQnFRV5Bps zK%|;|PEqE=5ScOrEHI)Qe+ij+56eS|6=vQ(edeJL9_3#;q}PDpZTQQ-fC6Qxt&iBM z)!K&D+Wo8hd}`;YS~s@Fz&uvVf+^IKdkLG&Gzs00IJ2q5lZdx^ zs3_E9kCpZh5xnNK-N#4}70g!$#n*y8$COk~f^tiOfwOZ|yuIj5#$DDVux552MK^{!TzW2h@(c zO;|JV8Hu!Q^0Gx(80iD*On~S@H0gufZM-IB%%heGgkhy>@{ahE;m99~`a9g|5QX3x zuMpTPOBq;LI7!Y=#ep@{VQGZbu6^VhI#o`R;*F@)5%u+5SQ}xDL5!2c81dFebVG0B zMm9BMYsL+Er-$d^|MNCS)c?vbGt||T-TMeJ@hN&Mv{C+6sSjl=@D|C?n0Qw_`^vez z7^PY0ge_LC2ADUuP8>`qizSOOF2%SU<4TOH460iw#-GI{2K888SS`* zBo3ucn?lkQdin+RIilY$ta{)P%cFItx=X0FL0HwHHHTTRNTq1;soAsKM#XBj!+PK^ zE)n@LnN=?otdNf&i?LiMZjIJpvyPTA-%)zhVf$`IJ`mK^vn-4 z`>Amxe+)Y2T-VGV;P+cybK+?HxY98T*F?fk?U(+h;*;KZ%1HGk(^M~V$jBVr>*!Nm zJ^T6j@oYz*@9Jj4Ozhu+&0I&H?xod~`g3~BRC{PlQO^;#XpU#a+o4htwy0mqrz0)- zgD4a@E^Ayys=^iqhw1=OUuaxhgsT?7Q|UASM5VVup|5!XZn@+Uo#9&;2zHl4PZ9*- XQq%?U5^*>O_%()v2N&wNaFx{`7(xXq literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_io.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_io.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..44f5065d7b841062c8bde6728eea814f9b433ca3 GIT binary patch literal 19831 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 C;o+zN literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_receivebuffer.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_receivebuffer.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a98d358a4eeb6a21357e48fd0bd2989d8467e234 GIT binary patch literal 3965 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_util.cpython-312.pyc b/venv/lib/python3.12/site-packages/h11/tests/__pycache__/test_util.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c9c48e09f4924b9be6d86f7075fd667f2ba3ea0 GIT binary patch literal 6101 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/h11/tests/data/test-file b/venv/lib/python3.12/site-packages/h11/tests/data/test-file new file mode 100644 index 0000000..d0be0a6 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/data/test-file @@ -0,0 +1 @@ +92b12bc045050b55b848d37167a1a63947c364579889ce1d39788e45e9fac9e5 diff --git a/venv/lib/python3.12/site-packages/h11/tests/helpers.py b/venv/lib/python3.12/site-packages/h11/tests/helpers.py new file mode 100644 index 0000000..571be44 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/helpers.py @@ -0,0 +1,101 @@ +from typing import cast, List, Type, Union, ValuesView + +from .._connection import Connection, NEED_DATA, PAUSED +from .._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from .._state import CLIENT, CLOSED, DONE, MUST_CLOSE, SERVER +from .._util import Sentinel + +try: + from typing import Literal +except ImportError: + from typing_extensions import Literal # type: ignore + + +def get_all_events(conn: Connection) -> List[Event]: + got_events = [] + while True: + event = conn.next_event() + if event in (NEED_DATA, PAUSED): + break + event = cast(Event, event) + got_events.append(event) + if type(event) is ConnectionClosed: + break + return got_events + + +def receive_and_get(conn: Connection, data: bytes) -> List[Event]: + conn.receive_data(data) + return get_all_events(conn) + + +# Merges adjacent Data events, converts payloads to bytestrings, and removes +# chunk boundaries. +def normalize_data_events(in_events: List[Event]) -> List[Event]: + out_events: List[Event] = [] + for event in in_events: + if type(event) is Data: + event = Data(data=bytes(event.data), chunk_start=False, chunk_end=False) + if out_events and type(out_events[-1]) is type(event) is Data: + out_events[-1] = Data( + data=out_events[-1].data + event.data, + chunk_start=out_events[-1].chunk_start, + chunk_end=out_events[-1].chunk_end, + ) + else: + out_events.append(event) + return out_events + + +# Given that we want to write tests that push some events through a Connection +# and check that its state updates appropriately... we might as make a habit +# of pushing them through two Connections with a fake network link in +# between. +class ConnectionPair: + def __init__(self) -> None: + self.conn = {CLIENT: Connection(CLIENT), SERVER: Connection(SERVER)} + self.other = {CLIENT: SERVER, SERVER: CLIENT} + + @property + def conns(self) -> ValuesView[Connection]: + return self.conn.values() + + # expect="match" if expect=send_events; expect=[...] to say what expected + def send( + self, + role: Type[Sentinel], + send_events: Union[List[Event], Event], + expect: Union[List[Event], Event, Literal["match"]] = "match", + ) -> bytes: + if not isinstance(send_events, list): + send_events = [send_events] + data = b"" + closed = False + for send_event in send_events: + new_data = self.conn[role].send(send_event) + if new_data is None: + closed = True + else: + data += new_data + # send uses b"" to mean b"", and None to mean closed + # receive uses b"" to mean closed, and None to mean "try again" + # so we have to translate between the two conventions + if data: + self.conn[self.other[role]].receive_data(data) + if closed: + self.conn[self.other[role]].receive_data(b"") + got_events = get_all_events(self.conn[self.other[role]]) + if expect == "match": + expect = send_events + if not isinstance(expect, list): + expect = [expect] + assert got_events == expect + return data diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_against_stdlib_http.py b/venv/lib/python3.12/site-packages/h11/tests/test_against_stdlib_http.py new file mode 100644 index 0000000..d2ee131 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_against_stdlib_http.py @@ -0,0 +1,115 @@ +import json +import os.path +import socket +import socketserver +import threading +from contextlib import closing, contextmanager +from http.server import SimpleHTTPRequestHandler +from typing import Callable, Generator +from urllib.request import urlopen + +import h11 + + +@contextmanager +def socket_server( + handler: Callable[..., socketserver.BaseRequestHandler] +) -> Generator[socketserver.TCPServer, None, None]: + httpd = socketserver.TCPServer(("127.0.0.1", 0), handler) + thread = threading.Thread( + target=httpd.serve_forever, kwargs={"poll_interval": 0.01} + ) + thread.daemon = True + try: + thread.start() + yield httpd + finally: + httpd.shutdown() + + +test_file_path = os.path.join(os.path.dirname(__file__), "data/test-file") +with open(test_file_path, "rb") as f: + test_file_data = f.read() + + +class SingleMindedRequestHandler(SimpleHTTPRequestHandler): + def translate_path(self, path: str) -> str: + return test_file_path + + +def test_h11_as_client() -> None: + with socket_server(SingleMindedRequestHandler) as httpd: + with closing(socket.create_connection(httpd.server_address)) as s: + c = h11.Connection(h11.CLIENT) + + s.sendall( + c.send( # type: ignore[arg-type] + h11.Request( + method="GET", target="/foo", headers=[("Host", "localhost")] + ) + ) + ) + s.sendall(c.send(h11.EndOfMessage())) # type: ignore[arg-type] + + data = bytearray() + while True: + event = c.next_event() + print(event) + if event is h11.NEED_DATA: + # Use a small read buffer to make things more challenging + # and exercise more paths :-) + c.receive_data(s.recv(10)) + continue + if type(event) is h11.Response: + assert event.status_code == 200 + if type(event) is h11.Data: + data += event.data + if type(event) is h11.EndOfMessage: + break + assert bytes(data) == test_file_data + + +class H11RequestHandler(socketserver.BaseRequestHandler): + def handle(self) -> None: + with closing(self.request) as s: + c = h11.Connection(h11.SERVER) + request = None + while True: + event = c.next_event() + if event is h11.NEED_DATA: + # Use a small read buffer to make things more challenging + # and exercise more paths :-) + c.receive_data(s.recv(10)) + continue + if type(event) is h11.Request: + request = event + if type(event) is h11.EndOfMessage: + break + assert request is not None + info = json.dumps( + { + "method": request.method.decode("ascii"), + "target": request.target.decode("ascii"), + "headers": { + name.decode("ascii"): value.decode("ascii") + for (name, value) in request.headers + }, + } + ) + s.sendall(c.send(h11.Response(status_code=200, headers=[]))) # type: ignore[arg-type] + s.sendall(c.send(h11.Data(data=info.encode("ascii")))) + s.sendall(c.send(h11.EndOfMessage())) + + +def test_h11_as_server() -> None: + with socket_server(H11RequestHandler) as httpd: + host, port = httpd.server_address + url = "http://{}:{}/some-path".format(host, port) + with closing(urlopen(url)) as f: + assert f.getcode() == 200 + data = f.read() + info = json.loads(data.decode("ascii")) + print(info) + assert info["method"] == "GET" + assert info["target"] == "/some-path" + assert "urllib" in info["headers"]["user-agent"] diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_connection.py b/venv/lib/python3.12/site-packages/h11/tests/test_connection.py new file mode 100644 index 0000000..73a27b9 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_connection.py @@ -0,0 +1,1122 @@ +from typing import Any, cast, Dict, List, Optional, Tuple, Type + +import pytest + +from .._connection import _body_framing, _keep_alive, Connection, NEED_DATA, PAUSED +from .._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from .._state import ( + CLIENT, + CLOSED, + DONE, + ERROR, + IDLE, + MIGHT_SWITCH_PROTOCOL, + MUST_CLOSE, + SEND_BODY, + SEND_RESPONSE, + SERVER, + SWITCHED_PROTOCOL, +) +from .._util import LocalProtocolError, RemoteProtocolError, Sentinel +from .helpers import ConnectionPair, get_all_events, receive_and_get + + +def test__keep_alive() -> None: + assert _keep_alive( + Request(method="GET", target="/", headers=[("Host", "Example.com")]) + ) + assert not _keep_alive( + Request( + method="GET", + target="/", + headers=[("Host", "Example.com"), ("Connection", "close")], + ) + ) + assert not _keep_alive( + Request( + method="GET", + target="/", + headers=[("Host", "Example.com"), ("Connection", "a, b, cLOse, foo")], + ) + ) + assert not _keep_alive( + Request(method="GET", target="/", headers=[], http_version="1.0") # type: ignore[arg-type] + ) + + assert _keep_alive(Response(status_code=200, headers=[])) # type: ignore[arg-type] + assert not _keep_alive(Response(status_code=200, headers=[("Connection", "close")])) + assert not _keep_alive( + Response(status_code=200, headers=[("Connection", "a, b, cLOse, foo")]) + ) + assert not _keep_alive(Response(status_code=200, headers=[], http_version="1.0")) # type: ignore[arg-type] + + +def test__body_framing() -> None: + def headers(cl: Optional[int], te: bool) -> List[Tuple[str, str]]: + headers = [] + if cl is not None: + headers.append(("Content-Length", str(cl))) + if te: + headers.append(("Transfer-Encoding", "chunked")) + return headers + + def resp( + status_code: int = 200, cl: Optional[int] = None, te: bool = False + ) -> Response: + return Response(status_code=status_code, headers=headers(cl, te)) + + def req(cl: Optional[int] = None, te: bool = False) -> Request: + h = headers(cl, te) + h += [("Host", "example.com")] + return Request(method="GET", target="/", headers=h) + + # Special cases where the headers are ignored: + for kwargs in [{}, {"cl": 100}, {"te": True}, {"cl": 100, "te": True}]: + kwargs = cast(Dict[str, Any], kwargs) + for meth, r in [ + (b"HEAD", resp(**kwargs)), + (b"GET", resp(status_code=204, **kwargs)), + (b"GET", resp(status_code=304, **kwargs)), + ]: + assert _body_framing(meth, r) == ("content-length", (0,)) + + # Transfer-encoding + for kwargs in [{"te": True}, {"cl": 100, "te": True}]: + kwargs = cast(Dict[str, Any], kwargs) + for meth, r in [(None, req(**kwargs)), (b"GET", resp(**kwargs))]: # type: ignore + assert _body_framing(meth, r) == ("chunked", ()) + + # Content-Length + for meth, r in [(None, req(cl=100)), (b"GET", resp(cl=100))]: # type: ignore + assert _body_framing(meth, r) == ("content-length", (100,)) + + # No headers + assert _body_framing(None, req()) == ("content-length", (0,)) # type: ignore + assert _body_framing(b"GET", resp()) == ("http/1.0", ()) + + +def test_Connection_basics_and_content_length() -> None: + with pytest.raises(ValueError): + Connection("CLIENT") # type: ignore + + p = ConnectionPair() + assert p.conn[CLIENT].our_role is CLIENT + assert p.conn[CLIENT].their_role is SERVER + assert p.conn[SERVER].our_role is SERVER + assert p.conn[SERVER].their_role is CLIENT + + data = p.send( + CLIENT, + Request( + method="GET", + target="/", + headers=[("Host", "example.com"), ("Content-Length", "10")], + ), + ) + assert data == ( + b"GET / HTTP/1.1\r\n" b"Host: example.com\r\n" b"Content-Length: 10\r\n\r\n" + ) + + for conn in p.conns: + assert conn.states == {CLIENT: SEND_BODY, SERVER: SEND_RESPONSE} + assert p.conn[CLIENT].our_state is SEND_BODY + assert p.conn[CLIENT].their_state is SEND_RESPONSE + assert p.conn[SERVER].our_state is SEND_RESPONSE + assert p.conn[SERVER].their_state is SEND_BODY + + assert p.conn[CLIENT].their_http_version is None + assert p.conn[SERVER].their_http_version == b"1.1" + + data = p.send(SERVER, InformationalResponse(status_code=100, headers=[])) # type: ignore[arg-type] + assert data == b"HTTP/1.1 100 \r\n\r\n" + + data = p.send(SERVER, Response(status_code=200, headers=[("Content-Length", "11")])) + assert data == b"HTTP/1.1 200 \r\nContent-Length: 11\r\n\r\n" + + for conn in p.conns: + assert conn.states == {CLIENT: SEND_BODY, SERVER: SEND_BODY} + + assert p.conn[CLIENT].their_http_version == b"1.1" + assert p.conn[SERVER].their_http_version == b"1.1" + + data = p.send(CLIENT, Data(data=b"12345")) + assert data == b"12345" + data = p.send( + CLIENT, Data(data=b"67890"), expect=[Data(data=b"67890"), EndOfMessage()] + ) + assert data == b"67890" + data = p.send(CLIENT, EndOfMessage(), expect=[]) + assert data == b"" + + for conn in p.conns: + assert conn.states == {CLIENT: DONE, SERVER: SEND_BODY} + + data = p.send(SERVER, Data(data=b"1234567890")) + assert data == b"1234567890" + data = p.send(SERVER, Data(data=b"1"), expect=[Data(data=b"1"), EndOfMessage()]) + assert data == b"1" + data = p.send(SERVER, EndOfMessage(), expect=[]) + assert data == b"" + + for conn in p.conns: + assert conn.states == {CLIENT: DONE, SERVER: DONE} + + +def test_chunked() -> None: + p = ConnectionPair() + + p.send( + CLIENT, + Request( + method="GET", + target="/", + headers=[("Host", "example.com"), ("Transfer-Encoding", "chunked")], + ), + ) + data = p.send(CLIENT, Data(data=b"1234567890", chunk_start=True, chunk_end=True)) + assert data == b"a\r\n1234567890\r\n" + data = p.send(CLIENT, Data(data=b"abcde", chunk_start=True, chunk_end=True)) + assert data == b"5\r\nabcde\r\n" + data = p.send(CLIENT, Data(data=b""), expect=[]) + assert data == b"" + data = p.send(CLIENT, EndOfMessage(headers=[("hello", "there")])) + assert data == b"0\r\nhello: there\r\n\r\n" + + p.send( + SERVER, Response(status_code=200, headers=[("Transfer-Encoding", "chunked")]) + ) + p.send(SERVER, Data(data=b"54321", chunk_start=True, chunk_end=True)) + p.send(SERVER, Data(data=b"12345", chunk_start=True, chunk_end=True)) + p.send(SERVER, EndOfMessage()) + + for conn in p.conns: + assert conn.states == {CLIENT: DONE, SERVER: DONE} + + +def test_chunk_boundaries() -> None: + conn = Connection(our_role=SERVER) + + request = ( + b"POST / HTTP/1.1\r\n" + b"Host: example.com\r\n" + b"Transfer-Encoding: chunked\r\n" + b"\r\n" + ) + conn.receive_data(request) + assert conn.next_event() == Request( + method="POST", + target="/", + headers=[("Host", "example.com"), ("Transfer-Encoding", "chunked")], + ) + assert conn.next_event() is NEED_DATA + + conn.receive_data(b"5\r\nhello\r\n") + assert conn.next_event() == Data(data=b"hello", chunk_start=True, chunk_end=True) + + conn.receive_data(b"5\r\nhel") + assert conn.next_event() == Data(data=b"hel", chunk_start=True, chunk_end=False) + + conn.receive_data(b"l") + assert conn.next_event() == Data(data=b"l", chunk_start=False, chunk_end=False) + + conn.receive_data(b"o\r\n") + assert conn.next_event() == Data(data=b"o", chunk_start=False, chunk_end=True) + + conn.receive_data(b"5\r\nhello") + assert conn.next_event() == Data(data=b"hello", chunk_start=True, chunk_end=True) + + conn.receive_data(b"\r\n") + assert conn.next_event() == NEED_DATA + + conn.receive_data(b"0\r\n\r\n") + assert conn.next_event() == EndOfMessage() + + +def test_client_talking_to_http10_server() -> None: + c = Connection(CLIENT) + c.send(Request(method="GET", target="/", headers=[("Host", "example.com")])) + c.send(EndOfMessage()) + assert c.our_state is DONE + # No content-length, so Http10 framing for body + assert receive_and_get(c, b"HTTP/1.0 200 OK\r\n\r\n") == [ + Response(status_code=200, headers=[], http_version="1.0", reason=b"OK") # type: ignore[arg-type] + ] + assert c.our_state is MUST_CLOSE + assert receive_and_get(c, b"12345") == [Data(data=b"12345")] + assert receive_and_get(c, b"67890") == [Data(data=b"67890")] + assert receive_and_get(c, b"") == [EndOfMessage(), ConnectionClosed()] + assert c.their_state is CLOSED + + +def test_server_talking_to_http10_client() -> None: + c = Connection(SERVER) + # No content-length, so no body + # NB: no host header + assert receive_and_get(c, b"GET / HTTP/1.0\r\n\r\n") == [ + Request(method="GET", target="/", headers=[], http_version="1.0"), # type: ignore[arg-type] + EndOfMessage(), + ] + assert c.their_state is MUST_CLOSE + + # We automatically Connection: close back at them + assert ( + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + == b"HTTP/1.1 200 \r\nConnection: close\r\n\r\n" + ) + + assert c.send(Data(data=b"12345")) == b"12345" + assert c.send(EndOfMessage()) == b"" + assert c.our_state is MUST_CLOSE + + # Check that it works if they do send Content-Length + c = Connection(SERVER) + # NB: no host header + assert receive_and_get(c, b"POST / HTTP/1.0\r\nContent-Length: 10\r\n\r\n1") == [ + Request( + method="POST", + target="/", + headers=[("Content-Length", "10")], + http_version="1.0", + ), + Data(data=b"1"), + ] + assert receive_and_get(c, b"234567890") == [Data(data=b"234567890"), EndOfMessage()] + assert c.their_state is MUST_CLOSE + assert receive_and_get(c, b"") == [ConnectionClosed()] + + +def test_automatic_transfer_encoding_in_response() -> None: + # Check that in responses, the user can specify either Transfer-Encoding: + # chunked or no framing at all, and in both cases we automatically select + # the right option depending on whether the peer speaks HTTP/1.0 or + # HTTP/1.1 + for user_headers in [ + [("Transfer-Encoding", "chunked")], + [], + # In fact, this even works if Content-Length is set, + # because if both are set then Transfer-Encoding wins + [("Transfer-Encoding", "chunked"), ("Content-Length", "100")], + ]: + user_headers = cast(List[Tuple[str, str]], user_headers) + p = ConnectionPair() + p.send( + CLIENT, + [ + Request(method="GET", target="/", headers=[("Host", "example.com")]), + EndOfMessage(), + ], + ) + # When speaking to HTTP/1.1 client, all of the above cases get + # normalized to Transfer-Encoding: chunked + p.send( + SERVER, + Response(status_code=200, headers=user_headers), + expect=Response( + status_code=200, headers=[("Transfer-Encoding", "chunked")] + ), + ) + + # When speaking to HTTP/1.0 client, all of the above cases get + # normalized to no-framing-headers + c = Connection(SERVER) + receive_and_get(c, b"GET / HTTP/1.0\r\n\r\n") + assert ( + c.send(Response(status_code=200, headers=user_headers)) + == b"HTTP/1.1 200 \r\nConnection: close\r\n\r\n" + ) + assert c.send(Data(data=b"12345")) == b"12345" + + +def test_automagic_connection_close_handling() -> None: + p = ConnectionPair() + # If the user explicitly sets Connection: close, then we notice and + # respect it + p.send( + CLIENT, + [ + Request( + method="GET", + target="/", + headers=[("Host", "example.com"), ("Connection", "close")], + ), + EndOfMessage(), + ], + ) + for conn in p.conns: + assert conn.states[CLIENT] is MUST_CLOSE + # And if the client sets it, the server automatically echoes it back + p.send( + SERVER, + # no header here... + [Response(status_code=204, headers=[]), EndOfMessage()], # type: ignore[arg-type] + # ...but oh look, it arrived anyway + expect=[ + Response(status_code=204, headers=[("connection", "close")]), + EndOfMessage(), + ], + ) + for conn in p.conns: + assert conn.states == {CLIENT: MUST_CLOSE, SERVER: MUST_CLOSE} + + +def test_100_continue() -> None: + def setup() -> ConnectionPair: + p = ConnectionPair() + p.send( + CLIENT, + Request( + method="GET", + target="/", + headers=[ + ("Host", "example.com"), + ("Content-Length", "100"), + ("Expect", "100-continue"), + ], + ), + ) + for conn in p.conns: + assert conn.client_is_waiting_for_100_continue + assert not p.conn[CLIENT].they_are_waiting_for_100_continue + assert p.conn[SERVER].they_are_waiting_for_100_continue + return p + + # Disabled by 100 Continue + p = setup() + p.send(SERVER, InformationalResponse(status_code=100, headers=[])) # type: ignore[arg-type] + for conn in p.conns: + assert not conn.client_is_waiting_for_100_continue + assert not conn.they_are_waiting_for_100_continue + + # Disabled by a real response + p = setup() + p.send( + SERVER, Response(status_code=200, headers=[("Transfer-Encoding", "chunked")]) + ) + for conn in p.conns: + assert not conn.client_is_waiting_for_100_continue + assert not conn.they_are_waiting_for_100_continue + + # Disabled by the client going ahead and sending stuff anyway + p = setup() + p.send(CLIENT, Data(data=b"12345")) + for conn in p.conns: + assert not conn.client_is_waiting_for_100_continue + assert not conn.they_are_waiting_for_100_continue + + +def test_max_incomplete_event_size_countermeasure() -> None: + # Infinitely long headers are definitely not okay + c = Connection(SERVER) + c.receive_data(b"GET / HTTP/1.0\r\nEndless: ") + assert c.next_event() is NEED_DATA + with pytest.raises(RemoteProtocolError): + while True: + c.receive_data(b"a" * 1024) + c.next_event() + + # Checking that the same header is accepted / rejected depending on the + # max_incomplete_event_size setting: + c = Connection(SERVER, max_incomplete_event_size=5000) + c.receive_data(b"GET / HTTP/1.0\r\nBig: ") + c.receive_data(b"a" * 4000) + c.receive_data(b"\r\n\r\n") + assert get_all_events(c) == [ + Request( + method="GET", target="/", http_version="1.0", headers=[("big", "a" * 4000)] + ), + EndOfMessage(), + ] + + c = Connection(SERVER, max_incomplete_event_size=4000) + c.receive_data(b"GET / HTTP/1.0\r\nBig: ") + c.receive_data(b"a" * 4000) + with pytest.raises(RemoteProtocolError): + c.next_event() + + # Temporarily exceeding the size limit is fine, as long as its done with + # complete events: + c = Connection(SERVER, max_incomplete_event_size=5000) + c.receive_data(b"GET / HTTP/1.0\r\nContent-Length: 10000") + c.receive_data(b"\r\n\r\n" + b"a" * 10000) + assert get_all_events(c) == [ + Request( + method="GET", + target="/", + http_version="1.0", + headers=[("Content-Length", "10000")], + ), + Data(data=b"a" * 10000), + EndOfMessage(), + ] + + c = Connection(SERVER, max_incomplete_event_size=100) + # Two pipelined requests to create a way-too-big receive buffer... but + # it's fine because we're not checking + c.receive_data( + b"GET /1 HTTP/1.1\r\nHost: a\r\n\r\n" + b"GET /2 HTTP/1.1\r\nHost: b\r\n\r\n" + b"X" * 1000 + ) + assert get_all_events(c) == [ + Request(method="GET", target="/1", headers=[("host", "a")]), + EndOfMessage(), + ] + # Even more data comes in, still no problem + c.receive_data(b"X" * 1000) + # We can respond and reuse to get the second pipelined request + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + c.send(EndOfMessage()) + c.start_next_cycle() + assert get_all_events(c) == [ + Request(method="GET", target="/2", headers=[("host", "b")]), + EndOfMessage(), + ] + # But once we unpause and try to read the next message, and find that it's + # incomplete and the buffer is *still* way too large, then *that's* a + # problem: + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + c.send(EndOfMessage()) + c.start_next_cycle() + with pytest.raises(RemoteProtocolError): + c.next_event() + + +def test_reuse_simple() -> None: + p = ConnectionPair() + p.send( + CLIENT, + [Request(method="GET", target="/", headers=[("Host", "a")]), EndOfMessage()], + ) + p.send( + SERVER, + [ + Response(status_code=200, headers=[(b"transfer-encoding", b"chunked")]), + EndOfMessage(), + ], + ) + for conn in p.conns: + assert conn.states == {CLIENT: DONE, SERVER: DONE} + conn.start_next_cycle() + + p.send( + CLIENT, + [ + Request(method="DELETE", target="/foo", headers=[("Host", "a")]), + EndOfMessage(), + ], + ) + p.send( + SERVER, + [ + Response(status_code=404, headers=[(b"transfer-encoding", b"chunked")]), + EndOfMessage(), + ], + ) + + +def test_pipelining() -> None: + # Client doesn't support pipelining, so we have to do this by hand + c = Connection(SERVER) + assert c.next_event() is NEED_DATA + # 3 requests all bunched up + c.receive_data( + b"GET /1 HTTP/1.1\r\nHost: a.com\r\nContent-Length: 5\r\n\r\n" + b"12345" + b"GET /2 HTTP/1.1\r\nHost: a.com\r\nContent-Length: 5\r\n\r\n" + b"67890" + b"GET /3 HTTP/1.1\r\nHost: a.com\r\n\r\n" + ) + assert get_all_events(c) == [ + Request( + method="GET", + target="/1", + headers=[("Host", "a.com"), ("Content-Length", "5")], + ), + Data(data=b"12345"), + EndOfMessage(), + ] + assert c.their_state is DONE + assert c.our_state is SEND_RESPONSE + + assert c.next_event() is PAUSED + + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + c.send(EndOfMessage()) + assert c.their_state is DONE + assert c.our_state is DONE + + c.start_next_cycle() + + assert get_all_events(c) == [ + Request( + method="GET", + target="/2", + headers=[("Host", "a.com"), ("Content-Length", "5")], + ), + Data(data=b"67890"), + EndOfMessage(), + ] + assert c.next_event() is PAUSED + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + c.send(EndOfMessage()) + c.start_next_cycle() + + assert get_all_events(c) == [ + Request(method="GET", target="/3", headers=[("Host", "a.com")]), + EndOfMessage(), + ] + # Doesn't pause this time, no trailing data + assert c.next_event() is NEED_DATA + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + c.send(EndOfMessage()) + + # Arrival of more data triggers pause + assert c.next_event() is NEED_DATA + c.receive_data(b"SADF") + assert c.next_event() is PAUSED + assert c.trailing_data == (b"SADF", False) + # If EOF arrives while paused, we don't see that either: + c.receive_data(b"") + assert c.trailing_data == (b"SADF", True) + assert c.next_event() is PAUSED + c.receive_data(b"") + assert c.next_event() is PAUSED + # Can't call receive_data with non-empty buf after closing it + with pytest.raises(RuntimeError): + c.receive_data(b"FDSA") + + +def test_protocol_switch() -> None: + for (req, deny, accept) in [ + ( + Request( + method="CONNECT", + target="example.com:443", + headers=[("Host", "foo"), ("Content-Length", "1")], + ), + Response(status_code=404, headers=[(b"transfer-encoding", b"chunked")]), + Response(status_code=200, headers=[(b"transfer-encoding", b"chunked")]), + ), + ( + Request( + method="GET", + target="/", + headers=[("Host", "foo"), ("Content-Length", "1"), ("Upgrade", "a, b")], + ), + Response(status_code=200, headers=[(b"transfer-encoding", b"chunked")]), + InformationalResponse(status_code=101, headers=[("Upgrade", "a")]), + ), + ( + Request( + method="CONNECT", + target="example.com:443", + headers=[("Host", "foo"), ("Content-Length", "1"), ("Upgrade", "a, b")], + ), + Response(status_code=404, headers=[(b"transfer-encoding", b"chunked")]), + # Accept CONNECT, not upgrade + Response(status_code=200, headers=[(b"transfer-encoding", b"chunked")]), + ), + ( + Request( + method="CONNECT", + target="example.com:443", + headers=[("Host", "foo"), ("Content-Length", "1"), ("Upgrade", "a, b")], + ), + Response(status_code=404, headers=[(b"transfer-encoding", b"chunked")]), + # Accept Upgrade, not CONNECT + InformationalResponse(status_code=101, headers=[("Upgrade", "b")]), + ), + ]: + + def setup() -> ConnectionPair: + p = ConnectionPair() + p.send(CLIENT, req) + # No switch-related state change stuff yet; the client has to + # finish the request before that kicks in + for conn in p.conns: + assert conn.states[CLIENT] is SEND_BODY + p.send(CLIENT, [Data(data=b"1"), EndOfMessage()]) + for conn in p.conns: + assert conn.states[CLIENT] is MIGHT_SWITCH_PROTOCOL + assert p.conn[SERVER].next_event() is PAUSED + return p + + # Test deny case + p = setup() + p.send(SERVER, deny) + for conn in p.conns: + assert conn.states == {CLIENT: DONE, SERVER: SEND_BODY} + p.send(SERVER, EndOfMessage()) + # Check that re-use is still allowed after a denial + for conn in p.conns: + conn.start_next_cycle() + + # Test accept case + p = setup() + p.send(SERVER, accept) + for conn in p.conns: + assert conn.states == {CLIENT: SWITCHED_PROTOCOL, SERVER: SWITCHED_PROTOCOL} + conn.receive_data(b"123") + assert conn.next_event() is PAUSED + conn.receive_data(b"456") + assert conn.next_event() is PAUSED + assert conn.trailing_data == (b"123456", False) + + # Pausing in might-switch, then recovery + # (weird artificial case where the trailing data actually is valid + # HTTP for some reason, because this makes it easier to test the state + # logic) + p = setup() + sc = p.conn[SERVER] + sc.receive_data(b"GET / HTTP/1.0\r\n\r\n") + assert sc.next_event() is PAUSED + assert sc.trailing_data == (b"GET / HTTP/1.0\r\n\r\n", False) + sc.send(deny) + assert sc.next_event() is PAUSED + sc.send(EndOfMessage()) + sc.start_next_cycle() + assert get_all_events(sc) == [ + Request(method="GET", target="/", headers=[], http_version="1.0"), # type: ignore[arg-type] + EndOfMessage(), + ] + + # When we're DONE, have no trailing data, and the connection gets + # closed, we report ConnectionClosed(). When we're in might-switch or + # switched, we don't. + p = setup() + sc = p.conn[SERVER] + sc.receive_data(b"") + assert sc.next_event() is PAUSED + assert sc.trailing_data == (b"", True) + p.send(SERVER, accept) + assert sc.next_event() is PAUSED + + p = setup() + sc = p.conn[SERVER] + sc.receive_data(b"") + assert sc.next_event() is PAUSED + sc.send(deny) + assert sc.next_event() == ConnectionClosed() + + # You can't send after switching protocols, or while waiting for a + # protocol switch + p = setup() + with pytest.raises(LocalProtocolError): + p.conn[CLIENT].send( + Request(method="GET", target="/", headers=[("Host", "a")]) + ) + p = setup() + p.send(SERVER, accept) + with pytest.raises(LocalProtocolError): + p.conn[SERVER].send(Data(data=b"123")) + + +def test_close_simple() -> None: + # Just immediately closing a new connection without anything having + # happened yet. + for (who_shot_first, who_shot_second) in [(CLIENT, SERVER), (SERVER, CLIENT)]: + + def setup() -> ConnectionPair: + p = ConnectionPair() + p.send(who_shot_first, ConnectionClosed()) + for conn in p.conns: + assert conn.states == { + who_shot_first: CLOSED, + who_shot_second: MUST_CLOSE, + } + return p + + # You can keep putting b"" into a closed connection, and you keep + # getting ConnectionClosed() out: + p = setup() + assert p.conn[who_shot_second].next_event() == ConnectionClosed() + assert p.conn[who_shot_second].next_event() == ConnectionClosed() + p.conn[who_shot_second].receive_data(b"") + assert p.conn[who_shot_second].next_event() == ConnectionClosed() + # Second party can close... + p = setup() + p.send(who_shot_second, ConnectionClosed()) + for conn in p.conns: + assert conn.our_state is CLOSED + assert conn.their_state is CLOSED + # But trying to receive new data on a closed connection is a + # RuntimeError (not ProtocolError, because the problem here isn't + # violation of HTTP, it's violation of physics) + p = setup() + with pytest.raises(RuntimeError): + p.conn[who_shot_second].receive_data(b"123") + # And receiving new data on a MUST_CLOSE connection is a ProtocolError + p = setup() + p.conn[who_shot_first].receive_data(b"GET") + with pytest.raises(RemoteProtocolError): + p.conn[who_shot_first].next_event() + + +def test_close_different_states() -> None: + req = [ + Request(method="GET", target="/foo", headers=[("Host", "a")]), + EndOfMessage(), + ] + resp = [ + Response(status_code=200, headers=[(b"transfer-encoding", b"chunked")]), + EndOfMessage(), + ] + + # Client before request + p = ConnectionPair() + p.send(CLIENT, ConnectionClosed()) + for conn in p.conns: + assert conn.states == {CLIENT: CLOSED, SERVER: MUST_CLOSE} + + # Client after request + p = ConnectionPair() + p.send(CLIENT, req) + p.send(CLIENT, ConnectionClosed()) + for conn in p.conns: + assert conn.states == {CLIENT: CLOSED, SERVER: SEND_RESPONSE} + + # Server after request -> not allowed + p = ConnectionPair() + p.send(CLIENT, req) + with pytest.raises(LocalProtocolError): + p.conn[SERVER].send(ConnectionClosed()) + p.conn[CLIENT].receive_data(b"") + with pytest.raises(RemoteProtocolError): + p.conn[CLIENT].next_event() + + # Server after response + p = ConnectionPair() + p.send(CLIENT, req) + p.send(SERVER, resp) + p.send(SERVER, ConnectionClosed()) + for conn in p.conns: + assert conn.states == {CLIENT: MUST_CLOSE, SERVER: CLOSED} + + # Both after closing (ConnectionClosed() is idempotent) + p = ConnectionPair() + p.send(CLIENT, req) + p.send(SERVER, resp) + p.send(CLIENT, ConnectionClosed()) + p.send(SERVER, ConnectionClosed()) + p.send(CLIENT, ConnectionClosed()) + p.send(SERVER, ConnectionClosed()) + + # In the middle of sending -> not allowed + p = ConnectionPair() + p.send( + CLIENT, + Request( + method="GET", target="/", headers=[("Host", "a"), ("Content-Length", "10")] + ), + ) + with pytest.raises(LocalProtocolError): + p.conn[CLIENT].send(ConnectionClosed()) + p.conn[SERVER].receive_data(b"") + with pytest.raises(RemoteProtocolError): + p.conn[SERVER].next_event() + + +# Receive several requests and then client shuts down their side of the +# connection; we can respond to each +def test_pipelined_close() -> None: + c = Connection(SERVER) + # 2 requests then a close + c.receive_data( + b"GET /1 HTTP/1.1\r\nHost: a.com\r\nContent-Length: 5\r\n\r\n" + b"12345" + b"GET /2 HTTP/1.1\r\nHost: a.com\r\nContent-Length: 5\r\n\r\n" + b"67890" + ) + c.receive_data(b"") + assert get_all_events(c) == [ + Request( + method="GET", + target="/1", + headers=[("host", "a.com"), ("content-length", "5")], + ), + Data(data=b"12345"), + EndOfMessage(), + ] + assert c.states[CLIENT] is DONE + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + c.send(EndOfMessage()) + assert c.states[SERVER] is DONE + c.start_next_cycle() + assert get_all_events(c) == [ + Request( + method="GET", + target="/2", + headers=[("host", "a.com"), ("content-length", "5")], + ), + Data(data=b"67890"), + EndOfMessage(), + ConnectionClosed(), + ] + assert c.states == {CLIENT: CLOSED, SERVER: SEND_RESPONSE} + c.send(Response(status_code=200, headers=[])) # type: ignore[arg-type] + c.send(EndOfMessage()) + assert c.states == {CLIENT: CLOSED, SERVER: MUST_CLOSE} + c.send(ConnectionClosed()) + assert c.states == {CLIENT: CLOSED, SERVER: CLOSED} + + +def test_sendfile() -> None: + class SendfilePlaceholder: + def __len__(self) -> int: + return 10 + + placeholder = SendfilePlaceholder() + + def setup( + header: Tuple[str, str], http_version: str + ) -> Tuple[Connection, Optional[List[bytes]]]: + c = Connection(SERVER) + receive_and_get( + c, "GET / HTTP/{}\r\nHost: a\r\n\r\n".format(http_version).encode("ascii") + ) + headers = [] + if header: + headers.append(header) + c.send(Response(status_code=200, headers=headers)) + return c, c.send_with_data_passthrough(Data(data=placeholder)) # type: ignore + + c, data = setup(("Content-Length", "10"), "1.1") + assert data == [placeholder] # type: ignore + # Raises an error if the connection object doesn't think we've sent + # exactly 10 bytes + c.send(EndOfMessage()) + + _, data = setup(("Transfer-Encoding", "chunked"), "1.1") + assert placeholder in data # type: ignore + data[data.index(placeholder)] = b"x" * 10 # type: ignore + assert b"".join(data) == b"a\r\nxxxxxxxxxx\r\n" # type: ignore + + c, data = setup(None, "1.0") # type: ignore + assert data == [placeholder] # type: ignore + assert c.our_state is SEND_BODY + + +def test_errors() -> None: + # After a receive error, you can't receive + for role in [CLIENT, SERVER]: + c = Connection(our_role=role) + c.receive_data(b"gibberish\r\n\r\n") + with pytest.raises(RemoteProtocolError): + c.next_event() + # Now any attempt to receive continues to raise + assert c.their_state is ERROR + assert c.our_state is not ERROR + print(c._cstate.states) + with pytest.raises(RemoteProtocolError): + c.next_event() + # But we can still yell at the client for sending us gibberish + if role is SERVER: + assert ( + c.send(Response(status_code=400, headers=[])) # type: ignore[arg-type] + == b"HTTP/1.1 400 \r\nConnection: close\r\n\r\n" + ) + + # After an error sending, you can no longer send + # (This is especially important for things like content-length errors, + # where there's complex internal state being modified) + def conn(role: Type[Sentinel]) -> Connection: + c = Connection(our_role=role) + if role is SERVER: + # Put it into the state where it *could* send a response... + receive_and_get(c, b"GET / HTTP/1.0\r\n\r\n") + assert c.our_state is SEND_RESPONSE + return c + + for role in [CLIENT, SERVER]: + if role is CLIENT: + # This HTTP/1.0 request won't be detected as bad until after we go + # through the state machine and hit the writing code + good = Request(method="GET", target="/", headers=[("Host", "example.com")]) + bad = Request( + method="GET", + target="/", + headers=[("Host", "example.com")], + http_version="1.0", + ) + elif role is SERVER: + good = Response(status_code=200, headers=[]) # type: ignore[arg-type,assignment] + bad = Response(status_code=200, headers=[], http_version="1.0") # type: ignore[arg-type,assignment] + # Make sure 'good' actually is good + c = conn(role) + c.send(good) + assert c.our_state is not ERROR + # Do that again, but this time sending 'bad' first + c = conn(role) + with pytest.raises(LocalProtocolError): + c.send(bad) + assert c.our_state is ERROR + assert c.their_state is not ERROR + # Now 'good' is not so good + with pytest.raises(LocalProtocolError): + c.send(good) + + # And check send_failed() too + c = conn(role) + c.send_failed() + assert c.our_state is ERROR + assert c.their_state is not ERROR + # This is idempotent + c.send_failed() + assert c.our_state is ERROR + assert c.their_state is not ERROR + + +def test_idle_receive_nothing() -> None: + # At one point this incorrectly raised an error + for role in [CLIENT, SERVER]: + c = Connection(role) + assert c.next_event() is NEED_DATA + + +def test_connection_drop() -> None: + c = Connection(SERVER) + c.receive_data(b"GET /") + assert c.next_event() is NEED_DATA + c.receive_data(b"") + with pytest.raises(RemoteProtocolError): + c.next_event() + + +def test_408_request_timeout() -> None: + # Should be able to send this spontaneously as a server without seeing + # anything from client + p = ConnectionPair() + p.send(SERVER, Response(status_code=408, headers=[(b"connection", b"close")])) + + +# This used to raise IndexError +def test_empty_request() -> None: + c = Connection(SERVER) + c.receive_data(b"\r\n") + with pytest.raises(RemoteProtocolError): + c.next_event() + + +# This used to raise IndexError +def test_empty_response() -> None: + c = Connection(CLIENT) + c.send(Request(method="GET", target="/", headers=[("Host", "a")])) + c.receive_data(b"\r\n") + with pytest.raises(RemoteProtocolError): + c.next_event() + + +@pytest.mark.parametrize( + "data", + [ + b"\x00", + b"\x20", + b"\x16\x03\x01\x00\xa5", # Typical start of a TLS Client Hello + ], +) +def test_early_detection_of_invalid_request(data: bytes) -> None: + c = Connection(SERVER) + # Early detection should occur before even receiving a `\r\n` + c.receive_data(data) + with pytest.raises(RemoteProtocolError): + c.next_event() + + +@pytest.mark.parametrize( + "data", + [ + b"\x00", + b"\x20", + b"\x16\x03\x03\x00\x31", # Typical start of a TLS Server Hello + ], +) +def test_early_detection_of_invalid_response(data: bytes) -> None: + c = Connection(CLIENT) + # Early detection should occur before even receiving a `\r\n` + c.receive_data(data) + with pytest.raises(RemoteProtocolError): + c.next_event() + + +# This used to give different headers for HEAD and GET. +# The correct way to handle HEAD is to put whatever headers we *would* have +# put if it were a GET -- even though we know that for HEAD, those headers +# will be ignored. +def test_HEAD_framing_headers() -> None: + def setup(method: bytes, http_version: bytes) -> Connection: + c = Connection(SERVER) + c.receive_data( + method + b" / HTTP/" + http_version + b"\r\n" + b"Host: example.com\r\n\r\n" + ) + assert type(c.next_event()) is Request + assert type(c.next_event()) is EndOfMessage + return c + + for method in [b"GET", b"HEAD"]: + # No Content-Length, HTTP/1.1 peer, should use chunked + c = setup(method, b"1.1") + assert ( + c.send(Response(status_code=200, headers=[])) == b"HTTP/1.1 200 \r\n" # type: ignore[arg-type] + b"Transfer-Encoding: chunked\r\n\r\n" + ) + + # No Content-Length, HTTP/1.0 peer, frame with connection: close + c = setup(method, b"1.0") + assert ( + c.send(Response(status_code=200, headers=[])) == b"HTTP/1.1 200 \r\n" # type: ignore[arg-type] + b"Connection: close\r\n\r\n" + ) + + # Content-Length + Transfer-Encoding, TE wins + c = setup(method, b"1.1") + assert ( + c.send( + Response( + status_code=200, + headers=[ + ("Content-Length", "100"), + ("Transfer-Encoding", "chunked"), + ], + ) + ) + == b"HTTP/1.1 200 \r\n" + b"Transfer-Encoding: chunked\r\n\r\n" + ) + + +def test_special_exceptions_for_lost_connection_in_message_body() -> None: + c = Connection(SERVER) + c.receive_data( + b"POST / HTTP/1.1\r\n" b"Host: example.com\r\n" b"Content-Length: 100\r\n\r\n" + ) + assert type(c.next_event()) is Request + assert c.next_event() is NEED_DATA + c.receive_data(b"12345") + assert c.next_event() == Data(data=b"12345") + c.receive_data(b"") + with pytest.raises(RemoteProtocolError) as excinfo: + c.next_event() + assert "received 5 bytes" in str(excinfo.value) + assert "expected 100" in str(excinfo.value) + + c = Connection(SERVER) + c.receive_data( + b"POST / HTTP/1.1\r\n" + b"Host: example.com\r\n" + b"Transfer-Encoding: chunked\r\n\r\n" + ) + assert type(c.next_event()) is Request + assert c.next_event() is NEED_DATA + c.receive_data(b"8\r\n012345") + assert c.next_event().data == b"012345" # type: ignore + c.receive_data(b"") + with pytest.raises(RemoteProtocolError) as excinfo: + c.next_event() + assert "incomplete chunked read" in str(excinfo.value) diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_events.py b/venv/lib/python3.12/site-packages/h11/tests/test_events.py new file mode 100644 index 0000000..bc6c313 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_events.py @@ -0,0 +1,150 @@ +from http import HTTPStatus + +import pytest + +from .. import _events +from .._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from .._util import LocalProtocolError + + +def test_events() -> None: + with pytest.raises(LocalProtocolError): + # Missing Host: + req = Request( + method="GET", target="/", headers=[("a", "b")], http_version="1.1" + ) + # But this is okay (HTTP/1.0) + req = Request(method="GET", target="/", headers=[("a", "b")], http_version="1.0") + # fields are normalized + assert req.method == b"GET" + assert req.target == b"/" + assert req.headers == [(b"a", b"b")] + assert req.http_version == b"1.0" + + # This is also okay -- has a Host (with weird capitalization, which is ok) + req = Request( + method="GET", + target="/", + headers=[("a", "b"), ("hOSt", "example.com")], + http_version="1.1", + ) + # we normalize header capitalization + assert req.headers == [(b"a", b"b"), (b"host", b"example.com")] + + # Multiple host is bad too + with pytest.raises(LocalProtocolError): + req = Request( + method="GET", + target="/", + headers=[("Host", "a"), ("Host", "a")], + http_version="1.1", + ) + # Even for HTTP/1.0 + with pytest.raises(LocalProtocolError): + req = Request( + method="GET", + target="/", + headers=[("Host", "a"), ("Host", "a")], + http_version="1.0", + ) + + # Header values are validated + for bad_char in "\x00\r\n\f\v": + with pytest.raises(LocalProtocolError): + req = Request( + method="GET", + target="/", + headers=[("Host", "a"), ("Foo", "asd" + bad_char)], + http_version="1.0", + ) + + # But for compatibility we allow non-whitespace control characters, even + # though they're forbidden by the spec. + Request( + method="GET", + target="/", + headers=[("Host", "a"), ("Foo", "asd\x01\x02\x7f")], + http_version="1.0", + ) + + # Request target is validated + for bad_byte in b"\x00\x20\x7f\xee": + target = bytearray(b"/") + target.append(bad_byte) + with pytest.raises(LocalProtocolError): + Request( + method="GET", target=target, headers=[("Host", "a")], http_version="1.1" + ) + + # Request method is validated + with pytest.raises(LocalProtocolError): + Request( + method="GET / HTTP/1.1", + target=target, + headers=[("Host", "a")], + http_version="1.1", + ) + + ir = InformationalResponse(status_code=100, headers=[("Host", "a")]) + assert ir.status_code == 100 + assert ir.headers == [(b"host", b"a")] + assert ir.http_version == b"1.1" + + with pytest.raises(LocalProtocolError): + InformationalResponse(status_code=200, headers=[("Host", "a")]) + + resp = Response(status_code=204, headers=[], http_version="1.0") # type: ignore[arg-type] + assert resp.status_code == 204 + assert resp.headers == [] + assert resp.http_version == b"1.0" + + with pytest.raises(LocalProtocolError): + resp = Response(status_code=100, headers=[], http_version="1.0") # type: ignore[arg-type] + + with pytest.raises(LocalProtocolError): + Response(status_code="100", headers=[], http_version="1.0") # type: ignore[arg-type] + + with pytest.raises(LocalProtocolError): + InformationalResponse(status_code=b"100", headers=[], http_version="1.0") # type: ignore[arg-type] + + d = Data(data=b"asdf") + assert d.data == b"asdf" + + eom = EndOfMessage() + assert eom.headers == [] + + cc = ConnectionClosed() + assert repr(cc) == "ConnectionClosed()" + + +def test_intenum_status_code() -> None: + # https://github.com/python-hyper/h11/issues/72 + + r = Response(status_code=HTTPStatus.OK, headers=[], http_version="1.0") # type: ignore[arg-type] + assert r.status_code == HTTPStatus.OK + assert type(r.status_code) is not type(HTTPStatus.OK) + assert type(r.status_code) is int + + +def test_header_casing() -> None: + r = Request( + method="GET", + target="/", + headers=[("Host", "example.org"), ("Connection", "keep-alive")], + http_version="1.1", + ) + assert len(r.headers) == 2 + assert r.headers[0] == (b"host", b"example.org") + assert r.headers == [(b"host", b"example.org"), (b"connection", b"keep-alive")] + assert r.headers.raw_items() == [ + (b"Host", b"example.org"), + (b"Connection", b"keep-alive"), + ] diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_headers.py b/venv/lib/python3.12/site-packages/h11/tests/test_headers.py new file mode 100644 index 0000000..ba53d08 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_headers.py @@ -0,0 +1,157 @@ +import pytest + +from .._events import Request +from .._headers import ( + get_comma_header, + has_expect_100_continue, + Headers, + normalize_and_validate, + set_comma_header, +) +from .._util import LocalProtocolError + + +def test_normalize_and_validate() -> None: + assert normalize_and_validate([("foo", "bar")]) == [(b"foo", b"bar")] + assert normalize_and_validate([(b"foo", b"bar")]) == [(b"foo", b"bar")] + + # no leading/trailing whitespace in names + with pytest.raises(LocalProtocolError): + normalize_and_validate([(b"foo ", "bar")]) + with pytest.raises(LocalProtocolError): + normalize_and_validate([(b" foo", "bar")]) + + # no weird characters in names + with pytest.raises(LocalProtocolError) as excinfo: + normalize_and_validate([(b"foo bar", b"baz")]) + assert "foo bar" in str(excinfo.value) + with pytest.raises(LocalProtocolError): + normalize_and_validate([(b"foo\x00bar", b"baz")]) + # Not even 8-bit characters: + with pytest.raises(LocalProtocolError): + normalize_and_validate([(b"foo\xffbar", b"baz")]) + # And not even the control characters we allow in values: + with pytest.raises(LocalProtocolError): + normalize_and_validate([(b"foo\x01bar", b"baz")]) + + # no return or NUL characters in values + with pytest.raises(LocalProtocolError) as excinfo: + normalize_and_validate([("foo", "bar\rbaz")]) + assert "bar\\rbaz" in str(excinfo.value) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("foo", "bar\nbaz")]) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("foo", "bar\x00baz")]) + # no leading/trailing whitespace + with pytest.raises(LocalProtocolError): + normalize_and_validate([("foo", "barbaz ")]) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("foo", " barbaz")]) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("foo", "barbaz\t")]) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("foo", "\tbarbaz")]) + + # content-length + assert normalize_and_validate([("Content-Length", "1")]) == [ + (b"content-length", b"1") + ] + with pytest.raises(LocalProtocolError): + normalize_and_validate([("Content-Length", "asdf")]) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("Content-Length", "1x")]) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("Content-Length", "1"), ("Content-Length", "2")]) + assert normalize_and_validate( + [("Content-Length", "0"), ("Content-Length", "0")] + ) == [(b"content-length", b"0")] + assert normalize_and_validate([("Content-Length", "0 , 0")]) == [ + (b"content-length", b"0") + ] + with pytest.raises(LocalProtocolError): + normalize_and_validate( + [("Content-Length", "1"), ("Content-Length", "1"), ("Content-Length", "2")] + ) + with pytest.raises(LocalProtocolError): + normalize_and_validate([("Content-Length", "1 , 1,2")]) + + # transfer-encoding + assert normalize_and_validate([("Transfer-Encoding", "chunked")]) == [ + (b"transfer-encoding", b"chunked") + ] + assert normalize_and_validate([("Transfer-Encoding", "cHuNkEd")]) == [ + (b"transfer-encoding", b"chunked") + ] + with pytest.raises(LocalProtocolError) as excinfo: + normalize_and_validate([("Transfer-Encoding", "gzip")]) + assert excinfo.value.error_status_hint == 501 # Not Implemented + with pytest.raises(LocalProtocolError) as excinfo: + normalize_and_validate( + [("Transfer-Encoding", "chunked"), ("Transfer-Encoding", "gzip")] + ) + assert excinfo.value.error_status_hint == 501 # Not Implemented + + +def test_get_set_comma_header() -> None: + headers = normalize_and_validate( + [ + ("Connection", "close"), + ("whatever", "something"), + ("connectiON", "fOo,, , BAR"), + ] + ) + + assert get_comma_header(headers, b"connection") == [b"close", b"foo", b"bar"] + + headers = set_comma_header(headers, b"newthing", ["a", "b"]) # type: ignore + + with pytest.raises(LocalProtocolError): + set_comma_header(headers, b"newthing", [" a", "b"]) # type: ignore + + assert headers == [ + (b"connection", b"close"), + (b"whatever", b"something"), + (b"connection", b"fOo,, , BAR"), + (b"newthing", b"a"), + (b"newthing", b"b"), + ] + + headers = set_comma_header(headers, b"whatever", ["different thing"]) # type: ignore + + assert headers == [ + (b"connection", b"close"), + (b"connection", b"fOo,, , BAR"), + (b"newthing", b"a"), + (b"newthing", b"b"), + (b"whatever", b"different thing"), + ] + + +def test_has_100_continue() -> None: + assert has_expect_100_continue( + Request( + method="GET", + target="/", + headers=[("Host", "example.com"), ("Expect", "100-continue")], + ) + ) + assert not has_expect_100_continue( + Request(method="GET", target="/", headers=[("Host", "example.com")]) + ) + # Case insensitive + assert has_expect_100_continue( + Request( + method="GET", + target="/", + headers=[("Host", "example.com"), ("Expect", "100-Continue")], + ) + ) + # Doesn't work in HTTP/1.0 + assert not has_expect_100_continue( + Request( + method="GET", + target="/", + headers=[("Host", "example.com"), ("Expect", "100-continue")], + http_version="1.0", + ) + ) diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_helpers.py b/venv/lib/python3.12/site-packages/h11/tests/test_helpers.py new file mode 100644 index 0000000..c329c76 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_helpers.py @@ -0,0 +1,32 @@ +from .._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from .helpers import normalize_data_events + + +def test_normalize_data_events() -> None: + assert normalize_data_events( + [ + Data(data=bytearray(b"1")), + Data(data=b"2"), + Response(status_code=200, headers=[]), # type: ignore[arg-type] + Data(data=b"3"), + Data(data=b"4"), + EndOfMessage(), + Data(data=b"5"), + Data(data=b"6"), + Data(data=b"7"), + ] + ) == [ + Data(data=b"12"), + Response(status_code=200, headers=[]), # type: ignore[arg-type] + Data(data=b"34"), + EndOfMessage(), + Data(data=b"567"), + ] diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_io.py b/venv/lib/python3.12/site-packages/h11/tests/test_io.py new file mode 100644 index 0000000..2b47c0e --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_io.py @@ -0,0 +1,572 @@ +from typing import Any, Callable, Generator, List + +import pytest + +from .._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from .._headers import Headers, normalize_and_validate +from .._readers import ( + _obsolete_line_fold, + ChunkedReader, + ContentLengthReader, + Http10Reader, + READERS, +) +from .._receivebuffer import ReceiveBuffer +from .._state import ( + CLIENT, + CLOSED, + DONE, + IDLE, + MIGHT_SWITCH_PROTOCOL, + MUST_CLOSE, + SEND_BODY, + SEND_RESPONSE, + SERVER, + SWITCHED_PROTOCOL, +) +from .._util import LocalProtocolError +from .._writers import ( + ChunkedWriter, + ContentLengthWriter, + Http10Writer, + write_any_response, + write_headers, + write_request, + WRITERS, +) +from .helpers import normalize_data_events + +SIMPLE_CASES = [ + ( + (CLIENT, IDLE), + Request( + method="GET", + target="/a", + headers=[("Host", "foo"), ("Connection", "close")], + ), + b"GET /a HTTP/1.1\r\nHost: foo\r\nConnection: close\r\n\r\n", + ), + ( + (SERVER, SEND_RESPONSE), + Response(status_code=200, headers=[("Connection", "close")], reason=b"OK"), + b"HTTP/1.1 200 OK\r\nConnection: close\r\n\r\n", + ), + ( + (SERVER, SEND_RESPONSE), + Response(status_code=200, headers=[], reason=b"OK"), # type: ignore[arg-type] + b"HTTP/1.1 200 OK\r\n\r\n", + ), + ( + (SERVER, SEND_RESPONSE), + InformationalResponse( + status_code=101, headers=[("Upgrade", "websocket")], reason=b"Upgrade" + ), + b"HTTP/1.1 101 Upgrade\r\nUpgrade: websocket\r\n\r\n", + ), + ( + (SERVER, SEND_RESPONSE), + InformationalResponse(status_code=101, headers=[], reason=b"Upgrade"), # type: ignore[arg-type] + b"HTTP/1.1 101 Upgrade\r\n\r\n", + ), +] + + +def dowrite(writer: Callable[..., None], obj: Any) -> bytes: + got_list: List[bytes] = [] + writer(obj, got_list.append) + return b"".join(got_list) + + +def tw(writer: Any, obj: Any, expected: Any) -> None: + got = dowrite(writer, obj) + assert got == expected + + +def makebuf(data: bytes) -> ReceiveBuffer: + buf = ReceiveBuffer() + buf += data + return buf + + +def tr(reader: Any, data: bytes, expected: Any) -> None: + def check(got: Any) -> None: + assert got == expected + # Headers should always be returned as bytes, not e.g. bytearray + # https://github.com/python-hyper/wsproto/pull/54#issuecomment-377709478 + for name, value in getattr(got, "headers", []): + assert type(name) is bytes + assert type(value) is bytes + + # Simple: consume whole thing + buf = makebuf(data) + check(reader(buf)) + assert not buf + + # Incrementally growing buffer + buf = ReceiveBuffer() + for i in range(len(data)): + assert reader(buf) is None + buf += data[i : i + 1] + check(reader(buf)) + + # Trailing data + buf = makebuf(data) + buf += b"trailing" + check(reader(buf)) + assert bytes(buf) == b"trailing" + + +def test_writers_simple() -> None: + for ((role, state), event, binary) in SIMPLE_CASES: + tw(WRITERS[role, state], event, binary) + + +def test_readers_simple() -> None: + for ((role, state), event, binary) in SIMPLE_CASES: + tr(READERS[role, state], binary, event) + + +def test_writers_unusual() -> None: + # Simple test of the write_headers utility routine + tw( + write_headers, + normalize_and_validate([("foo", "bar"), ("baz", "quux")]), + b"foo: bar\r\nbaz: quux\r\n\r\n", + ) + tw(write_headers, Headers([]), b"\r\n") + + # We understand HTTP/1.0, but we don't speak it + with pytest.raises(LocalProtocolError): + tw( + write_request, + Request( + method="GET", + target="/", + headers=[("Host", "foo"), ("Connection", "close")], + http_version="1.0", + ), + None, + ) + with pytest.raises(LocalProtocolError): + tw( + write_any_response, + Response( + status_code=200, headers=[("Connection", "close")], http_version="1.0" + ), + None, + ) + + +def test_readers_unusual() -> None: + # Reading HTTP/1.0 + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.0\r\nSome: header\r\n\r\n", + Request( + method="HEAD", + target="/foo", + headers=[("Some", "header")], + http_version="1.0", + ), + ) + + # check no-headers, since it's only legal with HTTP/1.0 + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.0\r\n\r\n", + Request(method="HEAD", target="/foo", headers=[], http_version="1.0"), # type: ignore[arg-type] + ) + + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.0 200 OK\r\nSome: header\r\n\r\n", + Response( + status_code=200, + headers=[("Some", "header")], + http_version="1.0", + reason=b"OK", + ), + ) + + # single-character header values (actually disallowed by the ABNF in RFC + # 7230 -- this is a bug in the standard that we originally copied...) + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.0 200 OK\r\n" b"Foo: a a a a a \r\n\r\n", + Response( + status_code=200, + headers=[("Foo", "a a a a a")], + http_version="1.0", + reason=b"OK", + ), + ) + + # Empty headers -- also legal + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.0 200 OK\r\n" b"Foo:\r\n\r\n", + Response( + status_code=200, headers=[("Foo", "")], http_version="1.0", reason=b"OK" + ), + ) + + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.0 200 OK\r\n" b"Foo: \t \t \r\n\r\n", + Response( + status_code=200, headers=[("Foo", "")], http_version="1.0", reason=b"OK" + ), + ) + + # Tolerate broken servers that leave off the response code + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.0 200\r\n" b"Foo: bar\r\n\r\n", + Response( + status_code=200, headers=[("Foo", "bar")], http_version="1.0", reason=b"" + ), + ) + + # Tolerate headers line endings (\r\n and \n) + # \n\r\b between headers and body + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.1 200 OK\r\nSomeHeader: val\n\r\n", + Response( + status_code=200, + headers=[("SomeHeader", "val")], + http_version="1.1", + reason="OK", + ), + ) + + # delimited only with \n + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.1 200 OK\nSomeHeader1: val1\nSomeHeader2: val2\n\n", + Response( + status_code=200, + headers=[("SomeHeader1", "val1"), ("SomeHeader2", "val2")], + http_version="1.1", + reason="OK", + ), + ) + + # mixed \r\n and \n + tr( + READERS[SERVER, SEND_RESPONSE], + b"HTTP/1.1 200 OK\r\nSomeHeader1: val1\nSomeHeader2: val2\n\r\n", + Response( + status_code=200, + headers=[("SomeHeader1", "val1"), ("SomeHeader2", "val2")], + http_version="1.1", + reason="OK", + ), + ) + + # obsolete line folding + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1\r\n" + b"Host: example.com\r\n" + b"Some: multi-line\r\n" + b" header\r\n" + b"\tnonsense\r\n" + b" \t \t\tI guess\r\n" + b"Connection: close\r\n" + b"More-nonsense: in the\r\n" + b" last header \r\n\r\n", + Request( + method="HEAD", + target="/foo", + headers=[ + ("Host", "example.com"), + ("Some", "multi-line header nonsense I guess"), + ("Connection", "close"), + ("More-nonsense", "in the last header"), + ], + ), + ) + + with pytest.raises(LocalProtocolError): + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1\r\n" b" folded: line\r\n\r\n", + None, + ) + + with pytest.raises(LocalProtocolError): + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1\r\n" b"foo : line\r\n\r\n", + None, + ) + with pytest.raises(LocalProtocolError): + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1\r\n" b"foo\t: line\r\n\r\n", + None, + ) + with pytest.raises(LocalProtocolError): + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1\r\n" b"foo\t: line\r\n\r\n", + None, + ) + with pytest.raises(LocalProtocolError): + tr(READERS[CLIENT, IDLE], b"HEAD /foo HTTP/1.1\r\n" b": line\r\n\r\n", None) + + +def test__obsolete_line_fold_bytes() -> None: + # _obsolete_line_fold has a defensive cast to bytearray, which is + # necessary to protect against O(n^2) behavior in case anyone ever passes + # in regular bytestrings... but right now we never pass in regular + # bytestrings. so this test just exists to get some coverage on that + # defensive cast. + assert list(_obsolete_line_fold([b"aaa", b"bbb", b" ccc", b"ddd"])) == [ + b"aaa", + bytearray(b"bbb ccc"), + b"ddd", + ] + + +def _run_reader_iter( + reader: Any, buf: bytes, do_eof: bool +) -> Generator[Any, None, None]: + while True: + event = reader(buf) + if event is None: + break + yield event + # body readers have undefined behavior after returning EndOfMessage, + # because this changes the state so they don't get called again + if type(event) is EndOfMessage: + break + if do_eof: + assert not buf + yield reader.read_eof() + + +def _run_reader(*args: Any) -> List[Event]: + events = list(_run_reader_iter(*args)) + return normalize_data_events(events) + + +def t_body_reader(thunk: Any, data: bytes, expected: Any, do_eof: bool = False) -> None: + # Simple: consume whole thing + print("Test 1") + buf = makebuf(data) + assert _run_reader(thunk(), buf, do_eof) == expected + + # Incrementally growing buffer + print("Test 2") + reader = thunk() + buf = ReceiveBuffer() + events = [] + for i in range(len(data)): + events += _run_reader(reader, buf, False) + buf += data[i : i + 1] + events += _run_reader(reader, buf, do_eof) + assert normalize_data_events(events) == expected + + is_complete = any(type(event) is EndOfMessage for event in expected) + if is_complete and not do_eof: + buf = makebuf(data + b"trailing") + assert _run_reader(thunk(), buf, False) == expected + + +def test_ContentLengthReader() -> None: + t_body_reader(lambda: ContentLengthReader(0), b"", [EndOfMessage()]) + + t_body_reader( + lambda: ContentLengthReader(10), + b"0123456789", + [Data(data=b"0123456789"), EndOfMessage()], + ) + + +def test_Http10Reader() -> None: + t_body_reader(Http10Reader, b"", [EndOfMessage()], do_eof=True) + t_body_reader(Http10Reader, b"asdf", [Data(data=b"asdf")], do_eof=False) + t_body_reader( + Http10Reader, b"asdf", [Data(data=b"asdf"), EndOfMessage()], do_eof=True + ) + + +def test_ChunkedReader() -> None: + t_body_reader(ChunkedReader, b"0\r\n\r\n", [EndOfMessage()]) + + t_body_reader( + ChunkedReader, + b"0\r\nSome: header\r\n\r\n", + [EndOfMessage(headers=[("Some", "header")])], + ) + + t_body_reader( + ChunkedReader, + b"5\r\n01234\r\n" + + b"10\r\n0123456789abcdef\r\n" + + b"0\r\n" + + b"Some: header\r\n\r\n", + [ + Data(data=b"012340123456789abcdef"), + EndOfMessage(headers=[("Some", "header")]), + ], + ) + + t_body_reader( + ChunkedReader, + b"5\r\n01234\r\n" + b"10\r\n0123456789abcdef\r\n" + b"0\r\n\r\n", + [Data(data=b"012340123456789abcdef"), EndOfMessage()], + ) + + # handles upper and lowercase hex + t_body_reader( + ChunkedReader, + b"aA\r\n" + b"x" * 0xAA + b"\r\n" + b"0\r\n\r\n", + [Data(data=b"x" * 0xAA), EndOfMessage()], + ) + + # refuses arbitrarily long chunk integers + with pytest.raises(LocalProtocolError): + # Technically this is legal HTTP/1.1, but we refuse to process chunk + # sizes that don't fit into 20 characters of hex + t_body_reader(ChunkedReader, b"9" * 100 + b"\r\nxxx", [Data(data=b"xxx")]) + + # refuses garbage in the chunk count + with pytest.raises(LocalProtocolError): + t_body_reader(ChunkedReader, b"10\x00\r\nxxx", None) + + # handles (and discards) "chunk extensions" omg wtf + t_body_reader( + ChunkedReader, + b"5; hello=there\r\n" + + b"xxxxx" + + b"\r\n" + + b'0; random="junk"; some=more; canbe=lonnnnngg\r\n\r\n', + [Data(data=b"xxxxx"), EndOfMessage()], + ) + + t_body_reader( + ChunkedReader, + b"5 \r\n01234\r\n" + b"0\r\n\r\n", + [Data(data=b"01234"), EndOfMessage()], + ) + + +def test_ContentLengthWriter() -> None: + w = ContentLengthWriter(5) + assert dowrite(w, Data(data=b"123")) == b"123" + assert dowrite(w, Data(data=b"45")) == b"45" + assert dowrite(w, EndOfMessage()) == b"" + + w = ContentLengthWriter(5) + with pytest.raises(LocalProtocolError): + dowrite(w, Data(data=b"123456")) + + w = ContentLengthWriter(5) + dowrite(w, Data(data=b"123")) + with pytest.raises(LocalProtocolError): + dowrite(w, Data(data=b"456")) + + w = ContentLengthWriter(5) + dowrite(w, Data(data=b"123")) + with pytest.raises(LocalProtocolError): + dowrite(w, EndOfMessage()) + + w = ContentLengthWriter(5) + dowrite(w, Data(data=b"123")) == b"123" + dowrite(w, Data(data=b"45")) == b"45" + with pytest.raises(LocalProtocolError): + dowrite(w, EndOfMessage(headers=[("Etag", "asdf")])) + + +def test_ChunkedWriter() -> None: + w = ChunkedWriter() + assert dowrite(w, Data(data=b"aaa")) == b"3\r\naaa\r\n" + assert dowrite(w, Data(data=b"a" * 20)) == b"14\r\n" + b"a" * 20 + b"\r\n" + + assert dowrite(w, Data(data=b"")) == b"" + + assert dowrite(w, EndOfMessage()) == b"0\r\n\r\n" + + assert ( + dowrite(w, EndOfMessage(headers=[("Etag", "asdf"), ("a", "b")])) + == b"0\r\nEtag: asdf\r\na: b\r\n\r\n" + ) + + +def test_Http10Writer() -> None: + w = Http10Writer() + assert dowrite(w, Data(data=b"1234")) == b"1234" + assert dowrite(w, EndOfMessage()) == b"" + + with pytest.raises(LocalProtocolError): + dowrite(w, EndOfMessage(headers=[("Etag", "asdf")])) + + +def test_reject_garbage_after_request_line() -> None: + with pytest.raises(LocalProtocolError): + tr(READERS[SERVER, SEND_RESPONSE], b"HTTP/1.0 200 OK\x00xxxx\r\n\r\n", None) + + +def test_reject_garbage_after_response_line() -> None: + with pytest.raises(LocalProtocolError): + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1 xxxxxx\r\n" b"Host: a\r\n\r\n", + None, + ) + + +def test_reject_garbage_in_header_line() -> None: + with pytest.raises(LocalProtocolError): + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1\r\n" b"Host: foo\x00bar\r\n\r\n", + None, + ) + + +def test_reject_non_vchar_in_path() -> None: + for bad_char in b"\x00\x20\x7f\xee": + message = bytearray(b"HEAD /") + message.append(bad_char) + message.extend(b" HTTP/1.1\r\nHost: foobar\r\n\r\n") + with pytest.raises(LocalProtocolError): + tr(READERS[CLIENT, IDLE], message, None) + + +# https://github.com/python-hyper/h11/issues/57 +def test_allow_some_garbage_in_cookies() -> None: + tr( + READERS[CLIENT, IDLE], + b"HEAD /foo HTTP/1.1\r\n" + b"Host: foo\r\n" + b"Set-Cookie: ___utmvafIumyLc=kUd\x01UpAt; path=/; Max-Age=900\r\n" + b"\r\n", + Request( + method="HEAD", + target="/foo", + headers=[ + ("Host", "foo"), + ("Set-Cookie", "___utmvafIumyLc=kUd\x01UpAt; path=/; Max-Age=900"), + ], + ), + ) + + +def test_host_comes_first() -> None: + tw( + write_headers, + normalize_and_validate([("foo", "bar"), ("Host", "example.com")]), + b"Host: example.com\r\nfoo: bar\r\n\r\n", + ) diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_receivebuffer.py b/venv/lib/python3.12/site-packages/h11/tests/test_receivebuffer.py new file mode 100644 index 0000000..21a3870 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_receivebuffer.py @@ -0,0 +1,135 @@ +import re +from typing import Tuple + +import pytest + +from .._receivebuffer import ReceiveBuffer + + +def test_receivebuffer() -> None: + b = ReceiveBuffer() + assert not b + assert len(b) == 0 + assert bytes(b) == b"" + + b += b"123" + assert b + assert len(b) == 3 + assert bytes(b) == b"123" + + assert bytes(b) == b"123" + + assert b.maybe_extract_at_most(2) == b"12" + assert b + assert len(b) == 1 + assert bytes(b) == b"3" + + assert bytes(b) == b"3" + + assert b.maybe_extract_at_most(10) == b"3" + assert bytes(b) == b"" + + assert b.maybe_extract_at_most(10) is None + assert not b + + ################################################################ + # maybe_extract_until_next + ################################################################ + + b += b"123\n456\r\n789\r\n" + + assert b.maybe_extract_next_line() == b"123\n456\r\n" + assert bytes(b) == b"789\r\n" + + assert b.maybe_extract_next_line() == b"789\r\n" + assert bytes(b) == b"" + + b += b"12\r" + assert b.maybe_extract_next_line() is None + assert bytes(b) == b"12\r" + + b += b"345\n\r" + assert b.maybe_extract_next_line() is None + assert bytes(b) == b"12\r345\n\r" + + # here we stopped at the middle of b"\r\n" delimiter + + b += b"\n6789aaa123\r\n" + assert b.maybe_extract_next_line() == b"12\r345\n\r\n" + assert b.maybe_extract_next_line() == b"6789aaa123\r\n" + assert b.maybe_extract_next_line() is None + assert bytes(b) == b"" + + ################################################################ + # maybe_extract_lines + ################################################################ + + b += b"123\r\na: b\r\nfoo:bar\r\n\r\ntrailing" + lines = b.maybe_extract_lines() + assert lines == [b"123", b"a: b", b"foo:bar"] + assert bytes(b) == b"trailing" + + assert b.maybe_extract_lines() is None + + b += b"\r\n\r" + assert b.maybe_extract_lines() is None + + assert b.maybe_extract_at_most(100) == b"trailing\r\n\r" + assert not b + + # Empty body case (as happens at the end of chunked encoding if there are + # no trailing headers, e.g.) + b += b"\r\ntrailing" + assert b.maybe_extract_lines() == [] + assert bytes(b) == b"trailing" + + +@pytest.mark.parametrize( + "data", + [ + pytest.param( + ( + b"HTTP/1.1 200 OK\r\n", + b"Content-type: text/plain\r\n", + b"Connection: close\r\n", + b"\r\n", + b"Some body", + ), + id="with_crlf_delimiter", + ), + pytest.param( + ( + b"HTTP/1.1 200 OK\n", + b"Content-type: text/plain\n", + b"Connection: close\n", + b"\n", + b"Some body", + ), + id="with_lf_only_delimiter", + ), + pytest.param( + ( + b"HTTP/1.1 200 OK\n", + b"Content-type: text/plain\r\n", + b"Connection: close\n", + b"\n", + b"Some body", + ), + id="with_mixed_crlf_and_lf", + ), + ], +) +def test_receivebuffer_for_invalid_delimiter(data: Tuple[bytes]) -> None: + b = ReceiveBuffer() + + for line in data: + b += line + + lines = b.maybe_extract_lines() + + assert lines == [ + b"HTTP/1.1 200 OK", + b"Content-type: text/plain", + b"Connection: close", + ] + assert bytes(b) == b"Some body" diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_state.py b/venv/lib/python3.12/site-packages/h11/tests/test_state.py new file mode 100644 index 0000000..bc974e6 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_state.py @@ -0,0 +1,271 @@ +import pytest + +from .._events import ( + ConnectionClosed, + Data, + EndOfMessage, + Event, + InformationalResponse, + Request, + Response, +) +from .._state import ( + _SWITCH_CONNECT, + _SWITCH_UPGRADE, + CLIENT, + CLOSED, + ConnectionState, + DONE, + IDLE, + MIGHT_SWITCH_PROTOCOL, + MUST_CLOSE, + SEND_BODY, + SEND_RESPONSE, + SERVER, + SWITCHED_PROTOCOL, +) +from .._util import LocalProtocolError + + +def test_ConnectionState() -> None: + cs = ConnectionState() + + # Basic event-triggered transitions + + assert cs.states == {CLIENT: IDLE, SERVER: IDLE} + + cs.process_event(CLIENT, Request) + # The SERVER-Request special case: + assert cs.states == {CLIENT: SEND_BODY, SERVER: SEND_RESPONSE} + + # Illegal transitions raise an error and nothing happens + with pytest.raises(LocalProtocolError): + cs.process_event(CLIENT, Request) + assert cs.states == {CLIENT: SEND_BODY, SERVER: SEND_RESPONSE} + + cs.process_event(SERVER, InformationalResponse) + assert cs.states == {CLIENT: SEND_BODY, SERVER: SEND_RESPONSE} + + cs.process_event(SERVER, Response) + assert cs.states == {CLIENT: SEND_BODY, SERVER: SEND_BODY} + + cs.process_event(CLIENT, EndOfMessage) + cs.process_event(SERVER, EndOfMessage) + assert cs.states == {CLIENT: DONE, SERVER: DONE} + + # State-triggered transition + + cs.process_event(SERVER, ConnectionClosed) + assert cs.states == {CLIENT: MUST_CLOSE, SERVER: CLOSED} + + +def test_ConnectionState_keep_alive() -> None: + # keep_alive = False + cs = ConnectionState() + cs.process_event(CLIENT, Request) + cs.process_keep_alive_disabled() + cs.process_event(CLIENT, EndOfMessage) + assert cs.states == {CLIENT: MUST_CLOSE, SERVER: SEND_RESPONSE} + + cs.process_event(SERVER, Response) + cs.process_event(SERVER, EndOfMessage) + assert cs.states == {CLIENT: MUST_CLOSE, SERVER: MUST_CLOSE} + + +def test_ConnectionState_keep_alive_in_DONE() -> None: + # Check that if keep_alive is disabled when the CLIENT is already in DONE, + # then this is sufficient to immediately trigger the DONE -> MUST_CLOSE + # transition + cs = ConnectionState() + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, EndOfMessage) + assert cs.states[CLIENT] is DONE + cs.process_keep_alive_disabled() + assert cs.states[CLIENT] is MUST_CLOSE + + +def test_ConnectionState_switch_denied() -> None: + for switch_type in (_SWITCH_CONNECT, _SWITCH_UPGRADE): + for deny_early in (True, False): + cs = ConnectionState() + cs.process_client_switch_proposal(switch_type) + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, Data) + assert cs.states == {CLIENT: SEND_BODY, SERVER: SEND_RESPONSE} + + assert switch_type in cs.pending_switch_proposals + + if deny_early: + # before client reaches DONE + cs.process_event(SERVER, Response) + assert not cs.pending_switch_proposals + + cs.process_event(CLIENT, EndOfMessage) + + if deny_early: + assert cs.states == {CLIENT: DONE, SERVER: SEND_BODY} + else: + assert cs.states == { + CLIENT: MIGHT_SWITCH_PROTOCOL, + SERVER: SEND_RESPONSE, + } + + cs.process_event(SERVER, InformationalResponse) + assert cs.states == { + CLIENT: MIGHT_SWITCH_PROTOCOL, + SERVER: SEND_RESPONSE, + } + + cs.process_event(SERVER, Response) + assert cs.states == {CLIENT: DONE, SERVER: SEND_BODY} + assert not cs.pending_switch_proposals + + +_response_type_for_switch = { + _SWITCH_UPGRADE: InformationalResponse, + _SWITCH_CONNECT: Response, + None: Response, +} + + +def test_ConnectionState_protocol_switch_accepted() -> None: + for switch_event in [_SWITCH_UPGRADE, _SWITCH_CONNECT]: + cs = ConnectionState() + cs.process_client_switch_proposal(switch_event) + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, Data) + assert cs.states == {CLIENT: SEND_BODY, SERVER: SEND_RESPONSE} + + cs.process_event(CLIENT, EndOfMessage) + assert cs.states == {CLIENT: MIGHT_SWITCH_PROTOCOL, SERVER: SEND_RESPONSE} + + cs.process_event(SERVER, InformationalResponse) + assert cs.states == {CLIENT: MIGHT_SWITCH_PROTOCOL, SERVER: SEND_RESPONSE} + + cs.process_event(SERVER, _response_type_for_switch[switch_event], switch_event) + assert cs.states == {CLIENT: SWITCHED_PROTOCOL, SERVER: SWITCHED_PROTOCOL} + + +def test_ConnectionState_double_protocol_switch() -> None: + # CONNECT + Upgrade is legal! Very silly, but legal. So we support + # it. Because sometimes doing the silly thing is easier than not. + for server_switch in [None, _SWITCH_UPGRADE, _SWITCH_CONNECT]: + cs = ConnectionState() + cs.process_client_switch_proposal(_SWITCH_UPGRADE) + cs.process_client_switch_proposal(_SWITCH_CONNECT) + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, EndOfMessage) + assert cs.states == {CLIENT: MIGHT_SWITCH_PROTOCOL, SERVER: SEND_RESPONSE} + cs.process_event( + SERVER, _response_type_for_switch[server_switch], server_switch + ) + if server_switch is None: + assert cs.states == {CLIENT: DONE, SERVER: SEND_BODY} + else: + assert cs.states == {CLIENT: SWITCHED_PROTOCOL, SERVER: SWITCHED_PROTOCOL} + + +def test_ConnectionState_inconsistent_protocol_switch() -> None: + for client_switches, server_switch in [ + ([], _SWITCH_CONNECT), + ([], _SWITCH_UPGRADE), + ([_SWITCH_UPGRADE], _SWITCH_CONNECT), + ([_SWITCH_CONNECT], _SWITCH_UPGRADE), + ]: + cs = ConnectionState() + for client_switch in client_switches: # type: ignore[attr-defined] + cs.process_client_switch_proposal(client_switch) + cs.process_event(CLIENT, Request) + with pytest.raises(LocalProtocolError): + cs.process_event(SERVER, Response, server_switch) + + +def test_ConnectionState_keepalive_protocol_switch_interaction() -> None: + # keep_alive=False + pending_switch_proposals + cs = ConnectionState() + cs.process_client_switch_proposal(_SWITCH_UPGRADE) + cs.process_event(CLIENT, Request) + cs.process_keep_alive_disabled() + cs.process_event(CLIENT, Data) + assert cs.states == {CLIENT: SEND_BODY, SERVER: SEND_RESPONSE} + + # the protocol switch "wins" + cs.process_event(CLIENT, EndOfMessage) + assert cs.states == {CLIENT: MIGHT_SWITCH_PROTOCOL, SERVER: SEND_RESPONSE} + + # but when the server denies the request, keep_alive comes back into play + cs.process_event(SERVER, Response) + assert cs.states == {CLIENT: MUST_CLOSE, SERVER: SEND_BODY} + + +def test_ConnectionState_reuse() -> None: + cs = ConnectionState() + + with pytest.raises(LocalProtocolError): + cs.start_next_cycle() + + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, EndOfMessage) + + with pytest.raises(LocalProtocolError): + cs.start_next_cycle() + + cs.process_event(SERVER, Response) + cs.process_event(SERVER, EndOfMessage) + + cs.start_next_cycle() + assert cs.states == {CLIENT: IDLE, SERVER: IDLE} + + # No keepalive + + cs.process_event(CLIENT, Request) + cs.process_keep_alive_disabled() + cs.process_event(CLIENT, EndOfMessage) + cs.process_event(SERVER, Response) + cs.process_event(SERVER, EndOfMessage) + + with pytest.raises(LocalProtocolError): + cs.start_next_cycle() + + # One side closed + + cs = ConnectionState() + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, EndOfMessage) + cs.process_event(CLIENT, ConnectionClosed) + cs.process_event(SERVER, Response) + cs.process_event(SERVER, EndOfMessage) + + with pytest.raises(LocalProtocolError): + cs.start_next_cycle() + + # Succesful protocol switch + + cs = ConnectionState() + cs.process_client_switch_proposal(_SWITCH_UPGRADE) + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, EndOfMessage) + cs.process_event(SERVER, InformationalResponse, _SWITCH_UPGRADE) + + with pytest.raises(LocalProtocolError): + cs.start_next_cycle() + + # Failed protocol switch + + cs = ConnectionState() + cs.process_client_switch_proposal(_SWITCH_UPGRADE) + cs.process_event(CLIENT, Request) + cs.process_event(CLIENT, EndOfMessage) + cs.process_event(SERVER, Response) + cs.process_event(SERVER, EndOfMessage) + + cs.start_next_cycle() + assert cs.states == {CLIENT: IDLE, SERVER: IDLE} + + +def test_server_request_is_illegal() -> None: + # There used to be a bug in how we handled the Request special case that + # made this allowed... + cs = ConnectionState() + with pytest.raises(LocalProtocolError): + cs.process_event(SERVER, Request) diff --git a/venv/lib/python3.12/site-packages/h11/tests/test_util.py b/venv/lib/python3.12/site-packages/h11/tests/test_util.py new file mode 100644 index 0000000..79bc095 --- /dev/null +++ b/venv/lib/python3.12/site-packages/h11/tests/test_util.py @@ -0,0 +1,112 @@ +import re +import sys +import traceback +from typing import NoReturn + +import pytest + +from .._util import ( + bytesify, + LocalProtocolError, + ProtocolError, + RemoteProtocolError, + Sentinel, + validate, +) + + +def test_ProtocolError() -> None: + with pytest.raises(TypeError): + ProtocolError("abstract base class") + + +def test_LocalProtocolError() -> None: + try: + raise LocalProtocolError("foo") + except LocalProtocolError as e: + assert str(e) == "foo" + assert e.error_status_hint == 400 + + try: + raise LocalProtocolError("foo", error_status_hint=418) + except LocalProtocolError as e: + assert str(e) == "foo" + assert e.error_status_hint == 418 + + def thunk() -> NoReturn: + raise LocalProtocolError("a", error_status_hint=420) + + try: + try: + thunk() + except LocalProtocolError as exc1: + orig_traceback = "".join(traceback.format_tb(sys.exc_info()[2])) + exc1._reraise_as_remote_protocol_error() + except RemoteProtocolError as exc2: + assert type(exc2) is RemoteProtocolError + assert exc2.args == ("a",) + assert exc2.error_status_hint == 420 + new_traceback = "".join(traceback.format_tb(sys.exc_info()[2])) + assert new_traceback.endswith(orig_traceback) + + +def test_validate() -> None: + my_re = re.compile(rb"(?P[0-9]+)\.(?P[0-9]+)") + with pytest.raises(LocalProtocolError): + validate(my_re, b"0.") + + groups = validate(my_re, b"0.1") + assert groups == {"group1": b"0", "group2": b"1"} + + # successful partial matches are an error - must match whole string + with pytest.raises(LocalProtocolError): + validate(my_re, b"0.1xx") + with pytest.raises(LocalProtocolError): + validate(my_re, b"0.1\n") + + +def test_validate_formatting() -> None: + my_re = re.compile(rb"foo") + + with pytest.raises(LocalProtocolError) as excinfo: + validate(my_re, b"", "oops") + assert "oops" in str(excinfo.value) + + with pytest.raises(LocalProtocolError) as excinfo: + validate(my_re, b"", "oops {}") + assert "oops {}" in str(excinfo.value) + + with pytest.raises(LocalProtocolError) as excinfo: + validate(my_re, b"", "oops {} xx", 10) + assert "oops 10 xx" in str(excinfo.value) + + +def test_make_sentinel() -> None: + class S(Sentinel, metaclass=Sentinel): + pass + + assert repr(S) == "S" + assert S == S + assert type(S).__name__ == "S" + assert S in {S} + assert type(S) is S + + class S2(Sentinel, metaclass=Sentinel): + pass + + assert repr(S2) == "S2" + assert S != S2 + assert S not in {S2} + assert type(S) is not type(S2) + + +def test_bytesify() -> None: + assert bytesify(b"123") == b"123" + assert bytesify(bytearray(b"123")) == b"123" + assert bytesify("123") == b"123" + + with pytest.raises(UnicodeEncodeError): + bytesify("\u1234") + + with pytest.raises(TypeError): + bytesify(10) diff --git a/venv/lib/python3.12/site-packages/idna-3.7.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/idna-3.7.dist-info/LICENSE.md b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/LICENSE.md new file mode 100644 index 0000000..19b6b45 --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/LICENSE.md @@ -0,0 +1,31 @@ +BSD 3-Clause License + +Copyright (c) 2013-2024, Kim Davies and contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR +A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/idna-3.7.dist-info/METADATA b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/METADATA new file mode 100644 index 0000000..b28f6ec --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/METADATA @@ -0,0 +1,243 @@ +Metadata-Version: 2.1 +Name: idna +Version: 3.7 +Summary: Internationalized Domain Names in Applications (IDNA) +Author-email: Kim Davies +Requires-Python: >=3.5 +Description-Content-Type: text/x-rst +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: Intended Audience :: System Administrators +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.5 +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Internet :: Name Service (DNS) +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Topic :: Utilities +Project-URL: Changelog, https://github.com/kjd/idna/blob/master/HISTORY.rst +Project-URL: Issue tracker, https://github.com/kjd/idna/issues +Project-URL: Source, https://github.com/kjd/idna + +Internationalized Domain Names in Applications (IDNA) +===================================================== + +Support for the Internationalized Domain Names in +Applications (IDNA) protocol as specified in `RFC 5891 +`_. This is the latest version of +the protocol and is sometimes referred to as “IDNA 2008”. + +This library also provides support for Unicode Technical +Standard 46, `Unicode IDNA Compatibility Processing +`_. + +This acts as a suitable replacement for the “encodings.idna” +module that comes with the Python standard library, but which +only supports the older superseded IDNA specification (`RFC 3490 +`_). + +Basic functions are simply executed: + +.. code-block:: pycon + + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + + +Installation +------------ + +This package is available for installation from PyPI: + +.. code-block:: bash + + $ python3 -m pip install idna + + +Usage +----- + +For typical usage, the ``encode`` and ``decode`` functions will take a +domain name argument and perform a conversion to A-labels or U-labels +respectively. + +.. code-block:: pycon + + >>> import idna + >>> idna.encode('ドメイン.テスト') + b'xn--eckwd4c7c.xn--zckzah' + >>> print(idna.decode('xn--eckwd4c7c.xn--zckzah')) + ドメイン.テスト + +You may use the codec encoding and decoding methods using the +``idna.codec`` module: + +.. code-block:: pycon + + >>> import idna.codec + >>> print('домен.испытание'.encode('idna2008')) + b'xn--d1acufc.xn--80akhbyknj4f' + >>> print(b'xn--d1acufc.xn--80akhbyknj4f'.decode('idna2008')) + домен.испытание + +Conversions can be applied at a per-label basis using the ``ulabel`` or +``alabel`` functions if necessary: + +.. code-block:: pycon + + >>> idna.alabel('测试') + b'xn--0zwm56d' + +Compatibility Mapping (UTS #46) ++++++++++++++++++++++++++++++++ + +As described in `RFC 5895 `_, the +IDNA specification does not normalize input from different potential +ways a user may input a domain name. This functionality, known as +a “mapping”, is considered by the specification to be a local +user-interface issue distinct from IDNA conversion functionality. + +This library provides one such mapping that was developed by the +Unicode Consortium. Known as `Unicode IDNA Compatibility Processing +`_, it provides for both a regular +mapping for typical applications, as well as a transitional mapping to +help migrate from older IDNA 2003 applications. + +For example, “Königsgäßchen” is not a permissible label as *LATIN +CAPITAL LETTER K* is not allowed (nor are capital letters in general). +UTS 46 will convert this into lower case prior to applying the IDNA +conversion. + +.. code-block:: pycon + + >>> import idna + >>> idna.encode('Königsgäßchen') + ... + idna.core.InvalidCodepoint: Codepoint U+004B at position 1 of 'Königsgäßchen' not allowed + >>> idna.encode('Königsgäßchen', uts46=True) + b'xn--knigsgchen-b4a3dun' + >>> print(idna.decode('xn--knigsgchen-b4a3dun')) + königsgäßchen + +Transitional processing provides conversions to help transition from +the older 2003 standard to the current standard. For example, in the +original IDNA specification, the *LATIN SMALL LETTER SHARP S* (ß) was +converted into two *LATIN SMALL LETTER S* (ss), whereas in the current +IDNA specification this conversion is not performed. + +.. code-block:: pycon + + >>> idna.encode('Königsgäßchen', uts46=True, transitional=True) + 'xn--knigsgsschen-lcb0w' + +Implementers should use transitional processing with caution, only in +rare cases where conversion from legacy labels to current labels must be +performed (i.e. IDNA implementations that pre-date 2008). For typical +applications that just need to convert labels, transitional processing +is unlikely to be beneficial and could produce unexpected incompatible +results. + +``encodings.idna`` Compatibility +++++++++++++++++++++++++++++++++ + +Function calls from the Python built-in ``encodings.idna`` module are +mapped to their IDNA 2008 equivalents using the ``idna.compat`` module. +Simply substitute the ``import`` clause in your code to refer to the new +module name. + +Exceptions +---------- + +All errors raised during the conversion following the specification +should raise an exception derived from the ``idna.IDNAError`` base +class. + +More specific exceptions that may be generated as ``idna.IDNABidiError`` +when the error reflects an illegal combination of left-to-right and +right-to-left characters in a label; ``idna.InvalidCodepoint`` when +a specific codepoint is an illegal character in an IDN label (i.e. +INVALID); and ``idna.InvalidCodepointContext`` when the codepoint is +illegal based on its positional context (i.e. it is CONTEXTO or CONTEXTJ +but the contextual requirements are not satisfied.) + +Building and Diagnostics +------------------------ + +The IDNA and UTS 46 functionality relies upon pre-calculated lookup +tables for performance. These tables are derived from computing against +eligibility criteria in the respective standards. These tables are +computed using the command-line script ``tools/idna-data``. + +This tool will fetch relevant codepoint data from the Unicode repository +and perform the required calculations to identify eligibility. There are +three main modes: + +* ``idna-data make-libdata``. Generates ``idnadata.py`` and + ``uts46data.py``, the pre-calculated lookup tables used for IDNA and + UTS 46 conversions. Implementers who wish to track this library against + a different Unicode version may use this tool to manually generate a + different version of the ``idnadata.py`` and ``uts46data.py`` files. + +* ``idna-data make-table``. Generate a table of the IDNA disposition + (e.g. PVALID, CONTEXTJ, CONTEXTO) in the format found in Appendix + B.1 of RFC 5892 and the pre-computed tables published by `IANA + `_. + +* ``idna-data U+0061``. Prints debugging output on the various + properties associated with an individual Unicode codepoint (in this + case, U+0061), that are used to assess the IDNA and UTS 46 status of a + codepoint. This is helpful in debugging or analysis. + +The tool accepts a number of arguments, described using ``idna-data +-h``. Most notably, the ``--version`` argument allows the specification +of the version of Unicode to be used in computing the table data. For +example, ``idna-data --version 9.0.0 make-libdata`` will generate +library data against Unicode 9.0.0. + + +Additional Notes +---------------- + +* **Packages**. The latest tagged release version is published in the + `Python Package Index `_. + +* **Version support**. This library supports Python 3.5 and higher. + As this library serves as a low-level toolkit for a variety of + applications, many of which strive for broad compatibility with older + Python versions, there is no rush to remove older interpreter support. + Removing support for older versions should be well justified in that the + maintenance burden has become too high. + +* **Python 2**. Python 2 is supported by version 2.x of this library. + While active development of the version 2.x series has ended, notable + issues being corrected may be backported to 2.x. Use "idna<3" in your + requirements file if you need this library for a Python 2 application. + +* **Testing**. The library has a test suite based on each rule of the + IDNA specification, as well as tests that are provided as part of the + Unicode Technical Standard 46, `Unicode IDNA Compatibility Processing + `_. + +* **Emoji**. It is an occasional request to support emoji domains in + this library. Encoding of symbols like emoji is expressly prohibited by + the technical standard IDNA 2008 and emoji domains are broadly phased + out across the domain industry due to associated security risks. For + now, applications that need to support these non-compliant labels + may wish to consider trying the encode/decode operation in this library + first, and then falling back to using `encodings.idna`. See `the Github + project `_ for more discussion. + diff --git a/venv/lib/python3.12/site-packages/idna-3.7.dist-info/RECORD b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/RECORD new file mode 100644 index 0000000..63bb8b0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/RECORD @@ -0,0 +1,23 @@ +idna-3.7.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +idna-3.7.dist-info/LICENSE.md,sha256=pZ8LDvNjWHQQmkRhykT_enDVBpboFHZ7-vch1Mmw2w8,1541 +idna-3.7.dist-info/METADATA,sha256=OixCk-dKLZkPy-MfviOmiPvwJ1O2K_8rqCrFjC_uxy4,9888 +idna-3.7.dist-info/RECORD,, +idna-3.7.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +idna-3.7.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 +idna/__init__.py,sha256=KJQN1eQBr8iIK5SKrJ47lXvxG0BJ7Lm38W4zT0v_8lk,849 +idna/__pycache__/__init__.cpython-312.pyc,, +idna/__pycache__/codec.cpython-312.pyc,, +idna/__pycache__/compat.cpython-312.pyc,, +idna/__pycache__/core.cpython-312.pyc,, +idna/__pycache__/idnadata.cpython-312.pyc,, +idna/__pycache__/intranges.cpython-312.pyc,, +idna/__pycache__/package_data.cpython-312.pyc,, +idna/__pycache__/uts46data.cpython-312.pyc,, +idna/codec.py,sha256=PS6m-XmdST7Wj7J7ulRMakPDt5EBJyYrT3CPtjh-7t4,3426 +idna/compat.py,sha256=0_sOEUMT4CVw9doD3vyRhX80X19PwqFoUBs7gWsFME4,321 +idna/core.py,sha256=lyhpoe2vulEaB_65xhXmoKgO-xUqFDvcwxu5hpNNO4E,12663 +idna/idnadata.py,sha256=dqRwytzkjIHMBa2R1lYvHDwACenZPt8eGVu1Y8UBE-E,78320 +idna/intranges.py,sha256=YBr4fRYuWH7kTKS2tXlFjM24ZF1Pdvcir-aywniInqg,1881 +idna/package_data.py,sha256=Tkt0KnIeyIlnHddOaz9WSkkislNgokJAuE-p5GorMqo,21 +idna/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +idna/uts46data.py,sha256=1KuksWqLuccPXm2uyRVkhfiFLNIhM_H2m4azCcnOqEU,206503 diff --git a/venv/lib/python3.12/site-packages/idna-3.7.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/idna-3.7.dist-info/WHEEL b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/WHEEL new file mode 100644 index 0000000..3b5e64b --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna-3.7.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.9.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/idna/__init__.py b/venv/lib/python3.12/site-packages/idna/__init__.py new file mode 100644 index 0000000..a40eeaf --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna/__init__.py @@ -0,0 +1,44 @@ +from .package_data import __version__ +from .core import ( + IDNABidiError, + IDNAError, + InvalidCodepoint, + InvalidCodepointContext, + alabel, + check_bidi, + check_hyphen_ok, + check_initial_combiner, + check_label, + check_nfc, + decode, + encode, + ulabel, + uts46_remap, + valid_contextj, + valid_contexto, + valid_label_length, + valid_string_length, +) +from .intranges import intranges_contain + +__all__ = [ + "IDNABidiError", + "IDNAError", + "InvalidCodepoint", + "InvalidCodepointContext", + "alabel", + "check_bidi", + "check_hyphen_ok", + "check_initial_combiner", + "check_label", + "check_nfc", + "decode", + "encode", + "intranges_contain", + "ulabel", + "uts46_remap", + "valid_contextj", + "valid_contexto", + "valid_label_length", + "valid_string_length", +] diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2ebad8360985e408aa2af092f72c5e5a5aaa7a68 GIT binary patch literal 870 zcmbu7y>1jS5XbGky}ggUz3*Ho5E2CvS0pO}qCf})2}PO+S~r$&*X%my@t(YU2UqeG z^mIH6Z(xaviVhK>NL1Ljfg(sWxcGTyY|nqj_NOT7B0FwBeU!awAoRsKzlV2aTvXP0 zk5ZIki2xIfo$W~v8l(X}@u5kY5Rd>`qy=r#h7RdKmvkW{A@oQOA`(HL^kF~-FeF15 zkr9l^7$#%_Q!?G~EX%;48M$b8JFNH(ZyZP?XNcCOSPid-hzU z;)T|QHXY~I=I~T)m=x)8k@8g`RAu(BM~(|s@wb%;m}CnsO*hGTvZM=}&J1ch->!15 zXt6Z2Iv|v&1d}u=U?CLOCamLihEDCM*NF*Io>*xUa8=LidP}&j$_Edr=D=2_zbnxu z+ZA$t%`eQjUf-RhlB=xB&7_W%l@={*=6ZHO(*SEFfB%A}<9Bf7Bi=;zBgFM!9Ob6XnM@d+;zrZZN?Z}{RU-f*>vrC7wPZIu`5 z{^7l&xD*vXxay>gMXFd#se5Wl4_8~$ehfvrmi&pnWd+<%EDtQcH894X(Va_gg1t-h UH-6kjc>dj=hTglDzG+YV0!t<9o&W#< literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/codec.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..dda6bf326e1648f80194e36ab51fc49817920250 GIT binary patch literal 4965 zcmd6qO>7&-6@X{CKU|8GNQwHfDA|@|M>3I0a-=#jWGAT|*@+EVF5)>S4Qes5pi0V@Lq!f`@?vA)27m{+y6Y->)B26i8#LE#E(cFn0PUH1l z6>mcOm?F(C@+wiKC8D}DDbZ_d8|6*jeu}g(OBpOZV7aT <^1I)4sEWKbk@C3^? zX6XaVW~~Km2OnW8*t$rN*|vbKpV{tvf^EAR&^pvs4g3GmcDrs+%?fJUk`UAi3M`r$W!`~BN7GBVH_+yr!Dy9OTgF`he ziE8FN)nnD!X5EV*@wrUdAaX91d*=m0XvnOt9s;W{(f9^?jgXwn@tu>u$K^PK%kn0+ z$x@DU>P+``-K^^j2@BJfWSBG_Gr!w?RyXD|nKU&uwT}(C@4TX`$+$k(H}I>)fg7$e zHbP|(VS!?cmNc8DDaE8XK#Nam`VHO^3@tfJThP=G!oa$|zP|5Hjh;`Zw9ynjuf*Qb z=;)+o#1uNG7^4@pnX%Centow48J`)=WXifA*&RlE%_-CvB!Bu&XcEIcZXA?x*U`#X!;)cuGKrH8n+e-_3McJ&oRg-*92;2JW69B|uB5bR)M|=GQ)zWRiDh3j`pbDGS*_t= zkx`r=OPtA?nql#A-Cj0q{5J^mygg_jHlZkRr5Ue+SR&sFZgHqEzCj?n&a>>Z1GhSE z^S469LsMl`f7^y82W*o)w#nIB<6v^|FVPBG*nMEjG5FUKJ1gL+JOZKt1PvHa83;6Y z6$P>?0@rY>yREhpdW>o*O*fU~F~%)gU;LIh8wU{40JI#dQkM0Lrx0$8@-Nsa^n>jC zTKkFGZfAWlQD?!TpbCp(PN3~MK@|~ghNMcUQNmyY7Q=0nW<=(ql`? zNltq?aRKTUJ)7F8ow?OMpq5e2GhN?Av>o1KE8*e4A(fG{BMfTP1;wz;$i}vo6^PF3 zaU@PuO`ArPYL;kZl5x|LluSm`Rf?!(d(RRQ>9`(lqUg{1{L>+Lv?O+H8J5qaN*sBL z&Eaui%qLCYWqbh|wvRTSt&FlwV&KXIbXF7F9ac+pW`1^7qfr}r3;o;I-^gZ@ozRL= z1o3^j*xJ9|I#g^Ox-P7>4lhfkuF$gYj<*$%Ss3{3L}~Y)ysy+ADvVt{d8Z?EA4~a@ zcY@ueJwy4a`>jEE!yi}{?soJnA1nFVuAI7j>XX519Ul*W;oEly$Qx)ca92Hfq2vpE z^h!be-N~YF*X79#59#dPXdyd#SF%^L*E-j__FX?*?0R9@SCV}n@%gE>Kz~v0UlvOK zp28ce{{B_DpH1U**h4W?qPtP_q38!;2{Y+*k}-#3d_?!4IDld=3M9SF8;po33JlGR zVGv7X!?jBsxCXp|>`%ZO$Ud87*{!p;53Ig^_Vz^a*qas9+b!YyPeBy{f(sF-B0-4p z->5RlqM!zrZx8>XViG`7a+v-l21-xQZE z#Tl|g0X)hcO(QyrMi`A#KsljfD8@lpO;z^5QT=4{*pb90@>JJojXbu=OVF(GFA(34 zJfR2v?!w+b@L%}%-V1i-&B9x2!Dp5yA8g}M_hudqJdQ_$|1*z#q_cbF+|_f1*|m;m zuKS7|KVELy%A-K2F!^L2;aO=<*z;IItlKz32W`dCLDZpm5&i~FF5;-q#t~$QBgha( zkO7XySATlu_QAhHj04X$jqvqNG{RF3QyH&B^%y71gm^%jL_n@->0x6*VA zE`I_oP!tOM%Ls@iQW9jlW7I!w$FFOO3LVoU@a|S;Orj2jhJ~Xj7`Rbo2^d`39CW@9 z)C9fF!@vAT5Gy1HH+*)d;<(pE9(H*;p~D>x0b1{e9foWPvUz6yhj1SUW1yq^>`26K zXbO#;kIv5PF}!foX{d{%5zZuRdAE0Y;d6I)$sfGuZC&^F6umvA=GJ@u_V+JddH3?W z^+M0^J@|F>!>{6(ebNSzMTt#xxZ4t9X{t304p*E_I&>SI0%5rzG?UD124XA9HXGYw zc=TBASUQ!7CpDXu_@P$lD2t#pb$jT0&9QPGD^d&iTmo(ocp0CJIkqq4r?#z#^OkAB<-8HcmJhVyz z6`_qAT0VYd>he^DK(VrKH#bn|T<@MJc286YJXDTy{f#PksJsTPd-4YggX^K;VraNR z;ISfa*KNpNPAb5q39@VZu0Oy2?4ct31`d}|vk@X(;F9zk|F8Xd|CccRxCQ?ML3$Az literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/compat.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..05cb9a84b8e33db77e99ae80edeafbe7ec457603 GIT binary patch literal 876 zcmb7CJ8#rL5Z*mM?nQX$f=Gk{rl2r{I3$XM5D%RQ#Yx0Xk|v$cJGry4z1DgYWJG}w z9ZkBVq&*=d{s+w=y46V(ROwDSDk^4uxrh>0n%QsmThHTLf1R6a5L~yOKJ2wAAwP96 zTjm*|-d^*G1WI%n)Z9^Jz1_LUpcsJLq^V|3OJOM8e{UCe^!rO#A3`8%; zy;sm(^9~_B^x~-NWrghXbbaOinwLis?qzsA=t1s9EDgMnCs`m@vO-mNczgRR#3k)6 zYnJBzzm;TkCfhseR{Yn?olU>(tgWs-a2SW&Nx5_mWE4j^IBAeTCLnV%!6grQjP132 zE;~sULjtJ;_FM=qTq@?ViNCw8&At`akZEdG3x+y1mWDT8d~a+G&8@O^x2epK3s9Dx zEmXEFvMB8dt*x-pDI=FcS=~ZHUaGF@8V5oIh0s!zB?eO=rdrh=C7d0^@I>51UjGRB z4!W^HDIJm4h|K>WOJkGL#iR8x!R=&YqPMZFk9JQsKDxu}cfVa-F3B&gbJC|rhCcJ@ LiTSJC%NhOv(ay!f literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/core.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..abd232d9d78aa3402558581746de79704c6cee35 GIT binary patch literal 15780 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 cx}I*>*bQW1HxOYr5Rq;$7A`)b%7 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/idnadata.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe9995e239259ef68d16118af59cc65c4301a1aa GIT binary patch literal 99465 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 XrPKUVz7Kum#sB`vt8Nd0Cr|!AL_$p? literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/intranges.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0ca936b739b2259d2c3138ce37d63e5ade10949d GIT binary patch literal 2622 zcmZuyO>7fK6rTNaf*t42B7{K6gg~2xV3QaSLZL_n1qlchziLCPW#b(?OV+#2?3&=z zDQVS1(jqldkuW!NbHpXRaqO{DF9|`dwLN3CPQB1KvvxudBkj(6^M2;doA15( zEgB6Y7=33>Wj=30=x@d}MyO6~JOJVmGSE0O1VglhaRFw@60_2{l$FP20U0uph_V~> z428%5vhIwI(CNdC-QnhIR``nvEz(THp2qc00hX z4W!|MsJ81n1cbup&AY_LI<`#L!%iBTwns9Ax`Q~Y8wBTbY;j=H$&qy4vI;7wx>?<_ zu$|9N5Xz*MV`nhU+in<`lw-RjmG{8yTfS0GHkbDZ7*mp?#3i<;d!}PEb8nL1v_rGu zfdSXksW&u;iERw2gE-)aIX|r8cs#Dg@%2d-ukFsj=FD_DPh9S5|BUY9d${gCY}#Dx zP%~rNy2TH8WF_Rb~ILs ziXm~&iXqf}g6Jvi%0?qn0Ttyr>A`0*@*;r*Vi6nCYe<##J&=T}joXHse-~jGt_#3K z-~#OwVMw65ogwb2FosbFgLahPzIJpI4qAW@jRAxqVi3Fe)Fj-s?rpnp?xlfdtW$!? zJw4@F1<-O_0!Z1i!8IWBRDyXi_8~ZX;NMNY33ZvJ06X%GV(rHF_6EkFDI05b9Zo)Dr61f5-&Q8XMh7&G0J(2@;9qub( z8n&K*Oa~jsa|J)P$!TfoWO-n;3$|ofam(++t;mCE$;wY9#XmA?nSOFIJ~o5u2HME8m%Av%WKwE<_;C0+!Mu>@HoVdq8S2y*KyY+?NpD3#2O04`6Z` zuSQwa+tR|o$bn1PTcB+cVtj}XF%5yH+3cGV8YZnNLZh@*|q9@4LTi5>r-|f7+*ko=Va(_ zauK4sCr+YCZ2Xb#2bL-OF75&Wu^#i!^}*2zM#1*Q>?UMaJ2ayTlEOSd4eIIE^QP{XoxSBy*?kgO z?;Kog0wbLpeLn)~)kr&sl^XGzG|g~Qnnw3SRB*^b4!SF4n4%0SzQhi~&>0jE1FSDk zIF7~7!(q-{1;=h4$vQ^fA|KN@C^DS53-GH+f*|}WDuTSxiiFm`(7u`+6Ly!p^4Z6Q z8UnI%VuCb-T(v5PmB9%`*1|wi= f&22(Q>1++bRM}Z^SI$=ME%$Qv+4a|Kl}GwN>aLt& literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/package_data.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..339bcf7f35da6bc9af2f1beb343608da30aef9a7 GIT binary patch literal 205 zcmX@j%ge<81d8@n>7qdTF^B^Lj8MjB4j^MXLkdF_LnWgoQx&tZp1GeU<1Oy^__EZZ z;>`TK`1q9!pFygBh3IGG=celC7G)$RXQvkFyQCH;Cl;kA7VDR%CK>6MrRJ6C=VT`7 z7gUyHO*<)DTyVCdIgoYIBatBQ%ZAE?TXld ZmVn$<4084dW=2NF8+^iz+(j%vE&%IBHbejb literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc b/venv/lib/python3.12/site-packages/idna/__pycache__/uts46data.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d6d9c04faa24de77cb33d41066192bf7e2bc97c4 GIT binary patch literal 158837 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 Tuple[bytes, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return b"", 0 + + return encode(data), len(data) + + def decode(self, data: bytes, errors: str = 'strict') -> Tuple[str, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return '', 0 + + return decode(data), len(data) + +class IncrementalEncoder(codecs.BufferedIncrementalEncoder): + def _buffer_encode(self, data: str, errors: str, final: bool) -> Tuple[bytes, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return b'', 0 + + labels = _unicode_dots_re.split(data) + trailing_dot = b'' + if labels: + if not labels[-1]: + trailing_dot = b'.' + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = b'.' + + result = [] + size = 0 + for label in labels: + result.append(alabel(label)) + if size: + size += 1 + size += len(label) + + # Join with U+002E + result_bytes = b'.'.join(result) + trailing_dot + size += len(trailing_dot) + return result_bytes, size + +class IncrementalDecoder(codecs.BufferedIncrementalDecoder): + def _buffer_decode(self, data: Any, errors: str, final: bool) -> Tuple[str, int]: + if errors != 'strict': + raise IDNAError('Unsupported error handling \"{}\"'.format(errors)) + + if not data: + return ('', 0) + + if not isinstance(data, str): + data = str(data, 'ascii') + + labels = _unicode_dots_re.split(data) + trailing_dot = '' + if labels: + if not labels[-1]: + trailing_dot = '.' + del labels[-1] + elif not final: + # Keep potentially unfinished label until the next call + del labels[-1] + if labels: + trailing_dot = '.' + + result = [] + size = 0 + for label in labels: + result.append(ulabel(label)) + if size: + size += 1 + size += len(label) + + result_str = '.'.join(result) + trailing_dot + size += len(trailing_dot) + return (result_str, size) + + +class StreamWriter(Codec, codecs.StreamWriter): + pass + + +class StreamReader(Codec, codecs.StreamReader): + pass + + +def search_function(name: str) -> Optional[codecs.CodecInfo]: + if name != 'idna2008': + return None + return codecs.CodecInfo( + name=name, + encode=Codec().encode, + decode=Codec().decode, + incrementalencoder=IncrementalEncoder, + incrementaldecoder=IncrementalDecoder, + streamwriter=StreamWriter, + streamreader=StreamReader, + ) + +codecs.register(search_function) diff --git a/venv/lib/python3.12/site-packages/idna/compat.py b/venv/lib/python3.12/site-packages/idna/compat.py new file mode 100644 index 0000000..786e6bd --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna/compat.py @@ -0,0 +1,13 @@ +from .core import * +from .codec import * +from typing import Any, Union + +def ToASCII(label: str) -> bytes: + return encode(label) + +def ToUnicode(label: Union[bytes, bytearray]) -> str: + return decode(label) + +def nameprep(s: Any) -> None: + raise NotImplementedError('IDNA 2008 does not utilise nameprep protocol') + diff --git a/venv/lib/python3.12/site-packages/idna/core.py b/venv/lib/python3.12/site-packages/idna/core.py new file mode 100644 index 0000000..0dae61a --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna/core.py @@ -0,0 +1,395 @@ +from . import idnadata +import bisect +import unicodedata +import re +from typing import Union, Optional +from .intranges import intranges_contain + +_virama_combining_class = 9 +_alabel_prefix = b'xn--' +_unicode_dots_re = re.compile('[\u002e\u3002\uff0e\uff61]') + +class IDNAError(UnicodeError): + """ Base exception for all IDNA-encoding related problems """ + pass + + +class IDNABidiError(IDNAError): + """ Exception when bidirectional requirements are not satisfied """ + pass + + +class InvalidCodepoint(IDNAError): + """ Exception when a disallowed or unallocated codepoint is used """ + pass + + +class InvalidCodepointContext(IDNAError): + """ Exception when the codepoint is not valid in the context it is used """ + pass + + +def _combining_class(cp: int) -> int: + v = unicodedata.combining(chr(cp)) + if v == 0: + if not unicodedata.name(chr(cp)): + raise ValueError('Unknown character in unicodedata') + return v + +def _is_script(cp: str, script: str) -> bool: + return intranges_contain(ord(cp), idnadata.scripts[script]) + +def _punycode(s: str) -> bytes: + return s.encode('punycode') + +def _unot(s: int) -> str: + return 'U+{:04X}'.format(s) + + +def valid_label_length(label: Union[bytes, str]) -> bool: + if len(label) > 63: + return False + return True + + +def valid_string_length(label: Union[bytes, str], trailing_dot: bool) -> bool: + if len(label) > (254 if trailing_dot else 253): + return False + return True + + +def check_bidi(label: str, check_ltr: bool = False) -> bool: + # Bidi rules should only be applied if string contains RTL characters + bidi_label = False + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + if direction == '': + # String likely comes from a newer version of Unicode + raise IDNABidiError('Unknown directionality in label {} at position {}'.format(repr(label), idx)) + if direction in ['R', 'AL', 'AN']: + bidi_label = True + if not bidi_label and not check_ltr: + return True + + # Bidi rule 1 + direction = unicodedata.bidirectional(label[0]) + if direction in ['R', 'AL']: + rtl = True + elif direction == 'L': + rtl = False + else: + raise IDNABidiError('First codepoint in label {} must be directionality L, R or AL'.format(repr(label))) + + valid_ending = False + number_type = None # type: Optional[str] + for (idx, cp) in enumerate(label, 1): + direction = unicodedata.bidirectional(cp) + + if rtl: + # Bidi rule 2 + if not direction in ['R', 'AL', 'AN', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {} in a right-to-left label'.format(idx)) + # Bidi rule 3 + if direction in ['R', 'AL', 'EN', 'AN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + # Bidi rule 4 + if direction in ['AN', 'EN']: + if not number_type: + number_type = direction + else: + if number_type != direction: + raise IDNABidiError('Can not mix numeral types in a right-to-left label') + else: + # Bidi rule 5 + if not direction in ['L', 'EN', 'ES', 'CS', 'ET', 'ON', 'BN', 'NSM']: + raise IDNABidiError('Invalid direction for codepoint at position {} in a left-to-right label'.format(idx)) + # Bidi rule 6 + if direction in ['L', 'EN']: + valid_ending = True + elif direction != 'NSM': + valid_ending = False + + if not valid_ending: + raise IDNABidiError('Label ends with illegal codepoint directionality') + + return True + + +def check_initial_combiner(label: str) -> bool: + if unicodedata.category(label[0])[0] == 'M': + raise IDNAError('Label begins with an illegal combining character') + return True + + +def check_hyphen_ok(label: str) -> bool: + if label[2:4] == '--': + raise IDNAError('Label has disallowed hyphens in 3rd and 4th position') + if label[0] == '-' or label[-1] == '-': + raise IDNAError('Label must not start or end with a hyphen') + return True + + +def check_nfc(label: str) -> None: + if unicodedata.normalize('NFC', label) != label: + raise IDNAError('Label must be in Normalization Form C') + + +def valid_contextj(label: str, pos: int) -> bool: + cp_value = ord(label[pos]) + + if cp_value == 0x200c: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + + ok = False + for i in range(pos-1, -1, -1): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + elif joining_type in [ord('L'), ord('D')]: + ok = True + break + else: + break + + if not ok: + return False + + ok = False + for i in range(pos+1, len(label)): + joining_type = idnadata.joining_types.get(ord(label[i])) + if joining_type == ord('T'): + continue + elif joining_type in [ord('R'), ord('D')]: + ok = True + break + else: + break + return ok + + if cp_value == 0x200d: + + if pos > 0: + if _combining_class(ord(label[pos - 1])) == _virama_combining_class: + return True + return False + + else: + + return False + + +def valid_contexto(label: str, pos: int, exception: bool = False) -> bool: + cp_value = ord(label[pos]) + + if cp_value == 0x00b7: + if 0 < pos < len(label)-1: + if ord(label[pos - 1]) == 0x006c and ord(label[pos + 1]) == 0x006c: + return True + return False + + elif cp_value == 0x0375: + if pos < len(label)-1 and len(label) > 1: + return _is_script(label[pos + 1], 'Greek') + return False + + elif cp_value == 0x05f3 or cp_value == 0x05f4: + if pos > 0: + return _is_script(label[pos - 1], 'Hebrew') + return False + + elif cp_value == 0x30fb: + for cp in label: + if cp == '\u30fb': + continue + if _is_script(cp, 'Hiragana') or _is_script(cp, 'Katakana') or _is_script(cp, 'Han'): + return True + return False + + elif 0x660 <= cp_value <= 0x669: + for cp in label: + if 0x6f0 <= ord(cp) <= 0x06f9: + return False + return True + + elif 0x6f0 <= cp_value <= 0x6f9: + for cp in label: + if 0x660 <= ord(cp) <= 0x0669: + return False + return True + + return False + + +def check_label(label: Union[str, bytes, bytearray]) -> None: + if isinstance(label, (bytes, bytearray)): + label = label.decode('utf-8') + if len(label) == 0: + raise IDNAError('Empty Label') + + check_nfc(label) + check_hyphen_ok(label) + check_initial_combiner(label) + + for (pos, cp) in enumerate(label): + cp_value = ord(cp) + if intranges_contain(cp_value, idnadata.codepoint_classes['PVALID']): + continue + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTJ']): + if not valid_contextj(label, pos): + raise InvalidCodepointContext('Joiner {} not allowed at position {} in {}'.format( + _unot(cp_value), pos+1, repr(label))) + elif intranges_contain(cp_value, idnadata.codepoint_classes['CONTEXTO']): + if not valid_contexto(label, pos): + raise InvalidCodepointContext('Codepoint {} not allowed at position {} in {}'.format(_unot(cp_value), pos+1, repr(label))) + else: + raise InvalidCodepoint('Codepoint {} at position {} of {} not allowed'.format(_unot(cp_value), pos+1, repr(label))) + + check_bidi(label) + + +def alabel(label: str) -> bytes: + try: + label_bytes = label.encode('ascii') + ulabel(label_bytes) + if not valid_label_length(label_bytes): + raise IDNAError('Label too long') + return label_bytes + except UnicodeEncodeError: + pass + + check_label(label) + label_bytes = _alabel_prefix + _punycode(label) + + if not valid_label_length(label_bytes): + raise IDNAError('Label too long') + + return label_bytes + + +def ulabel(label: Union[str, bytes, bytearray]) -> str: + if not isinstance(label, (bytes, bytearray)): + try: + label_bytes = label.encode('ascii') + except UnicodeEncodeError: + check_label(label) + return label + else: + label_bytes = label + + label_bytes = label_bytes.lower() + if label_bytes.startswith(_alabel_prefix): + label_bytes = label_bytes[len(_alabel_prefix):] + if not label_bytes: + raise IDNAError('Malformed A-label, no Punycode eligible content found') + if label_bytes.decode('ascii')[-1] == '-': + raise IDNAError('A-label must not end with a hyphen') + else: + check_label(label_bytes) + return label_bytes.decode('ascii') + + try: + label = label_bytes.decode('punycode') + except UnicodeError: + raise IDNAError('Invalid A-label') + check_label(label) + return label + + +def uts46_remap(domain: str, std3_rules: bool = True, transitional: bool = False) -> str: + """Re-map the characters in the string according to UTS46 processing.""" + from .uts46data import uts46data + output = '' + + for pos, char in enumerate(domain): + code_point = ord(char) + try: + uts46row = uts46data[code_point if code_point < 256 else + bisect.bisect_left(uts46data, (code_point, 'Z')) - 1] + status = uts46row[1] + replacement = None # type: Optional[str] + if len(uts46row) == 3: + replacement = uts46row[2] + if (status == 'V' or + (status == 'D' and not transitional) or + (status == '3' and not std3_rules and replacement is None)): + output += char + elif replacement is not None and (status == 'M' or + (status == '3' and not std3_rules) or + (status == 'D' and transitional)): + output += replacement + elif status != 'I': + raise IndexError() + except IndexError: + raise InvalidCodepoint( + 'Codepoint {} not allowed at position {} in {}'.format( + _unot(code_point), pos + 1, repr(domain))) + + return unicodedata.normalize('NFC', output) + + +def encode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False, transitional: bool = False) -> bytes: + if not isinstance(s, str): + try: + s = str(s, 'ascii') + except UnicodeDecodeError: + raise IDNAError('should pass a unicode string to the function rather than a byte string.') + if uts46: + s = uts46_remap(s, std3_rules, transitional) + trailing_dot = False + result = [] + if strict: + labels = s.split('.') + else: + labels = _unicode_dots_re.split(s) + if not labels or labels == ['']: + raise IDNAError('Empty domain') + if labels[-1] == '': + del labels[-1] + trailing_dot = True + for label in labels: + s = alabel(label) + if s: + result.append(s) + else: + raise IDNAError('Empty label') + if trailing_dot: + result.append(b'') + s = b'.'.join(result) + if not valid_string_length(s, trailing_dot): + raise IDNAError('Domain too long') + return s + + +def decode(s: Union[str, bytes, bytearray], strict: bool = False, uts46: bool = False, std3_rules: bool = False) -> str: + try: + if not isinstance(s, str): + s = str(s, 'ascii') + except UnicodeDecodeError: + raise IDNAError('Invalid ASCII in A-label') + if uts46: + s = uts46_remap(s, std3_rules, False) + trailing_dot = False + result = [] + if not strict: + labels = _unicode_dots_re.split(s) + else: + labels = s.split('.') + if not labels or labels == ['']: + raise IDNAError('Empty domain') + if not labels[-1]: + del labels[-1] + trailing_dot = True + for label in labels: + s = ulabel(label) + if s: + result.append(s) + else: + raise IDNAError('Empty label') + if trailing_dot: + result.append('') + return '.'.join(result) diff --git a/venv/lib/python3.12/site-packages/idna/idnadata.py b/venv/lib/python3.12/site-packages/idna/idnadata.py new file mode 100644 index 0000000..c61dcf9 --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna/idnadata.py @@ -0,0 +1,4245 @@ +# This file is automatically generated by tools/idna-data + +__version__ = '15.1.0' +scripts = { + 'Greek': ( + 0x37000000374, + 0x37500000378, + 0x37a0000037e, + 0x37f00000380, + 0x38400000385, + 0x38600000387, + 0x3880000038b, + 0x38c0000038d, + 0x38e000003a2, + 0x3a3000003e2, + 0x3f000000400, + 0x1d2600001d2b, + 0x1d5d00001d62, + 0x1d6600001d6b, + 0x1dbf00001dc0, + 0x1f0000001f16, + 0x1f1800001f1e, + 0x1f2000001f46, + 0x1f4800001f4e, + 0x1f5000001f58, + 0x1f5900001f5a, + 0x1f5b00001f5c, + 0x1f5d00001f5e, + 0x1f5f00001f7e, + 0x1f8000001fb5, + 0x1fb600001fc5, + 0x1fc600001fd4, + 0x1fd600001fdc, + 0x1fdd00001ff0, + 0x1ff200001ff5, + 0x1ff600001fff, + 0x212600002127, + 0xab650000ab66, + 0x101400001018f, + 0x101a0000101a1, + 0x1d2000001d246, + ), + 'Han': ( + 0x2e8000002e9a, + 0x2e9b00002ef4, + 0x2f0000002fd6, + 0x300500003006, + 0x300700003008, + 0x30210000302a, + 0x30380000303c, + 0x340000004dc0, + 0x4e000000a000, + 0xf9000000fa6e, + 0xfa700000fada, + 0x16fe200016fe4, + 0x16ff000016ff2, + 0x200000002a6e0, + 0x2a7000002b73a, + 0x2b7400002b81e, + 0x2b8200002cea2, + 0x2ceb00002ebe1, + 0x2ebf00002ee5e, + 0x2f8000002fa1e, + 0x300000003134b, + 0x31350000323b0, + ), + 'Hebrew': ( + 0x591000005c8, + 0x5d0000005eb, + 0x5ef000005f5, + 0xfb1d0000fb37, + 0xfb380000fb3d, + 0xfb3e0000fb3f, + 0xfb400000fb42, + 0xfb430000fb45, + 0xfb460000fb50, + ), + 'Hiragana': ( + 0x304100003097, + 0x309d000030a0, + 0x1b0010001b120, + 0x1b1320001b133, + 0x1b1500001b153, + 0x1f2000001f201, + ), + 'Katakana': ( + 0x30a1000030fb, + 0x30fd00003100, + 0x31f000003200, + 0x32d0000032ff, + 0x330000003358, + 0xff660000ff70, + 0xff710000ff9e, + 0x1aff00001aff4, + 0x1aff50001affc, + 0x1affd0001afff, + 0x1b0000001b001, + 0x1b1200001b123, + 0x1b1550001b156, + 0x1b1640001b168, + ), +} +joining_types = { + 0xad: 84, + 0x300: 84, + 0x301: 84, + 0x302: 84, + 0x303: 84, + 0x304: 84, + 0x305: 84, + 0x306: 84, + 0x307: 84, + 0x308: 84, + 0x309: 84, + 0x30a: 84, + 0x30b: 84, + 0x30c: 84, + 0x30d: 84, + 0x30e: 84, + 0x30f: 84, + 0x310: 84, + 0x311: 84, + 0x312: 84, + 0x313: 84, + 0x314: 84, + 0x315: 84, + 0x316: 84, + 0x317: 84, + 0x318: 84, + 0x319: 84, + 0x31a: 84, + 0x31b: 84, + 0x31c: 84, + 0x31d: 84, + 0x31e: 84, + 0x31f: 84, + 0x320: 84, + 0x321: 84, + 0x322: 84, + 0x323: 84, + 0x324: 84, + 0x325: 84, + 0x326: 84, + 0x327: 84, + 0x328: 84, + 0x329: 84, + 0x32a: 84, + 0x32b: 84, + 0x32c: 84, + 0x32d: 84, + 0x32e: 84, + 0x32f: 84, + 0x330: 84, + 0x331: 84, + 0x332: 84, + 0x333: 84, + 0x334: 84, + 0x335: 84, + 0x336: 84, + 0x337: 84, + 0x338: 84, + 0x339: 84, + 0x33a: 84, + 0x33b: 84, + 0x33c: 84, + 0x33d: 84, + 0x33e: 84, + 0x33f: 84, + 0x340: 84, + 0x341: 84, + 0x342: 84, + 0x343: 84, + 0x344: 84, + 0x345: 84, + 0x346: 84, + 0x347: 84, + 0x348: 84, + 0x349: 84, + 0x34a: 84, + 0x34b: 84, + 0x34c: 84, + 0x34d: 84, + 0x34e: 84, + 0x34f: 84, + 0x350: 84, + 0x351: 84, + 0x352: 84, + 0x353: 84, + 0x354: 84, + 0x355: 84, + 0x356: 84, + 0x357: 84, + 0x358: 84, + 0x359: 84, + 0x35a: 84, + 0x35b: 84, + 0x35c: 84, + 0x35d: 84, + 0x35e: 84, + 0x35f: 84, + 0x360: 84, + 0x361: 84, + 0x362: 84, + 0x363: 84, + 0x364: 84, + 0x365: 84, + 0x366: 84, + 0x367: 84, + 0x368: 84, + 0x369: 84, + 0x36a: 84, + 0x36b: 84, + 0x36c: 84, + 0x36d: 84, + 0x36e: 84, + 0x36f: 84, + 0x483: 84, + 0x484: 84, + 0x485: 84, + 0x486: 84, + 0x487: 84, + 0x488: 84, + 0x489: 84, + 0x591: 84, + 0x592: 84, + 0x593: 84, + 0x594: 84, + 0x595: 84, + 0x596: 84, + 0x597: 84, + 0x598: 84, + 0x599: 84, + 0x59a: 84, + 0x59b: 84, + 0x59c: 84, + 0x59d: 84, + 0x59e: 84, + 0x59f: 84, + 0x5a0: 84, + 0x5a1: 84, + 0x5a2: 84, + 0x5a3: 84, + 0x5a4: 84, + 0x5a5: 84, + 0x5a6: 84, + 0x5a7: 84, + 0x5a8: 84, + 0x5a9: 84, + 0x5aa: 84, + 0x5ab: 84, + 0x5ac: 84, + 0x5ad: 84, + 0x5ae: 84, + 0x5af: 84, + 0x5b0: 84, + 0x5b1: 84, + 0x5b2: 84, + 0x5b3: 84, + 0x5b4: 84, + 0x5b5: 84, + 0x5b6: 84, + 0x5b7: 84, + 0x5b8: 84, + 0x5b9: 84, + 0x5ba: 84, + 0x5bb: 84, + 0x5bc: 84, + 0x5bd: 84, + 0x5bf: 84, + 0x5c1: 84, + 0x5c2: 84, + 0x5c4: 84, + 0x5c5: 84, + 0x5c7: 84, + 0x610: 84, + 0x611: 84, + 0x612: 84, + 0x613: 84, + 0x614: 84, + 0x615: 84, + 0x616: 84, + 0x617: 84, + 0x618: 84, + 0x619: 84, + 0x61a: 84, + 0x61c: 84, + 0x620: 68, + 0x622: 82, + 0x623: 82, + 0x624: 82, + 0x625: 82, + 0x626: 68, + 0x627: 82, + 0x628: 68, + 0x629: 82, + 0x62a: 68, + 0x62b: 68, + 0x62c: 68, + 0x62d: 68, + 0x62e: 68, + 0x62f: 82, + 0x630: 82, + 0x631: 82, + 0x632: 82, + 0x633: 68, + 0x634: 68, + 0x635: 68, + 0x636: 68, + 0x637: 68, + 0x638: 68, + 0x639: 68, + 0x63a: 68, + 0x63b: 68, + 0x63c: 68, + 0x63d: 68, + 0x63e: 68, + 0x63f: 68, + 0x640: 67, + 0x641: 68, + 0x642: 68, + 0x643: 68, + 0x644: 68, + 0x645: 68, + 0x646: 68, + 0x647: 68, + 0x648: 82, + 0x649: 68, + 0x64a: 68, + 0x64b: 84, + 0x64c: 84, + 0x64d: 84, + 0x64e: 84, + 0x64f: 84, + 0x650: 84, + 0x651: 84, + 0x652: 84, + 0x653: 84, + 0x654: 84, + 0x655: 84, + 0x656: 84, + 0x657: 84, + 0x658: 84, + 0x659: 84, + 0x65a: 84, + 0x65b: 84, + 0x65c: 84, + 0x65d: 84, + 0x65e: 84, + 0x65f: 84, + 0x66e: 68, + 0x66f: 68, + 0x670: 84, + 0x671: 82, + 0x672: 82, + 0x673: 82, + 0x675: 82, + 0x676: 82, + 0x677: 82, + 0x678: 68, + 0x679: 68, + 0x67a: 68, + 0x67b: 68, + 0x67c: 68, + 0x67d: 68, + 0x67e: 68, + 0x67f: 68, + 0x680: 68, + 0x681: 68, + 0x682: 68, + 0x683: 68, + 0x684: 68, + 0x685: 68, + 0x686: 68, + 0x687: 68, + 0x688: 82, + 0x689: 82, + 0x68a: 82, + 0x68b: 82, + 0x68c: 82, + 0x68d: 82, + 0x68e: 82, + 0x68f: 82, + 0x690: 82, + 0x691: 82, + 0x692: 82, + 0x693: 82, + 0x694: 82, + 0x695: 82, + 0x696: 82, + 0x697: 82, + 0x698: 82, + 0x699: 82, + 0x69a: 68, + 0x69b: 68, + 0x69c: 68, + 0x69d: 68, + 0x69e: 68, + 0x69f: 68, + 0x6a0: 68, + 0x6a1: 68, + 0x6a2: 68, + 0x6a3: 68, + 0x6a4: 68, + 0x6a5: 68, + 0x6a6: 68, + 0x6a7: 68, + 0x6a8: 68, + 0x6a9: 68, + 0x6aa: 68, + 0x6ab: 68, + 0x6ac: 68, + 0x6ad: 68, + 0x6ae: 68, + 0x6af: 68, + 0x6b0: 68, + 0x6b1: 68, + 0x6b2: 68, + 0x6b3: 68, + 0x6b4: 68, + 0x6b5: 68, + 0x6b6: 68, + 0x6b7: 68, + 0x6b8: 68, + 0x6b9: 68, + 0x6ba: 68, + 0x6bb: 68, + 0x6bc: 68, + 0x6bd: 68, + 0x6be: 68, + 0x6bf: 68, + 0x6c0: 82, + 0x6c1: 68, + 0x6c2: 68, + 0x6c3: 82, + 0x6c4: 82, + 0x6c5: 82, + 0x6c6: 82, + 0x6c7: 82, + 0x6c8: 82, + 0x6c9: 82, + 0x6ca: 82, + 0x6cb: 82, + 0x6cc: 68, + 0x6cd: 82, + 0x6ce: 68, + 0x6cf: 82, + 0x6d0: 68, + 0x6d1: 68, + 0x6d2: 82, + 0x6d3: 82, + 0x6d5: 82, + 0x6d6: 84, + 0x6d7: 84, + 0x6d8: 84, + 0x6d9: 84, + 0x6da: 84, + 0x6db: 84, + 0x6dc: 84, + 0x6df: 84, + 0x6e0: 84, + 0x6e1: 84, + 0x6e2: 84, + 0x6e3: 84, + 0x6e4: 84, + 0x6e7: 84, + 0x6e8: 84, + 0x6ea: 84, + 0x6eb: 84, + 0x6ec: 84, + 0x6ed: 84, + 0x6ee: 82, + 0x6ef: 82, + 0x6fa: 68, + 0x6fb: 68, + 0x6fc: 68, + 0x6ff: 68, + 0x70f: 84, + 0x710: 82, + 0x711: 84, + 0x712: 68, + 0x713: 68, + 0x714: 68, + 0x715: 82, + 0x716: 82, + 0x717: 82, + 0x718: 82, + 0x719: 82, + 0x71a: 68, + 0x71b: 68, + 0x71c: 68, + 0x71d: 68, + 0x71e: 82, + 0x71f: 68, + 0x720: 68, + 0x721: 68, + 0x722: 68, + 0x723: 68, + 0x724: 68, + 0x725: 68, + 0x726: 68, + 0x727: 68, + 0x728: 82, + 0x729: 68, + 0x72a: 82, + 0x72b: 68, + 0x72c: 82, + 0x72d: 68, + 0x72e: 68, + 0x72f: 82, + 0x730: 84, + 0x731: 84, + 0x732: 84, + 0x733: 84, + 0x734: 84, + 0x735: 84, + 0x736: 84, + 0x737: 84, + 0x738: 84, + 0x739: 84, + 0x73a: 84, + 0x73b: 84, + 0x73c: 84, + 0x73d: 84, + 0x73e: 84, + 0x73f: 84, + 0x740: 84, + 0x741: 84, + 0x742: 84, + 0x743: 84, + 0x744: 84, + 0x745: 84, + 0x746: 84, + 0x747: 84, + 0x748: 84, + 0x749: 84, + 0x74a: 84, + 0x74d: 82, + 0x74e: 68, + 0x74f: 68, + 0x750: 68, + 0x751: 68, + 0x752: 68, + 0x753: 68, + 0x754: 68, + 0x755: 68, + 0x756: 68, + 0x757: 68, + 0x758: 68, + 0x759: 82, + 0x75a: 82, + 0x75b: 82, + 0x75c: 68, + 0x75d: 68, + 0x75e: 68, + 0x75f: 68, + 0x760: 68, + 0x761: 68, + 0x762: 68, + 0x763: 68, + 0x764: 68, + 0x765: 68, + 0x766: 68, + 0x767: 68, + 0x768: 68, + 0x769: 68, + 0x76a: 68, + 0x76b: 82, + 0x76c: 82, + 0x76d: 68, + 0x76e: 68, + 0x76f: 68, + 0x770: 68, + 0x771: 82, + 0x772: 68, + 0x773: 82, + 0x774: 82, + 0x775: 68, + 0x776: 68, + 0x777: 68, + 0x778: 82, + 0x779: 82, + 0x77a: 68, + 0x77b: 68, + 0x77c: 68, + 0x77d: 68, + 0x77e: 68, + 0x77f: 68, + 0x7a6: 84, + 0x7a7: 84, + 0x7a8: 84, + 0x7a9: 84, + 0x7aa: 84, + 0x7ab: 84, + 0x7ac: 84, + 0x7ad: 84, + 0x7ae: 84, + 0x7af: 84, + 0x7b0: 84, + 0x7ca: 68, + 0x7cb: 68, + 0x7cc: 68, + 0x7cd: 68, + 0x7ce: 68, + 0x7cf: 68, + 0x7d0: 68, + 0x7d1: 68, + 0x7d2: 68, + 0x7d3: 68, + 0x7d4: 68, + 0x7d5: 68, + 0x7d6: 68, + 0x7d7: 68, + 0x7d8: 68, + 0x7d9: 68, + 0x7da: 68, + 0x7db: 68, + 0x7dc: 68, + 0x7dd: 68, + 0x7de: 68, + 0x7df: 68, + 0x7e0: 68, + 0x7e1: 68, + 0x7e2: 68, + 0x7e3: 68, + 0x7e4: 68, + 0x7e5: 68, + 0x7e6: 68, + 0x7e7: 68, + 0x7e8: 68, + 0x7e9: 68, + 0x7ea: 68, + 0x7eb: 84, + 0x7ec: 84, + 0x7ed: 84, + 0x7ee: 84, + 0x7ef: 84, + 0x7f0: 84, + 0x7f1: 84, + 0x7f2: 84, + 0x7f3: 84, + 0x7fa: 67, + 0x7fd: 84, + 0x816: 84, + 0x817: 84, + 0x818: 84, + 0x819: 84, + 0x81b: 84, + 0x81c: 84, + 0x81d: 84, + 0x81e: 84, + 0x81f: 84, + 0x820: 84, + 0x821: 84, + 0x822: 84, + 0x823: 84, + 0x825: 84, + 0x826: 84, + 0x827: 84, + 0x829: 84, + 0x82a: 84, + 0x82b: 84, + 0x82c: 84, + 0x82d: 84, + 0x840: 82, + 0x841: 68, + 0x842: 68, + 0x843: 68, + 0x844: 68, + 0x845: 68, + 0x846: 82, + 0x847: 82, + 0x848: 68, + 0x849: 82, + 0x84a: 68, + 0x84b: 68, + 0x84c: 68, + 0x84d: 68, + 0x84e: 68, + 0x84f: 68, + 0x850: 68, + 0x851: 68, + 0x852: 68, + 0x853: 68, + 0x854: 82, + 0x855: 68, + 0x856: 82, + 0x857: 82, + 0x858: 82, + 0x859: 84, + 0x85a: 84, + 0x85b: 84, + 0x860: 68, + 0x862: 68, + 0x863: 68, + 0x864: 68, + 0x865: 68, + 0x867: 82, + 0x868: 68, + 0x869: 82, + 0x86a: 82, + 0x870: 82, + 0x871: 82, + 0x872: 82, + 0x873: 82, + 0x874: 82, + 0x875: 82, + 0x876: 82, + 0x877: 82, + 0x878: 82, + 0x879: 82, + 0x87a: 82, + 0x87b: 82, + 0x87c: 82, + 0x87d: 82, + 0x87e: 82, + 0x87f: 82, + 0x880: 82, + 0x881: 82, + 0x882: 82, + 0x883: 67, + 0x884: 67, + 0x885: 67, + 0x886: 68, + 0x889: 68, + 0x88a: 68, + 0x88b: 68, + 0x88c: 68, + 0x88d: 68, + 0x88e: 82, + 0x898: 84, + 0x899: 84, + 0x89a: 84, + 0x89b: 84, + 0x89c: 84, + 0x89d: 84, + 0x89e: 84, + 0x89f: 84, + 0x8a0: 68, + 0x8a1: 68, + 0x8a2: 68, + 0x8a3: 68, + 0x8a4: 68, + 0x8a5: 68, + 0x8a6: 68, + 0x8a7: 68, + 0x8a8: 68, + 0x8a9: 68, + 0x8aa: 82, + 0x8ab: 82, + 0x8ac: 82, + 0x8ae: 82, + 0x8af: 68, + 0x8b0: 68, + 0x8b1: 82, + 0x8b2: 82, + 0x8b3: 68, + 0x8b4: 68, + 0x8b5: 68, + 0x8b6: 68, + 0x8b7: 68, + 0x8b8: 68, + 0x8b9: 82, + 0x8ba: 68, + 0x8bb: 68, + 0x8bc: 68, + 0x8bd: 68, + 0x8be: 68, + 0x8bf: 68, + 0x8c0: 68, + 0x8c1: 68, + 0x8c2: 68, + 0x8c3: 68, + 0x8c4: 68, + 0x8c5: 68, + 0x8c6: 68, + 0x8c7: 68, + 0x8c8: 68, + 0x8ca: 84, + 0x8cb: 84, + 0x8cc: 84, + 0x8cd: 84, + 0x8ce: 84, + 0x8cf: 84, + 0x8d0: 84, + 0x8d1: 84, + 0x8d2: 84, + 0x8d3: 84, + 0x8d4: 84, + 0x8d5: 84, + 0x8d6: 84, + 0x8d7: 84, + 0x8d8: 84, + 0x8d9: 84, + 0x8da: 84, + 0x8db: 84, + 0x8dc: 84, + 0x8dd: 84, + 0x8de: 84, + 0x8df: 84, + 0x8e0: 84, + 0x8e1: 84, + 0x8e3: 84, + 0x8e4: 84, + 0x8e5: 84, + 0x8e6: 84, + 0x8e7: 84, + 0x8e8: 84, + 0x8e9: 84, + 0x8ea: 84, + 0x8eb: 84, + 0x8ec: 84, + 0x8ed: 84, + 0x8ee: 84, + 0x8ef: 84, + 0x8f0: 84, + 0x8f1: 84, + 0x8f2: 84, + 0x8f3: 84, + 0x8f4: 84, + 0x8f5: 84, + 0x8f6: 84, + 0x8f7: 84, + 0x8f8: 84, + 0x8f9: 84, + 0x8fa: 84, + 0x8fb: 84, + 0x8fc: 84, + 0x8fd: 84, + 0x8fe: 84, + 0x8ff: 84, + 0x900: 84, + 0x901: 84, + 0x902: 84, + 0x93a: 84, + 0x93c: 84, + 0x941: 84, + 0x942: 84, + 0x943: 84, + 0x944: 84, + 0x945: 84, + 0x946: 84, + 0x947: 84, + 0x948: 84, + 0x94d: 84, + 0x951: 84, + 0x952: 84, + 0x953: 84, + 0x954: 84, + 0x955: 84, + 0x956: 84, + 0x957: 84, + 0x962: 84, + 0x963: 84, + 0x981: 84, + 0x9bc: 84, + 0x9c1: 84, + 0x9c2: 84, + 0x9c3: 84, + 0x9c4: 84, + 0x9cd: 84, + 0x9e2: 84, + 0x9e3: 84, + 0x9fe: 84, + 0xa01: 84, + 0xa02: 84, + 0xa3c: 84, + 0xa41: 84, + 0xa42: 84, + 0xa47: 84, + 0xa48: 84, + 0xa4b: 84, + 0xa4c: 84, + 0xa4d: 84, + 0xa51: 84, + 0xa70: 84, + 0xa71: 84, + 0xa75: 84, + 0xa81: 84, + 0xa82: 84, + 0xabc: 84, + 0xac1: 84, + 0xac2: 84, + 0xac3: 84, + 0xac4: 84, + 0xac5: 84, + 0xac7: 84, + 0xac8: 84, + 0xacd: 84, + 0xae2: 84, + 0xae3: 84, + 0xafa: 84, + 0xafb: 84, + 0xafc: 84, + 0xafd: 84, + 0xafe: 84, + 0xaff: 84, + 0xb01: 84, + 0xb3c: 84, + 0xb3f: 84, + 0xb41: 84, + 0xb42: 84, + 0xb43: 84, + 0xb44: 84, + 0xb4d: 84, + 0xb55: 84, + 0xb56: 84, + 0xb62: 84, + 0xb63: 84, + 0xb82: 84, + 0xbc0: 84, + 0xbcd: 84, + 0xc00: 84, + 0xc04: 84, + 0xc3c: 84, + 0xc3e: 84, + 0xc3f: 84, + 0xc40: 84, + 0xc46: 84, + 0xc47: 84, + 0xc48: 84, + 0xc4a: 84, + 0xc4b: 84, + 0xc4c: 84, + 0xc4d: 84, + 0xc55: 84, + 0xc56: 84, + 0xc62: 84, + 0xc63: 84, + 0xc81: 84, + 0xcbc: 84, + 0xcbf: 84, + 0xcc6: 84, + 0xccc: 84, + 0xccd: 84, + 0xce2: 84, + 0xce3: 84, + 0xd00: 84, + 0xd01: 84, + 0xd3b: 84, + 0xd3c: 84, + 0xd41: 84, + 0xd42: 84, + 0xd43: 84, + 0xd44: 84, + 0xd4d: 84, + 0xd62: 84, + 0xd63: 84, + 0xd81: 84, + 0xdca: 84, + 0xdd2: 84, + 0xdd3: 84, + 0xdd4: 84, + 0xdd6: 84, + 0xe31: 84, + 0xe34: 84, + 0xe35: 84, + 0xe36: 84, + 0xe37: 84, + 0xe38: 84, + 0xe39: 84, + 0xe3a: 84, + 0xe47: 84, + 0xe48: 84, + 0xe49: 84, + 0xe4a: 84, + 0xe4b: 84, + 0xe4c: 84, + 0xe4d: 84, + 0xe4e: 84, + 0xeb1: 84, + 0xeb4: 84, + 0xeb5: 84, + 0xeb6: 84, + 0xeb7: 84, + 0xeb8: 84, + 0xeb9: 84, + 0xeba: 84, + 0xebb: 84, + 0xebc: 84, + 0xec8: 84, + 0xec9: 84, + 0xeca: 84, + 0xecb: 84, + 0xecc: 84, + 0xecd: 84, + 0xece: 84, + 0xf18: 84, + 0xf19: 84, + 0xf35: 84, + 0xf37: 84, + 0xf39: 84, + 0xf71: 84, + 0xf72: 84, + 0xf73: 84, + 0xf74: 84, + 0xf75: 84, + 0xf76: 84, + 0xf77: 84, + 0xf78: 84, + 0xf79: 84, + 0xf7a: 84, + 0xf7b: 84, + 0xf7c: 84, + 0xf7d: 84, + 0xf7e: 84, + 0xf80: 84, + 0xf81: 84, + 0xf82: 84, + 0xf83: 84, + 0xf84: 84, + 0xf86: 84, + 0xf87: 84, + 0xf8d: 84, + 0xf8e: 84, + 0xf8f: 84, + 0xf90: 84, + 0xf91: 84, + 0xf92: 84, + 0xf93: 84, + 0xf94: 84, + 0xf95: 84, + 0xf96: 84, + 0xf97: 84, + 0xf99: 84, + 0xf9a: 84, + 0xf9b: 84, + 0xf9c: 84, + 0xf9d: 84, + 0xf9e: 84, + 0xf9f: 84, + 0xfa0: 84, + 0xfa1: 84, + 0xfa2: 84, + 0xfa3: 84, + 0xfa4: 84, + 0xfa5: 84, + 0xfa6: 84, + 0xfa7: 84, + 0xfa8: 84, + 0xfa9: 84, + 0xfaa: 84, + 0xfab: 84, + 0xfac: 84, + 0xfad: 84, + 0xfae: 84, + 0xfaf: 84, + 0xfb0: 84, + 0xfb1: 84, + 0xfb2: 84, + 0xfb3: 84, + 0xfb4: 84, + 0xfb5: 84, + 0xfb6: 84, + 0xfb7: 84, + 0xfb8: 84, + 0xfb9: 84, + 0xfba: 84, + 0xfbb: 84, + 0xfbc: 84, + 0xfc6: 84, + 0x102d: 84, + 0x102e: 84, + 0x102f: 84, + 0x1030: 84, + 0x1032: 84, + 0x1033: 84, + 0x1034: 84, + 0x1035: 84, + 0x1036: 84, + 0x1037: 84, + 0x1039: 84, + 0x103a: 84, + 0x103d: 84, + 0x103e: 84, + 0x1058: 84, + 0x1059: 84, + 0x105e: 84, + 0x105f: 84, + 0x1060: 84, + 0x1071: 84, + 0x1072: 84, + 0x1073: 84, + 0x1074: 84, + 0x1082: 84, + 0x1085: 84, + 0x1086: 84, + 0x108d: 84, + 0x109d: 84, + 0x135d: 84, + 0x135e: 84, + 0x135f: 84, + 0x1712: 84, + 0x1713: 84, + 0x1714: 84, + 0x1732: 84, + 0x1733: 84, + 0x1752: 84, + 0x1753: 84, + 0x1772: 84, + 0x1773: 84, + 0x17b4: 84, + 0x17b5: 84, + 0x17b7: 84, + 0x17b8: 84, + 0x17b9: 84, + 0x17ba: 84, + 0x17bb: 84, + 0x17bc: 84, + 0x17bd: 84, + 0x17c6: 84, + 0x17c9: 84, + 0x17ca: 84, + 0x17cb: 84, + 0x17cc: 84, + 0x17cd: 84, + 0x17ce: 84, + 0x17cf: 84, + 0x17d0: 84, + 0x17d1: 84, + 0x17d2: 84, + 0x17d3: 84, + 0x17dd: 84, + 0x1807: 68, + 0x180a: 67, + 0x180b: 84, + 0x180c: 84, + 0x180d: 84, + 0x180f: 84, + 0x1820: 68, + 0x1821: 68, + 0x1822: 68, + 0x1823: 68, + 0x1824: 68, + 0x1825: 68, + 0x1826: 68, + 0x1827: 68, + 0x1828: 68, + 0x1829: 68, + 0x182a: 68, + 0x182b: 68, + 0x182c: 68, + 0x182d: 68, + 0x182e: 68, + 0x182f: 68, + 0x1830: 68, + 0x1831: 68, + 0x1832: 68, + 0x1833: 68, + 0x1834: 68, + 0x1835: 68, + 0x1836: 68, + 0x1837: 68, + 0x1838: 68, + 0x1839: 68, + 0x183a: 68, + 0x183b: 68, + 0x183c: 68, + 0x183d: 68, + 0x183e: 68, + 0x183f: 68, + 0x1840: 68, + 0x1841: 68, + 0x1842: 68, + 0x1843: 68, + 0x1844: 68, + 0x1845: 68, + 0x1846: 68, + 0x1847: 68, + 0x1848: 68, + 0x1849: 68, + 0x184a: 68, + 0x184b: 68, + 0x184c: 68, + 0x184d: 68, + 0x184e: 68, + 0x184f: 68, + 0x1850: 68, + 0x1851: 68, + 0x1852: 68, + 0x1853: 68, + 0x1854: 68, + 0x1855: 68, + 0x1856: 68, + 0x1857: 68, + 0x1858: 68, + 0x1859: 68, + 0x185a: 68, + 0x185b: 68, + 0x185c: 68, + 0x185d: 68, + 0x185e: 68, + 0x185f: 68, + 0x1860: 68, + 0x1861: 68, + 0x1862: 68, + 0x1863: 68, + 0x1864: 68, + 0x1865: 68, + 0x1866: 68, + 0x1867: 68, + 0x1868: 68, + 0x1869: 68, + 0x186a: 68, + 0x186b: 68, + 0x186c: 68, + 0x186d: 68, + 0x186e: 68, + 0x186f: 68, + 0x1870: 68, + 0x1871: 68, + 0x1872: 68, + 0x1873: 68, + 0x1874: 68, + 0x1875: 68, + 0x1876: 68, + 0x1877: 68, + 0x1878: 68, + 0x1885: 84, + 0x1886: 84, + 0x1887: 68, + 0x1888: 68, + 0x1889: 68, + 0x188a: 68, + 0x188b: 68, + 0x188c: 68, + 0x188d: 68, + 0x188e: 68, + 0x188f: 68, + 0x1890: 68, + 0x1891: 68, + 0x1892: 68, + 0x1893: 68, + 0x1894: 68, + 0x1895: 68, + 0x1896: 68, + 0x1897: 68, + 0x1898: 68, + 0x1899: 68, + 0x189a: 68, + 0x189b: 68, + 0x189c: 68, + 0x189d: 68, + 0x189e: 68, + 0x189f: 68, + 0x18a0: 68, + 0x18a1: 68, + 0x18a2: 68, + 0x18a3: 68, + 0x18a4: 68, + 0x18a5: 68, + 0x18a6: 68, + 0x18a7: 68, + 0x18a8: 68, + 0x18a9: 84, + 0x18aa: 68, + 0x1920: 84, + 0x1921: 84, + 0x1922: 84, + 0x1927: 84, + 0x1928: 84, + 0x1932: 84, + 0x1939: 84, + 0x193a: 84, + 0x193b: 84, + 0x1a17: 84, + 0x1a18: 84, + 0x1a1b: 84, + 0x1a56: 84, + 0x1a58: 84, + 0x1a59: 84, + 0x1a5a: 84, + 0x1a5b: 84, + 0x1a5c: 84, + 0x1a5d: 84, + 0x1a5e: 84, + 0x1a60: 84, + 0x1a62: 84, + 0x1a65: 84, + 0x1a66: 84, + 0x1a67: 84, + 0x1a68: 84, + 0x1a69: 84, + 0x1a6a: 84, + 0x1a6b: 84, + 0x1a6c: 84, + 0x1a73: 84, + 0x1a74: 84, + 0x1a75: 84, + 0x1a76: 84, + 0x1a77: 84, + 0x1a78: 84, + 0x1a79: 84, + 0x1a7a: 84, + 0x1a7b: 84, + 0x1a7c: 84, + 0x1a7f: 84, + 0x1ab0: 84, + 0x1ab1: 84, + 0x1ab2: 84, + 0x1ab3: 84, + 0x1ab4: 84, + 0x1ab5: 84, + 0x1ab6: 84, + 0x1ab7: 84, + 0x1ab8: 84, + 0x1ab9: 84, + 0x1aba: 84, + 0x1abb: 84, + 0x1abc: 84, + 0x1abd: 84, + 0x1abe: 84, + 0x1abf: 84, + 0x1ac0: 84, + 0x1ac1: 84, + 0x1ac2: 84, + 0x1ac3: 84, + 0x1ac4: 84, + 0x1ac5: 84, + 0x1ac6: 84, + 0x1ac7: 84, + 0x1ac8: 84, + 0x1ac9: 84, + 0x1aca: 84, + 0x1acb: 84, + 0x1acc: 84, + 0x1acd: 84, + 0x1ace: 84, + 0x1b00: 84, + 0x1b01: 84, + 0x1b02: 84, + 0x1b03: 84, + 0x1b34: 84, + 0x1b36: 84, + 0x1b37: 84, + 0x1b38: 84, + 0x1b39: 84, + 0x1b3a: 84, + 0x1b3c: 84, + 0x1b42: 84, + 0x1b6b: 84, + 0x1b6c: 84, + 0x1b6d: 84, + 0x1b6e: 84, + 0x1b6f: 84, + 0x1b70: 84, + 0x1b71: 84, + 0x1b72: 84, + 0x1b73: 84, + 0x1b80: 84, + 0x1b81: 84, + 0x1ba2: 84, + 0x1ba3: 84, + 0x1ba4: 84, + 0x1ba5: 84, + 0x1ba8: 84, + 0x1ba9: 84, + 0x1bab: 84, + 0x1bac: 84, + 0x1bad: 84, + 0x1be6: 84, + 0x1be8: 84, + 0x1be9: 84, + 0x1bed: 84, + 0x1bef: 84, + 0x1bf0: 84, + 0x1bf1: 84, + 0x1c2c: 84, + 0x1c2d: 84, + 0x1c2e: 84, + 0x1c2f: 84, + 0x1c30: 84, + 0x1c31: 84, + 0x1c32: 84, + 0x1c33: 84, + 0x1c36: 84, + 0x1c37: 84, + 0x1cd0: 84, + 0x1cd1: 84, + 0x1cd2: 84, + 0x1cd4: 84, + 0x1cd5: 84, + 0x1cd6: 84, + 0x1cd7: 84, + 0x1cd8: 84, + 0x1cd9: 84, + 0x1cda: 84, + 0x1cdb: 84, + 0x1cdc: 84, + 0x1cdd: 84, + 0x1cde: 84, + 0x1cdf: 84, + 0x1ce0: 84, + 0x1ce2: 84, + 0x1ce3: 84, + 0x1ce4: 84, + 0x1ce5: 84, + 0x1ce6: 84, + 0x1ce7: 84, + 0x1ce8: 84, + 0x1ced: 84, + 0x1cf4: 84, + 0x1cf8: 84, + 0x1cf9: 84, + 0x1dc0: 84, + 0x1dc1: 84, + 0x1dc2: 84, + 0x1dc3: 84, + 0x1dc4: 84, + 0x1dc5: 84, + 0x1dc6: 84, + 0x1dc7: 84, + 0x1dc8: 84, + 0x1dc9: 84, + 0x1dca: 84, + 0x1dcb: 84, + 0x1dcc: 84, + 0x1dcd: 84, + 0x1dce: 84, + 0x1dcf: 84, + 0x1dd0: 84, + 0x1dd1: 84, + 0x1dd2: 84, + 0x1dd3: 84, + 0x1dd4: 84, + 0x1dd5: 84, + 0x1dd6: 84, + 0x1dd7: 84, + 0x1dd8: 84, + 0x1dd9: 84, + 0x1dda: 84, + 0x1ddb: 84, + 0x1ddc: 84, + 0x1ddd: 84, + 0x1dde: 84, + 0x1ddf: 84, + 0x1de0: 84, + 0x1de1: 84, + 0x1de2: 84, + 0x1de3: 84, + 0x1de4: 84, + 0x1de5: 84, + 0x1de6: 84, + 0x1de7: 84, + 0x1de8: 84, + 0x1de9: 84, + 0x1dea: 84, + 0x1deb: 84, + 0x1dec: 84, + 0x1ded: 84, + 0x1dee: 84, + 0x1def: 84, + 0x1df0: 84, + 0x1df1: 84, + 0x1df2: 84, + 0x1df3: 84, + 0x1df4: 84, + 0x1df5: 84, + 0x1df6: 84, + 0x1df7: 84, + 0x1df8: 84, + 0x1df9: 84, + 0x1dfa: 84, + 0x1dfb: 84, + 0x1dfc: 84, + 0x1dfd: 84, + 0x1dfe: 84, + 0x1dff: 84, + 0x200b: 84, + 0x200d: 67, + 0x200e: 84, + 0x200f: 84, + 0x202a: 84, + 0x202b: 84, + 0x202c: 84, + 0x202d: 84, + 0x202e: 84, + 0x2060: 84, + 0x2061: 84, + 0x2062: 84, + 0x2063: 84, + 0x2064: 84, + 0x206a: 84, + 0x206b: 84, + 0x206c: 84, + 0x206d: 84, + 0x206e: 84, + 0x206f: 84, + 0x20d0: 84, + 0x20d1: 84, + 0x20d2: 84, + 0x20d3: 84, + 0x20d4: 84, + 0x20d5: 84, + 0x20d6: 84, + 0x20d7: 84, + 0x20d8: 84, + 0x20d9: 84, + 0x20da: 84, + 0x20db: 84, + 0x20dc: 84, + 0x20dd: 84, + 0x20de: 84, + 0x20df: 84, + 0x20e0: 84, + 0x20e1: 84, + 0x20e2: 84, + 0x20e3: 84, + 0x20e4: 84, + 0x20e5: 84, + 0x20e6: 84, + 0x20e7: 84, + 0x20e8: 84, + 0x20e9: 84, + 0x20ea: 84, + 0x20eb: 84, + 0x20ec: 84, + 0x20ed: 84, + 0x20ee: 84, + 0x20ef: 84, + 0x20f0: 84, + 0x2cef: 84, + 0x2cf0: 84, + 0x2cf1: 84, + 0x2d7f: 84, + 0x2de0: 84, + 0x2de1: 84, + 0x2de2: 84, + 0x2de3: 84, + 0x2de4: 84, + 0x2de5: 84, + 0x2de6: 84, + 0x2de7: 84, + 0x2de8: 84, + 0x2de9: 84, + 0x2dea: 84, + 0x2deb: 84, + 0x2dec: 84, + 0x2ded: 84, + 0x2dee: 84, + 0x2def: 84, + 0x2df0: 84, + 0x2df1: 84, + 0x2df2: 84, + 0x2df3: 84, + 0x2df4: 84, + 0x2df5: 84, + 0x2df6: 84, + 0x2df7: 84, + 0x2df8: 84, + 0x2df9: 84, + 0x2dfa: 84, + 0x2dfb: 84, + 0x2dfc: 84, + 0x2dfd: 84, + 0x2dfe: 84, + 0x2dff: 84, + 0x302a: 84, + 0x302b: 84, + 0x302c: 84, + 0x302d: 84, + 0x3099: 84, + 0x309a: 84, + 0xa66f: 84, + 0xa670: 84, + 0xa671: 84, + 0xa672: 84, + 0xa674: 84, + 0xa675: 84, + 0xa676: 84, + 0xa677: 84, + 0xa678: 84, + 0xa679: 84, + 0xa67a: 84, + 0xa67b: 84, + 0xa67c: 84, + 0xa67d: 84, + 0xa69e: 84, + 0xa69f: 84, + 0xa6f0: 84, + 0xa6f1: 84, + 0xa802: 84, + 0xa806: 84, + 0xa80b: 84, + 0xa825: 84, + 0xa826: 84, + 0xa82c: 84, + 0xa840: 68, + 0xa841: 68, + 0xa842: 68, + 0xa843: 68, + 0xa844: 68, + 0xa845: 68, + 0xa846: 68, + 0xa847: 68, + 0xa848: 68, + 0xa849: 68, + 0xa84a: 68, + 0xa84b: 68, + 0xa84c: 68, + 0xa84d: 68, + 0xa84e: 68, + 0xa84f: 68, + 0xa850: 68, + 0xa851: 68, + 0xa852: 68, + 0xa853: 68, + 0xa854: 68, + 0xa855: 68, + 0xa856: 68, + 0xa857: 68, + 0xa858: 68, + 0xa859: 68, + 0xa85a: 68, + 0xa85b: 68, + 0xa85c: 68, + 0xa85d: 68, + 0xa85e: 68, + 0xa85f: 68, + 0xa860: 68, + 0xa861: 68, + 0xa862: 68, + 0xa863: 68, + 0xa864: 68, + 0xa865: 68, + 0xa866: 68, + 0xa867: 68, + 0xa868: 68, + 0xa869: 68, + 0xa86a: 68, + 0xa86b: 68, + 0xa86c: 68, + 0xa86d: 68, + 0xa86e: 68, + 0xa86f: 68, + 0xa870: 68, + 0xa871: 68, + 0xa872: 76, + 0xa8c4: 84, + 0xa8c5: 84, + 0xa8e0: 84, + 0xa8e1: 84, + 0xa8e2: 84, + 0xa8e3: 84, + 0xa8e4: 84, + 0xa8e5: 84, + 0xa8e6: 84, + 0xa8e7: 84, + 0xa8e8: 84, + 0xa8e9: 84, + 0xa8ea: 84, + 0xa8eb: 84, + 0xa8ec: 84, + 0xa8ed: 84, + 0xa8ee: 84, + 0xa8ef: 84, + 0xa8f0: 84, + 0xa8f1: 84, + 0xa8ff: 84, + 0xa926: 84, + 0xa927: 84, + 0xa928: 84, + 0xa929: 84, + 0xa92a: 84, + 0xa92b: 84, + 0xa92c: 84, + 0xa92d: 84, + 0xa947: 84, + 0xa948: 84, + 0xa949: 84, + 0xa94a: 84, + 0xa94b: 84, + 0xa94c: 84, + 0xa94d: 84, + 0xa94e: 84, + 0xa94f: 84, + 0xa950: 84, + 0xa951: 84, + 0xa980: 84, + 0xa981: 84, + 0xa982: 84, + 0xa9b3: 84, + 0xa9b6: 84, + 0xa9b7: 84, + 0xa9b8: 84, + 0xa9b9: 84, + 0xa9bc: 84, + 0xa9bd: 84, + 0xa9e5: 84, + 0xaa29: 84, + 0xaa2a: 84, + 0xaa2b: 84, + 0xaa2c: 84, + 0xaa2d: 84, + 0xaa2e: 84, + 0xaa31: 84, + 0xaa32: 84, + 0xaa35: 84, + 0xaa36: 84, + 0xaa43: 84, + 0xaa4c: 84, + 0xaa7c: 84, + 0xaab0: 84, + 0xaab2: 84, + 0xaab3: 84, + 0xaab4: 84, + 0xaab7: 84, + 0xaab8: 84, + 0xaabe: 84, + 0xaabf: 84, + 0xaac1: 84, + 0xaaec: 84, + 0xaaed: 84, + 0xaaf6: 84, + 0xabe5: 84, + 0xabe8: 84, + 0xabed: 84, + 0xfb1e: 84, + 0xfe00: 84, + 0xfe01: 84, + 0xfe02: 84, + 0xfe03: 84, + 0xfe04: 84, + 0xfe05: 84, + 0xfe06: 84, + 0xfe07: 84, + 0xfe08: 84, + 0xfe09: 84, + 0xfe0a: 84, + 0xfe0b: 84, + 0xfe0c: 84, + 0xfe0d: 84, + 0xfe0e: 84, + 0xfe0f: 84, + 0xfe20: 84, + 0xfe21: 84, + 0xfe22: 84, + 0xfe23: 84, + 0xfe24: 84, + 0xfe25: 84, + 0xfe26: 84, + 0xfe27: 84, + 0xfe28: 84, + 0xfe29: 84, + 0xfe2a: 84, + 0xfe2b: 84, + 0xfe2c: 84, + 0xfe2d: 84, + 0xfe2e: 84, + 0xfe2f: 84, + 0xfeff: 84, + 0xfff9: 84, + 0xfffa: 84, + 0xfffb: 84, + 0x101fd: 84, + 0x102e0: 84, + 0x10376: 84, + 0x10377: 84, + 0x10378: 84, + 0x10379: 84, + 0x1037a: 84, + 0x10a01: 84, + 0x10a02: 84, + 0x10a03: 84, + 0x10a05: 84, + 0x10a06: 84, + 0x10a0c: 84, + 0x10a0d: 84, + 0x10a0e: 84, + 0x10a0f: 84, + 0x10a38: 84, + 0x10a39: 84, + 0x10a3a: 84, + 0x10a3f: 84, + 0x10ac0: 68, + 0x10ac1: 68, + 0x10ac2: 68, + 0x10ac3: 68, + 0x10ac4: 68, + 0x10ac5: 82, + 0x10ac7: 82, + 0x10ac9: 82, + 0x10aca: 82, + 0x10acd: 76, + 0x10ace: 82, + 0x10acf: 82, + 0x10ad0: 82, + 0x10ad1: 82, + 0x10ad2: 82, + 0x10ad3: 68, + 0x10ad4: 68, + 0x10ad5: 68, + 0x10ad6: 68, + 0x10ad7: 76, + 0x10ad8: 68, + 0x10ad9: 68, + 0x10ada: 68, + 0x10adb: 68, + 0x10adc: 68, + 0x10add: 82, + 0x10ade: 68, + 0x10adf: 68, + 0x10ae0: 68, + 0x10ae1: 82, + 0x10ae4: 82, + 0x10ae5: 84, + 0x10ae6: 84, + 0x10aeb: 68, + 0x10aec: 68, + 0x10aed: 68, + 0x10aee: 68, + 0x10aef: 82, + 0x10b80: 68, + 0x10b81: 82, + 0x10b82: 68, + 0x10b83: 82, + 0x10b84: 82, + 0x10b85: 82, + 0x10b86: 68, + 0x10b87: 68, + 0x10b88: 68, + 0x10b89: 82, + 0x10b8a: 68, + 0x10b8b: 68, + 0x10b8c: 82, + 0x10b8d: 68, + 0x10b8e: 82, + 0x10b8f: 82, + 0x10b90: 68, + 0x10b91: 82, + 0x10ba9: 82, + 0x10baa: 82, + 0x10bab: 82, + 0x10bac: 82, + 0x10bad: 68, + 0x10bae: 68, + 0x10d00: 76, + 0x10d01: 68, + 0x10d02: 68, + 0x10d03: 68, + 0x10d04: 68, + 0x10d05: 68, + 0x10d06: 68, + 0x10d07: 68, + 0x10d08: 68, + 0x10d09: 68, + 0x10d0a: 68, + 0x10d0b: 68, + 0x10d0c: 68, + 0x10d0d: 68, + 0x10d0e: 68, + 0x10d0f: 68, + 0x10d10: 68, + 0x10d11: 68, + 0x10d12: 68, + 0x10d13: 68, + 0x10d14: 68, + 0x10d15: 68, + 0x10d16: 68, + 0x10d17: 68, + 0x10d18: 68, + 0x10d19: 68, + 0x10d1a: 68, + 0x10d1b: 68, + 0x10d1c: 68, + 0x10d1d: 68, + 0x10d1e: 68, + 0x10d1f: 68, + 0x10d20: 68, + 0x10d21: 68, + 0x10d22: 82, + 0x10d23: 68, + 0x10d24: 84, + 0x10d25: 84, + 0x10d26: 84, + 0x10d27: 84, + 0x10eab: 84, + 0x10eac: 84, + 0x10efd: 84, + 0x10efe: 84, + 0x10eff: 84, + 0x10f30: 68, + 0x10f31: 68, + 0x10f32: 68, + 0x10f33: 82, + 0x10f34: 68, + 0x10f35: 68, + 0x10f36: 68, + 0x10f37: 68, + 0x10f38: 68, + 0x10f39: 68, + 0x10f3a: 68, + 0x10f3b: 68, + 0x10f3c: 68, + 0x10f3d: 68, + 0x10f3e: 68, + 0x10f3f: 68, + 0x10f40: 68, + 0x10f41: 68, + 0x10f42: 68, + 0x10f43: 68, + 0x10f44: 68, + 0x10f46: 84, + 0x10f47: 84, + 0x10f48: 84, + 0x10f49: 84, + 0x10f4a: 84, + 0x10f4b: 84, + 0x10f4c: 84, + 0x10f4d: 84, + 0x10f4e: 84, + 0x10f4f: 84, + 0x10f50: 84, + 0x10f51: 68, + 0x10f52: 68, + 0x10f53: 68, + 0x10f54: 82, + 0x10f70: 68, + 0x10f71: 68, + 0x10f72: 68, + 0x10f73: 68, + 0x10f74: 82, + 0x10f75: 82, + 0x10f76: 68, + 0x10f77: 68, + 0x10f78: 68, + 0x10f79: 68, + 0x10f7a: 68, + 0x10f7b: 68, + 0x10f7c: 68, + 0x10f7d: 68, + 0x10f7e: 68, + 0x10f7f: 68, + 0x10f80: 68, + 0x10f81: 68, + 0x10f82: 84, + 0x10f83: 84, + 0x10f84: 84, + 0x10f85: 84, + 0x10fb0: 68, + 0x10fb2: 68, + 0x10fb3: 68, + 0x10fb4: 82, + 0x10fb5: 82, + 0x10fb6: 82, + 0x10fb8: 68, + 0x10fb9: 82, + 0x10fba: 82, + 0x10fbb: 68, + 0x10fbc: 68, + 0x10fbd: 82, + 0x10fbe: 68, + 0x10fbf: 68, + 0x10fc1: 68, + 0x10fc2: 82, + 0x10fc3: 82, + 0x10fc4: 68, + 0x10fc9: 82, + 0x10fca: 68, + 0x10fcb: 76, + 0x11001: 84, + 0x11038: 84, + 0x11039: 84, + 0x1103a: 84, + 0x1103b: 84, + 0x1103c: 84, + 0x1103d: 84, + 0x1103e: 84, + 0x1103f: 84, + 0x11040: 84, + 0x11041: 84, + 0x11042: 84, + 0x11043: 84, + 0x11044: 84, + 0x11045: 84, + 0x11046: 84, + 0x11070: 84, + 0x11073: 84, + 0x11074: 84, + 0x1107f: 84, + 0x11080: 84, + 0x11081: 84, + 0x110b3: 84, + 0x110b4: 84, + 0x110b5: 84, + 0x110b6: 84, + 0x110b9: 84, + 0x110ba: 84, + 0x110c2: 84, + 0x11100: 84, + 0x11101: 84, + 0x11102: 84, + 0x11127: 84, + 0x11128: 84, + 0x11129: 84, + 0x1112a: 84, + 0x1112b: 84, + 0x1112d: 84, + 0x1112e: 84, + 0x1112f: 84, + 0x11130: 84, + 0x11131: 84, + 0x11132: 84, + 0x11133: 84, + 0x11134: 84, + 0x11173: 84, + 0x11180: 84, + 0x11181: 84, + 0x111b6: 84, + 0x111b7: 84, + 0x111b8: 84, + 0x111b9: 84, + 0x111ba: 84, + 0x111bb: 84, + 0x111bc: 84, + 0x111bd: 84, + 0x111be: 84, + 0x111c9: 84, + 0x111ca: 84, + 0x111cb: 84, + 0x111cc: 84, + 0x111cf: 84, + 0x1122f: 84, + 0x11230: 84, + 0x11231: 84, + 0x11234: 84, + 0x11236: 84, + 0x11237: 84, + 0x1123e: 84, + 0x11241: 84, + 0x112df: 84, + 0x112e3: 84, + 0x112e4: 84, + 0x112e5: 84, + 0x112e6: 84, + 0x112e7: 84, + 0x112e8: 84, + 0x112e9: 84, + 0x112ea: 84, + 0x11300: 84, + 0x11301: 84, + 0x1133b: 84, + 0x1133c: 84, + 0x11340: 84, + 0x11366: 84, + 0x11367: 84, + 0x11368: 84, + 0x11369: 84, + 0x1136a: 84, + 0x1136b: 84, + 0x1136c: 84, + 0x11370: 84, + 0x11371: 84, + 0x11372: 84, + 0x11373: 84, + 0x11374: 84, + 0x11438: 84, + 0x11439: 84, + 0x1143a: 84, + 0x1143b: 84, + 0x1143c: 84, + 0x1143d: 84, + 0x1143e: 84, + 0x1143f: 84, + 0x11442: 84, + 0x11443: 84, + 0x11444: 84, + 0x11446: 84, + 0x1145e: 84, + 0x114b3: 84, + 0x114b4: 84, + 0x114b5: 84, + 0x114b6: 84, + 0x114b7: 84, + 0x114b8: 84, + 0x114ba: 84, + 0x114bf: 84, + 0x114c0: 84, + 0x114c2: 84, + 0x114c3: 84, + 0x115b2: 84, + 0x115b3: 84, + 0x115b4: 84, + 0x115b5: 84, + 0x115bc: 84, + 0x115bd: 84, + 0x115bf: 84, + 0x115c0: 84, + 0x115dc: 84, + 0x115dd: 84, + 0x11633: 84, + 0x11634: 84, + 0x11635: 84, + 0x11636: 84, + 0x11637: 84, + 0x11638: 84, + 0x11639: 84, + 0x1163a: 84, + 0x1163d: 84, + 0x1163f: 84, + 0x11640: 84, + 0x116ab: 84, + 0x116ad: 84, + 0x116b0: 84, + 0x116b1: 84, + 0x116b2: 84, + 0x116b3: 84, + 0x116b4: 84, + 0x116b5: 84, + 0x116b7: 84, + 0x1171d: 84, + 0x1171e: 84, + 0x1171f: 84, + 0x11722: 84, + 0x11723: 84, + 0x11724: 84, + 0x11725: 84, + 0x11727: 84, + 0x11728: 84, + 0x11729: 84, + 0x1172a: 84, + 0x1172b: 84, + 0x1182f: 84, + 0x11830: 84, + 0x11831: 84, + 0x11832: 84, + 0x11833: 84, + 0x11834: 84, + 0x11835: 84, + 0x11836: 84, + 0x11837: 84, + 0x11839: 84, + 0x1183a: 84, + 0x1193b: 84, + 0x1193c: 84, + 0x1193e: 84, + 0x11943: 84, + 0x119d4: 84, + 0x119d5: 84, + 0x119d6: 84, + 0x119d7: 84, + 0x119da: 84, + 0x119db: 84, + 0x119e0: 84, + 0x11a01: 84, + 0x11a02: 84, + 0x11a03: 84, + 0x11a04: 84, + 0x11a05: 84, + 0x11a06: 84, + 0x11a07: 84, + 0x11a08: 84, + 0x11a09: 84, + 0x11a0a: 84, + 0x11a33: 84, + 0x11a34: 84, + 0x11a35: 84, + 0x11a36: 84, + 0x11a37: 84, + 0x11a38: 84, + 0x11a3b: 84, + 0x11a3c: 84, + 0x11a3d: 84, + 0x11a3e: 84, + 0x11a47: 84, + 0x11a51: 84, + 0x11a52: 84, + 0x11a53: 84, + 0x11a54: 84, + 0x11a55: 84, + 0x11a56: 84, + 0x11a59: 84, + 0x11a5a: 84, + 0x11a5b: 84, + 0x11a8a: 84, + 0x11a8b: 84, + 0x11a8c: 84, + 0x11a8d: 84, + 0x11a8e: 84, + 0x11a8f: 84, + 0x11a90: 84, + 0x11a91: 84, + 0x11a92: 84, + 0x11a93: 84, + 0x11a94: 84, + 0x11a95: 84, + 0x11a96: 84, + 0x11a98: 84, + 0x11a99: 84, + 0x11c30: 84, + 0x11c31: 84, + 0x11c32: 84, + 0x11c33: 84, + 0x11c34: 84, + 0x11c35: 84, + 0x11c36: 84, + 0x11c38: 84, + 0x11c39: 84, + 0x11c3a: 84, + 0x11c3b: 84, + 0x11c3c: 84, + 0x11c3d: 84, + 0x11c3f: 84, + 0x11c92: 84, + 0x11c93: 84, + 0x11c94: 84, + 0x11c95: 84, + 0x11c96: 84, + 0x11c97: 84, + 0x11c98: 84, + 0x11c99: 84, + 0x11c9a: 84, + 0x11c9b: 84, + 0x11c9c: 84, + 0x11c9d: 84, + 0x11c9e: 84, + 0x11c9f: 84, + 0x11ca0: 84, + 0x11ca1: 84, + 0x11ca2: 84, + 0x11ca3: 84, + 0x11ca4: 84, + 0x11ca5: 84, + 0x11ca6: 84, + 0x11ca7: 84, + 0x11caa: 84, + 0x11cab: 84, + 0x11cac: 84, + 0x11cad: 84, + 0x11cae: 84, + 0x11caf: 84, + 0x11cb0: 84, + 0x11cb2: 84, + 0x11cb3: 84, + 0x11cb5: 84, + 0x11cb6: 84, + 0x11d31: 84, + 0x11d32: 84, + 0x11d33: 84, + 0x11d34: 84, + 0x11d35: 84, + 0x11d36: 84, + 0x11d3a: 84, + 0x11d3c: 84, + 0x11d3d: 84, + 0x11d3f: 84, + 0x11d40: 84, + 0x11d41: 84, + 0x11d42: 84, + 0x11d43: 84, + 0x11d44: 84, + 0x11d45: 84, + 0x11d47: 84, + 0x11d90: 84, + 0x11d91: 84, + 0x11d95: 84, + 0x11d97: 84, + 0x11ef3: 84, + 0x11ef4: 84, + 0x11f00: 84, + 0x11f01: 84, + 0x11f36: 84, + 0x11f37: 84, + 0x11f38: 84, + 0x11f39: 84, + 0x11f3a: 84, + 0x11f40: 84, + 0x11f42: 84, + 0x13430: 84, + 0x13431: 84, + 0x13432: 84, + 0x13433: 84, + 0x13434: 84, + 0x13435: 84, + 0x13436: 84, + 0x13437: 84, + 0x13438: 84, + 0x13439: 84, + 0x1343a: 84, + 0x1343b: 84, + 0x1343c: 84, + 0x1343d: 84, + 0x1343e: 84, + 0x1343f: 84, + 0x13440: 84, + 0x13447: 84, + 0x13448: 84, + 0x13449: 84, + 0x1344a: 84, + 0x1344b: 84, + 0x1344c: 84, + 0x1344d: 84, + 0x1344e: 84, + 0x1344f: 84, + 0x13450: 84, + 0x13451: 84, + 0x13452: 84, + 0x13453: 84, + 0x13454: 84, + 0x13455: 84, + 0x16af0: 84, + 0x16af1: 84, + 0x16af2: 84, + 0x16af3: 84, + 0x16af4: 84, + 0x16b30: 84, + 0x16b31: 84, + 0x16b32: 84, + 0x16b33: 84, + 0x16b34: 84, + 0x16b35: 84, + 0x16b36: 84, + 0x16f4f: 84, + 0x16f8f: 84, + 0x16f90: 84, + 0x16f91: 84, + 0x16f92: 84, + 0x16fe4: 84, + 0x1bc9d: 84, + 0x1bc9e: 84, + 0x1bca0: 84, + 0x1bca1: 84, + 0x1bca2: 84, + 0x1bca3: 84, + 0x1cf00: 84, + 0x1cf01: 84, + 0x1cf02: 84, + 0x1cf03: 84, + 0x1cf04: 84, + 0x1cf05: 84, + 0x1cf06: 84, + 0x1cf07: 84, + 0x1cf08: 84, + 0x1cf09: 84, + 0x1cf0a: 84, + 0x1cf0b: 84, + 0x1cf0c: 84, + 0x1cf0d: 84, + 0x1cf0e: 84, + 0x1cf0f: 84, + 0x1cf10: 84, + 0x1cf11: 84, + 0x1cf12: 84, + 0x1cf13: 84, + 0x1cf14: 84, + 0x1cf15: 84, + 0x1cf16: 84, + 0x1cf17: 84, + 0x1cf18: 84, + 0x1cf19: 84, + 0x1cf1a: 84, + 0x1cf1b: 84, + 0x1cf1c: 84, + 0x1cf1d: 84, + 0x1cf1e: 84, + 0x1cf1f: 84, + 0x1cf20: 84, + 0x1cf21: 84, + 0x1cf22: 84, + 0x1cf23: 84, + 0x1cf24: 84, + 0x1cf25: 84, + 0x1cf26: 84, + 0x1cf27: 84, + 0x1cf28: 84, + 0x1cf29: 84, + 0x1cf2a: 84, + 0x1cf2b: 84, + 0x1cf2c: 84, + 0x1cf2d: 84, + 0x1cf30: 84, + 0x1cf31: 84, + 0x1cf32: 84, + 0x1cf33: 84, + 0x1cf34: 84, + 0x1cf35: 84, + 0x1cf36: 84, + 0x1cf37: 84, + 0x1cf38: 84, + 0x1cf39: 84, + 0x1cf3a: 84, + 0x1cf3b: 84, + 0x1cf3c: 84, + 0x1cf3d: 84, + 0x1cf3e: 84, + 0x1cf3f: 84, + 0x1cf40: 84, + 0x1cf41: 84, + 0x1cf42: 84, + 0x1cf43: 84, + 0x1cf44: 84, + 0x1cf45: 84, + 0x1cf46: 84, + 0x1d167: 84, + 0x1d168: 84, + 0x1d169: 84, + 0x1d173: 84, + 0x1d174: 84, + 0x1d175: 84, + 0x1d176: 84, + 0x1d177: 84, + 0x1d178: 84, + 0x1d179: 84, + 0x1d17a: 84, + 0x1d17b: 84, + 0x1d17c: 84, + 0x1d17d: 84, + 0x1d17e: 84, + 0x1d17f: 84, + 0x1d180: 84, + 0x1d181: 84, + 0x1d182: 84, + 0x1d185: 84, + 0x1d186: 84, + 0x1d187: 84, + 0x1d188: 84, + 0x1d189: 84, + 0x1d18a: 84, + 0x1d18b: 84, + 0x1d1aa: 84, + 0x1d1ab: 84, + 0x1d1ac: 84, + 0x1d1ad: 84, + 0x1d242: 84, + 0x1d243: 84, + 0x1d244: 84, + 0x1da00: 84, + 0x1da01: 84, + 0x1da02: 84, + 0x1da03: 84, + 0x1da04: 84, + 0x1da05: 84, + 0x1da06: 84, + 0x1da07: 84, + 0x1da08: 84, + 0x1da09: 84, + 0x1da0a: 84, + 0x1da0b: 84, + 0x1da0c: 84, + 0x1da0d: 84, + 0x1da0e: 84, + 0x1da0f: 84, + 0x1da10: 84, + 0x1da11: 84, + 0x1da12: 84, + 0x1da13: 84, + 0x1da14: 84, + 0x1da15: 84, + 0x1da16: 84, + 0x1da17: 84, + 0x1da18: 84, + 0x1da19: 84, + 0x1da1a: 84, + 0x1da1b: 84, + 0x1da1c: 84, + 0x1da1d: 84, + 0x1da1e: 84, + 0x1da1f: 84, + 0x1da20: 84, + 0x1da21: 84, + 0x1da22: 84, + 0x1da23: 84, + 0x1da24: 84, + 0x1da25: 84, + 0x1da26: 84, + 0x1da27: 84, + 0x1da28: 84, + 0x1da29: 84, + 0x1da2a: 84, + 0x1da2b: 84, + 0x1da2c: 84, + 0x1da2d: 84, + 0x1da2e: 84, + 0x1da2f: 84, + 0x1da30: 84, + 0x1da31: 84, + 0x1da32: 84, + 0x1da33: 84, + 0x1da34: 84, + 0x1da35: 84, + 0x1da36: 84, + 0x1da3b: 84, + 0x1da3c: 84, + 0x1da3d: 84, + 0x1da3e: 84, + 0x1da3f: 84, + 0x1da40: 84, + 0x1da41: 84, + 0x1da42: 84, + 0x1da43: 84, + 0x1da44: 84, + 0x1da45: 84, + 0x1da46: 84, + 0x1da47: 84, + 0x1da48: 84, + 0x1da49: 84, + 0x1da4a: 84, + 0x1da4b: 84, + 0x1da4c: 84, + 0x1da4d: 84, + 0x1da4e: 84, + 0x1da4f: 84, + 0x1da50: 84, + 0x1da51: 84, + 0x1da52: 84, + 0x1da53: 84, + 0x1da54: 84, + 0x1da55: 84, + 0x1da56: 84, + 0x1da57: 84, + 0x1da58: 84, + 0x1da59: 84, + 0x1da5a: 84, + 0x1da5b: 84, + 0x1da5c: 84, + 0x1da5d: 84, + 0x1da5e: 84, + 0x1da5f: 84, + 0x1da60: 84, + 0x1da61: 84, + 0x1da62: 84, + 0x1da63: 84, + 0x1da64: 84, + 0x1da65: 84, + 0x1da66: 84, + 0x1da67: 84, + 0x1da68: 84, + 0x1da69: 84, + 0x1da6a: 84, + 0x1da6b: 84, + 0x1da6c: 84, + 0x1da75: 84, + 0x1da84: 84, + 0x1da9b: 84, + 0x1da9c: 84, + 0x1da9d: 84, + 0x1da9e: 84, + 0x1da9f: 84, + 0x1daa1: 84, + 0x1daa2: 84, + 0x1daa3: 84, + 0x1daa4: 84, + 0x1daa5: 84, + 0x1daa6: 84, + 0x1daa7: 84, + 0x1daa8: 84, + 0x1daa9: 84, + 0x1daaa: 84, + 0x1daab: 84, + 0x1daac: 84, + 0x1daad: 84, + 0x1daae: 84, + 0x1daaf: 84, + 0x1e000: 84, + 0x1e001: 84, + 0x1e002: 84, + 0x1e003: 84, + 0x1e004: 84, + 0x1e005: 84, + 0x1e006: 84, + 0x1e008: 84, + 0x1e009: 84, + 0x1e00a: 84, + 0x1e00b: 84, + 0x1e00c: 84, + 0x1e00d: 84, + 0x1e00e: 84, + 0x1e00f: 84, + 0x1e010: 84, + 0x1e011: 84, + 0x1e012: 84, + 0x1e013: 84, + 0x1e014: 84, + 0x1e015: 84, + 0x1e016: 84, + 0x1e017: 84, + 0x1e018: 84, + 0x1e01b: 84, + 0x1e01c: 84, + 0x1e01d: 84, + 0x1e01e: 84, + 0x1e01f: 84, + 0x1e020: 84, + 0x1e021: 84, + 0x1e023: 84, + 0x1e024: 84, + 0x1e026: 84, + 0x1e027: 84, + 0x1e028: 84, + 0x1e029: 84, + 0x1e02a: 84, + 0x1e08f: 84, + 0x1e130: 84, + 0x1e131: 84, + 0x1e132: 84, + 0x1e133: 84, + 0x1e134: 84, + 0x1e135: 84, + 0x1e136: 84, + 0x1e2ae: 84, + 0x1e2ec: 84, + 0x1e2ed: 84, + 0x1e2ee: 84, + 0x1e2ef: 84, + 0x1e4ec: 84, + 0x1e4ed: 84, + 0x1e4ee: 84, + 0x1e4ef: 84, + 0x1e8d0: 84, + 0x1e8d1: 84, + 0x1e8d2: 84, + 0x1e8d3: 84, + 0x1e8d4: 84, + 0x1e8d5: 84, + 0x1e8d6: 84, + 0x1e900: 68, + 0x1e901: 68, + 0x1e902: 68, + 0x1e903: 68, + 0x1e904: 68, + 0x1e905: 68, + 0x1e906: 68, + 0x1e907: 68, + 0x1e908: 68, + 0x1e909: 68, + 0x1e90a: 68, + 0x1e90b: 68, + 0x1e90c: 68, + 0x1e90d: 68, + 0x1e90e: 68, + 0x1e90f: 68, + 0x1e910: 68, + 0x1e911: 68, + 0x1e912: 68, + 0x1e913: 68, + 0x1e914: 68, + 0x1e915: 68, + 0x1e916: 68, + 0x1e917: 68, + 0x1e918: 68, + 0x1e919: 68, + 0x1e91a: 68, + 0x1e91b: 68, + 0x1e91c: 68, + 0x1e91d: 68, + 0x1e91e: 68, + 0x1e91f: 68, + 0x1e920: 68, + 0x1e921: 68, + 0x1e922: 68, + 0x1e923: 68, + 0x1e924: 68, + 0x1e925: 68, + 0x1e926: 68, + 0x1e927: 68, + 0x1e928: 68, + 0x1e929: 68, + 0x1e92a: 68, + 0x1e92b: 68, + 0x1e92c: 68, + 0x1e92d: 68, + 0x1e92e: 68, + 0x1e92f: 68, + 0x1e930: 68, + 0x1e931: 68, + 0x1e932: 68, + 0x1e933: 68, + 0x1e934: 68, + 0x1e935: 68, + 0x1e936: 68, + 0x1e937: 68, + 0x1e938: 68, + 0x1e939: 68, + 0x1e93a: 68, + 0x1e93b: 68, + 0x1e93c: 68, + 0x1e93d: 68, + 0x1e93e: 68, + 0x1e93f: 68, + 0x1e940: 68, + 0x1e941: 68, + 0x1e942: 68, + 0x1e943: 68, + 0x1e944: 84, + 0x1e945: 84, + 0x1e946: 84, + 0x1e947: 84, + 0x1e948: 84, + 0x1e949: 84, + 0x1e94a: 84, + 0x1e94b: 84, + 0xe0001: 84, + 0xe0020: 84, + 0xe0021: 84, + 0xe0022: 84, + 0xe0023: 84, + 0xe0024: 84, + 0xe0025: 84, + 0xe0026: 84, + 0xe0027: 84, + 0xe0028: 84, + 0xe0029: 84, + 0xe002a: 84, + 0xe002b: 84, + 0xe002c: 84, + 0xe002d: 84, + 0xe002e: 84, + 0xe002f: 84, + 0xe0030: 84, + 0xe0031: 84, + 0xe0032: 84, + 0xe0033: 84, + 0xe0034: 84, + 0xe0035: 84, + 0xe0036: 84, + 0xe0037: 84, + 0xe0038: 84, + 0xe0039: 84, + 0xe003a: 84, + 0xe003b: 84, + 0xe003c: 84, + 0xe003d: 84, + 0xe003e: 84, + 0xe003f: 84, + 0xe0040: 84, + 0xe0041: 84, + 0xe0042: 84, + 0xe0043: 84, + 0xe0044: 84, + 0xe0045: 84, + 0xe0046: 84, + 0xe0047: 84, + 0xe0048: 84, + 0xe0049: 84, + 0xe004a: 84, + 0xe004b: 84, + 0xe004c: 84, + 0xe004d: 84, + 0xe004e: 84, + 0xe004f: 84, + 0xe0050: 84, + 0xe0051: 84, + 0xe0052: 84, + 0xe0053: 84, + 0xe0054: 84, + 0xe0055: 84, + 0xe0056: 84, + 0xe0057: 84, + 0xe0058: 84, + 0xe0059: 84, + 0xe005a: 84, + 0xe005b: 84, + 0xe005c: 84, + 0xe005d: 84, + 0xe005e: 84, + 0xe005f: 84, + 0xe0060: 84, + 0xe0061: 84, + 0xe0062: 84, + 0xe0063: 84, + 0xe0064: 84, + 0xe0065: 84, + 0xe0066: 84, + 0xe0067: 84, + 0xe0068: 84, + 0xe0069: 84, + 0xe006a: 84, + 0xe006b: 84, + 0xe006c: 84, + 0xe006d: 84, + 0xe006e: 84, + 0xe006f: 84, + 0xe0070: 84, + 0xe0071: 84, + 0xe0072: 84, + 0xe0073: 84, + 0xe0074: 84, + 0xe0075: 84, + 0xe0076: 84, + 0xe0077: 84, + 0xe0078: 84, + 0xe0079: 84, + 0xe007a: 84, + 0xe007b: 84, + 0xe007c: 84, + 0xe007d: 84, + 0xe007e: 84, + 0xe007f: 84, + 0xe0100: 84, + 0xe0101: 84, + 0xe0102: 84, + 0xe0103: 84, + 0xe0104: 84, + 0xe0105: 84, + 0xe0106: 84, + 0xe0107: 84, + 0xe0108: 84, + 0xe0109: 84, + 0xe010a: 84, + 0xe010b: 84, + 0xe010c: 84, + 0xe010d: 84, + 0xe010e: 84, + 0xe010f: 84, + 0xe0110: 84, + 0xe0111: 84, + 0xe0112: 84, + 0xe0113: 84, + 0xe0114: 84, + 0xe0115: 84, + 0xe0116: 84, + 0xe0117: 84, + 0xe0118: 84, + 0xe0119: 84, + 0xe011a: 84, + 0xe011b: 84, + 0xe011c: 84, + 0xe011d: 84, + 0xe011e: 84, + 0xe011f: 84, + 0xe0120: 84, + 0xe0121: 84, + 0xe0122: 84, + 0xe0123: 84, + 0xe0124: 84, + 0xe0125: 84, + 0xe0126: 84, + 0xe0127: 84, + 0xe0128: 84, + 0xe0129: 84, + 0xe012a: 84, + 0xe012b: 84, + 0xe012c: 84, + 0xe012d: 84, + 0xe012e: 84, + 0xe012f: 84, + 0xe0130: 84, + 0xe0131: 84, + 0xe0132: 84, + 0xe0133: 84, + 0xe0134: 84, + 0xe0135: 84, + 0xe0136: 84, + 0xe0137: 84, + 0xe0138: 84, + 0xe0139: 84, + 0xe013a: 84, + 0xe013b: 84, + 0xe013c: 84, + 0xe013d: 84, + 0xe013e: 84, + 0xe013f: 84, + 0xe0140: 84, + 0xe0141: 84, + 0xe0142: 84, + 0xe0143: 84, + 0xe0144: 84, + 0xe0145: 84, + 0xe0146: 84, + 0xe0147: 84, + 0xe0148: 84, + 0xe0149: 84, + 0xe014a: 84, + 0xe014b: 84, + 0xe014c: 84, + 0xe014d: 84, + 0xe014e: 84, + 0xe014f: 84, + 0xe0150: 84, + 0xe0151: 84, + 0xe0152: 84, + 0xe0153: 84, + 0xe0154: 84, + 0xe0155: 84, + 0xe0156: 84, + 0xe0157: 84, + 0xe0158: 84, + 0xe0159: 84, + 0xe015a: 84, + 0xe015b: 84, + 0xe015c: 84, + 0xe015d: 84, + 0xe015e: 84, + 0xe015f: 84, + 0xe0160: 84, + 0xe0161: 84, + 0xe0162: 84, + 0xe0163: 84, + 0xe0164: 84, + 0xe0165: 84, + 0xe0166: 84, + 0xe0167: 84, + 0xe0168: 84, + 0xe0169: 84, + 0xe016a: 84, + 0xe016b: 84, + 0xe016c: 84, + 0xe016d: 84, + 0xe016e: 84, + 0xe016f: 84, + 0xe0170: 84, + 0xe0171: 84, + 0xe0172: 84, + 0xe0173: 84, + 0xe0174: 84, + 0xe0175: 84, + 0xe0176: 84, + 0xe0177: 84, + 0xe0178: 84, + 0xe0179: 84, + 0xe017a: 84, + 0xe017b: 84, + 0xe017c: 84, + 0xe017d: 84, + 0xe017e: 84, + 0xe017f: 84, + 0xe0180: 84, + 0xe0181: 84, + 0xe0182: 84, + 0xe0183: 84, + 0xe0184: 84, + 0xe0185: 84, + 0xe0186: 84, + 0xe0187: 84, + 0xe0188: 84, + 0xe0189: 84, + 0xe018a: 84, + 0xe018b: 84, + 0xe018c: 84, + 0xe018d: 84, + 0xe018e: 84, + 0xe018f: 84, + 0xe0190: 84, + 0xe0191: 84, + 0xe0192: 84, + 0xe0193: 84, + 0xe0194: 84, + 0xe0195: 84, + 0xe0196: 84, + 0xe0197: 84, + 0xe0198: 84, + 0xe0199: 84, + 0xe019a: 84, + 0xe019b: 84, + 0xe019c: 84, + 0xe019d: 84, + 0xe019e: 84, + 0xe019f: 84, + 0xe01a0: 84, + 0xe01a1: 84, + 0xe01a2: 84, + 0xe01a3: 84, + 0xe01a4: 84, + 0xe01a5: 84, + 0xe01a6: 84, + 0xe01a7: 84, + 0xe01a8: 84, + 0xe01a9: 84, + 0xe01aa: 84, + 0xe01ab: 84, + 0xe01ac: 84, + 0xe01ad: 84, + 0xe01ae: 84, + 0xe01af: 84, + 0xe01b0: 84, + 0xe01b1: 84, + 0xe01b2: 84, + 0xe01b3: 84, + 0xe01b4: 84, + 0xe01b5: 84, + 0xe01b6: 84, + 0xe01b7: 84, + 0xe01b8: 84, + 0xe01b9: 84, + 0xe01ba: 84, + 0xe01bb: 84, + 0xe01bc: 84, + 0xe01bd: 84, + 0xe01be: 84, + 0xe01bf: 84, + 0xe01c0: 84, + 0xe01c1: 84, + 0xe01c2: 84, + 0xe01c3: 84, + 0xe01c4: 84, + 0xe01c5: 84, + 0xe01c6: 84, + 0xe01c7: 84, + 0xe01c8: 84, + 0xe01c9: 84, + 0xe01ca: 84, + 0xe01cb: 84, + 0xe01cc: 84, + 0xe01cd: 84, + 0xe01ce: 84, + 0xe01cf: 84, + 0xe01d0: 84, + 0xe01d1: 84, + 0xe01d2: 84, + 0xe01d3: 84, + 0xe01d4: 84, + 0xe01d5: 84, + 0xe01d6: 84, + 0xe01d7: 84, + 0xe01d8: 84, + 0xe01d9: 84, + 0xe01da: 84, + 0xe01db: 84, + 0xe01dc: 84, + 0xe01dd: 84, + 0xe01de: 84, + 0xe01df: 84, + 0xe01e0: 84, + 0xe01e1: 84, + 0xe01e2: 84, + 0xe01e3: 84, + 0xe01e4: 84, + 0xe01e5: 84, + 0xe01e6: 84, + 0xe01e7: 84, + 0xe01e8: 84, + 0xe01e9: 84, + 0xe01ea: 84, + 0xe01eb: 84, + 0xe01ec: 84, + 0xe01ed: 84, + 0xe01ee: 84, + 0xe01ef: 84, +} +codepoint_classes = { + 'PVALID': ( + 0x2d0000002e, + 0x300000003a, + 0x610000007b, + 0xdf000000f7, + 0xf800000100, + 0x10100000102, + 0x10300000104, + 0x10500000106, + 0x10700000108, + 0x1090000010a, + 0x10b0000010c, + 0x10d0000010e, + 0x10f00000110, + 0x11100000112, + 0x11300000114, + 0x11500000116, + 0x11700000118, + 0x1190000011a, + 0x11b0000011c, + 0x11d0000011e, + 0x11f00000120, + 0x12100000122, + 0x12300000124, + 0x12500000126, + 0x12700000128, + 0x1290000012a, + 0x12b0000012c, + 0x12d0000012e, + 0x12f00000130, + 0x13100000132, + 0x13500000136, + 0x13700000139, + 0x13a0000013b, + 0x13c0000013d, + 0x13e0000013f, + 0x14200000143, + 0x14400000145, + 0x14600000147, + 0x14800000149, + 0x14b0000014c, + 0x14d0000014e, + 0x14f00000150, + 0x15100000152, + 0x15300000154, + 0x15500000156, + 0x15700000158, + 0x1590000015a, + 0x15b0000015c, + 0x15d0000015e, + 0x15f00000160, + 0x16100000162, + 0x16300000164, + 0x16500000166, + 0x16700000168, + 0x1690000016a, + 0x16b0000016c, + 0x16d0000016e, + 0x16f00000170, + 0x17100000172, + 0x17300000174, + 0x17500000176, + 0x17700000178, + 0x17a0000017b, + 0x17c0000017d, + 0x17e0000017f, + 0x18000000181, + 0x18300000184, + 0x18500000186, + 0x18800000189, + 0x18c0000018e, + 0x19200000193, + 0x19500000196, + 0x1990000019c, + 0x19e0000019f, + 0x1a1000001a2, + 0x1a3000001a4, + 0x1a5000001a6, + 0x1a8000001a9, + 0x1aa000001ac, + 0x1ad000001ae, + 0x1b0000001b1, + 0x1b4000001b5, + 0x1b6000001b7, + 0x1b9000001bc, + 0x1bd000001c4, + 0x1ce000001cf, + 0x1d0000001d1, + 0x1d2000001d3, + 0x1d4000001d5, + 0x1d6000001d7, + 0x1d8000001d9, + 0x1da000001db, + 0x1dc000001de, + 0x1df000001e0, + 0x1e1000001e2, + 0x1e3000001e4, + 0x1e5000001e6, + 0x1e7000001e8, + 0x1e9000001ea, + 0x1eb000001ec, + 0x1ed000001ee, + 0x1ef000001f1, + 0x1f5000001f6, + 0x1f9000001fa, + 0x1fb000001fc, + 0x1fd000001fe, + 0x1ff00000200, + 0x20100000202, + 0x20300000204, + 0x20500000206, + 0x20700000208, + 0x2090000020a, + 0x20b0000020c, + 0x20d0000020e, + 0x20f00000210, + 0x21100000212, + 0x21300000214, + 0x21500000216, + 0x21700000218, + 0x2190000021a, + 0x21b0000021c, + 0x21d0000021e, + 0x21f00000220, + 0x22100000222, + 0x22300000224, + 0x22500000226, + 0x22700000228, + 0x2290000022a, + 0x22b0000022c, + 0x22d0000022e, + 0x22f00000230, + 0x23100000232, + 0x2330000023a, + 0x23c0000023d, + 0x23f00000241, + 0x24200000243, + 0x24700000248, + 0x2490000024a, + 0x24b0000024c, + 0x24d0000024e, + 0x24f000002b0, + 0x2b9000002c2, + 0x2c6000002d2, + 0x2ec000002ed, + 0x2ee000002ef, + 0x30000000340, + 0x34200000343, + 0x3460000034f, + 0x35000000370, + 0x37100000372, + 0x37300000374, + 0x37700000378, + 0x37b0000037e, + 0x39000000391, + 0x3ac000003cf, + 0x3d7000003d8, + 0x3d9000003da, + 0x3db000003dc, + 0x3dd000003de, + 0x3df000003e0, + 0x3e1000003e2, + 0x3e3000003e4, + 0x3e5000003e6, + 0x3e7000003e8, + 0x3e9000003ea, + 0x3eb000003ec, + 0x3ed000003ee, + 0x3ef000003f0, + 0x3f3000003f4, + 0x3f8000003f9, + 0x3fb000003fd, + 0x43000000460, + 0x46100000462, + 0x46300000464, + 0x46500000466, + 0x46700000468, + 0x4690000046a, + 0x46b0000046c, + 0x46d0000046e, + 0x46f00000470, + 0x47100000472, + 0x47300000474, + 0x47500000476, + 0x47700000478, + 0x4790000047a, + 0x47b0000047c, + 0x47d0000047e, + 0x47f00000480, + 0x48100000482, + 0x48300000488, + 0x48b0000048c, + 0x48d0000048e, + 0x48f00000490, + 0x49100000492, + 0x49300000494, + 0x49500000496, + 0x49700000498, + 0x4990000049a, + 0x49b0000049c, + 0x49d0000049e, + 0x49f000004a0, + 0x4a1000004a2, + 0x4a3000004a4, + 0x4a5000004a6, + 0x4a7000004a8, + 0x4a9000004aa, + 0x4ab000004ac, + 0x4ad000004ae, + 0x4af000004b0, + 0x4b1000004b2, + 0x4b3000004b4, + 0x4b5000004b6, + 0x4b7000004b8, + 0x4b9000004ba, + 0x4bb000004bc, + 0x4bd000004be, + 0x4bf000004c0, + 0x4c2000004c3, + 0x4c4000004c5, + 0x4c6000004c7, + 0x4c8000004c9, + 0x4ca000004cb, + 0x4cc000004cd, + 0x4ce000004d0, + 0x4d1000004d2, + 0x4d3000004d4, + 0x4d5000004d6, + 0x4d7000004d8, + 0x4d9000004da, + 0x4db000004dc, + 0x4dd000004de, + 0x4df000004e0, + 0x4e1000004e2, + 0x4e3000004e4, + 0x4e5000004e6, + 0x4e7000004e8, + 0x4e9000004ea, + 0x4eb000004ec, + 0x4ed000004ee, + 0x4ef000004f0, + 0x4f1000004f2, + 0x4f3000004f4, + 0x4f5000004f6, + 0x4f7000004f8, + 0x4f9000004fa, + 0x4fb000004fc, + 0x4fd000004fe, + 0x4ff00000500, + 0x50100000502, + 0x50300000504, + 0x50500000506, + 0x50700000508, + 0x5090000050a, + 0x50b0000050c, + 0x50d0000050e, + 0x50f00000510, + 0x51100000512, + 0x51300000514, + 0x51500000516, + 0x51700000518, + 0x5190000051a, + 0x51b0000051c, + 0x51d0000051e, + 0x51f00000520, + 0x52100000522, + 0x52300000524, + 0x52500000526, + 0x52700000528, + 0x5290000052a, + 0x52b0000052c, + 0x52d0000052e, + 0x52f00000530, + 0x5590000055a, + 0x56000000587, + 0x58800000589, + 0x591000005be, + 0x5bf000005c0, + 0x5c1000005c3, + 0x5c4000005c6, + 0x5c7000005c8, + 0x5d0000005eb, + 0x5ef000005f3, + 0x6100000061b, + 0x62000000640, + 0x64100000660, + 0x66e00000675, + 0x679000006d4, + 0x6d5000006dd, + 0x6df000006e9, + 0x6ea000006f0, + 0x6fa00000700, + 0x7100000074b, + 0x74d000007b2, + 0x7c0000007f6, + 0x7fd000007fe, + 0x8000000082e, + 0x8400000085c, + 0x8600000086b, + 0x87000000888, + 0x8890000088f, + 0x898000008e2, + 0x8e300000958, + 0x96000000964, + 0x96600000970, + 0x97100000984, + 0x9850000098d, + 0x98f00000991, + 0x993000009a9, + 0x9aa000009b1, + 0x9b2000009b3, + 0x9b6000009ba, + 0x9bc000009c5, + 0x9c7000009c9, + 0x9cb000009cf, + 0x9d7000009d8, + 0x9e0000009e4, + 0x9e6000009f2, + 0x9fc000009fd, + 0x9fe000009ff, + 0xa0100000a04, + 0xa0500000a0b, + 0xa0f00000a11, + 0xa1300000a29, + 0xa2a00000a31, + 0xa3200000a33, + 0xa3500000a36, + 0xa3800000a3a, + 0xa3c00000a3d, + 0xa3e00000a43, + 0xa4700000a49, + 0xa4b00000a4e, + 0xa5100000a52, + 0xa5c00000a5d, + 0xa6600000a76, + 0xa8100000a84, + 0xa8500000a8e, + 0xa8f00000a92, + 0xa9300000aa9, + 0xaaa00000ab1, + 0xab200000ab4, + 0xab500000aba, + 0xabc00000ac6, + 0xac700000aca, + 0xacb00000ace, + 0xad000000ad1, + 0xae000000ae4, + 0xae600000af0, + 0xaf900000b00, + 0xb0100000b04, + 0xb0500000b0d, + 0xb0f00000b11, + 0xb1300000b29, + 0xb2a00000b31, + 0xb3200000b34, + 0xb3500000b3a, + 0xb3c00000b45, + 0xb4700000b49, + 0xb4b00000b4e, + 0xb5500000b58, + 0xb5f00000b64, + 0xb6600000b70, + 0xb7100000b72, + 0xb8200000b84, + 0xb8500000b8b, + 0xb8e00000b91, + 0xb9200000b96, + 0xb9900000b9b, + 0xb9c00000b9d, + 0xb9e00000ba0, + 0xba300000ba5, + 0xba800000bab, + 0xbae00000bba, + 0xbbe00000bc3, + 0xbc600000bc9, + 0xbca00000bce, + 0xbd000000bd1, + 0xbd700000bd8, + 0xbe600000bf0, + 0xc0000000c0d, + 0xc0e00000c11, + 0xc1200000c29, + 0xc2a00000c3a, + 0xc3c00000c45, + 0xc4600000c49, + 0xc4a00000c4e, + 0xc5500000c57, + 0xc5800000c5b, + 0xc5d00000c5e, + 0xc6000000c64, + 0xc6600000c70, + 0xc8000000c84, + 0xc8500000c8d, + 0xc8e00000c91, + 0xc9200000ca9, + 0xcaa00000cb4, + 0xcb500000cba, + 0xcbc00000cc5, + 0xcc600000cc9, + 0xcca00000cce, + 0xcd500000cd7, + 0xcdd00000cdf, + 0xce000000ce4, + 0xce600000cf0, + 0xcf100000cf4, + 0xd0000000d0d, + 0xd0e00000d11, + 0xd1200000d45, + 0xd4600000d49, + 0xd4a00000d4f, + 0xd5400000d58, + 0xd5f00000d64, + 0xd6600000d70, + 0xd7a00000d80, + 0xd8100000d84, + 0xd8500000d97, + 0xd9a00000db2, + 0xdb300000dbc, + 0xdbd00000dbe, + 0xdc000000dc7, + 0xdca00000dcb, + 0xdcf00000dd5, + 0xdd600000dd7, + 0xdd800000de0, + 0xde600000df0, + 0xdf200000df4, + 0xe0100000e33, + 0xe3400000e3b, + 0xe4000000e4f, + 0xe5000000e5a, + 0xe8100000e83, + 0xe8400000e85, + 0xe8600000e8b, + 0xe8c00000ea4, + 0xea500000ea6, + 0xea700000eb3, + 0xeb400000ebe, + 0xec000000ec5, + 0xec600000ec7, + 0xec800000ecf, + 0xed000000eda, + 0xede00000ee0, + 0xf0000000f01, + 0xf0b00000f0c, + 0xf1800000f1a, + 0xf2000000f2a, + 0xf3500000f36, + 0xf3700000f38, + 0xf3900000f3a, + 0xf3e00000f43, + 0xf4400000f48, + 0xf4900000f4d, + 0xf4e00000f52, + 0xf5300000f57, + 0xf5800000f5c, + 0xf5d00000f69, + 0xf6a00000f6d, + 0xf7100000f73, + 0xf7400000f75, + 0xf7a00000f81, + 0xf8200000f85, + 0xf8600000f93, + 0xf9400000f98, + 0xf9900000f9d, + 0xf9e00000fa2, + 0xfa300000fa7, + 0xfa800000fac, + 0xfad00000fb9, + 0xfba00000fbd, + 0xfc600000fc7, + 0x10000000104a, + 0x10500000109e, + 0x10d0000010fb, + 0x10fd00001100, + 0x120000001249, + 0x124a0000124e, + 0x125000001257, + 0x125800001259, + 0x125a0000125e, + 0x126000001289, + 0x128a0000128e, + 0x1290000012b1, + 0x12b2000012b6, + 0x12b8000012bf, + 0x12c0000012c1, + 0x12c2000012c6, + 0x12c8000012d7, + 0x12d800001311, + 0x131200001316, + 0x13180000135b, + 0x135d00001360, + 0x138000001390, + 0x13a0000013f6, + 0x14010000166d, + 0x166f00001680, + 0x16810000169b, + 0x16a0000016eb, + 0x16f1000016f9, + 0x170000001716, + 0x171f00001735, + 0x174000001754, + 0x17600000176d, + 0x176e00001771, + 0x177200001774, + 0x1780000017b4, + 0x17b6000017d4, + 0x17d7000017d8, + 0x17dc000017de, + 0x17e0000017ea, + 0x18100000181a, + 0x182000001879, + 0x1880000018ab, + 0x18b0000018f6, + 0x19000000191f, + 0x19200000192c, + 0x19300000193c, + 0x19460000196e, + 0x197000001975, + 0x1980000019ac, + 0x19b0000019ca, + 0x19d0000019da, + 0x1a0000001a1c, + 0x1a2000001a5f, + 0x1a6000001a7d, + 0x1a7f00001a8a, + 0x1a9000001a9a, + 0x1aa700001aa8, + 0x1ab000001abe, + 0x1abf00001acf, + 0x1b0000001b4d, + 0x1b5000001b5a, + 0x1b6b00001b74, + 0x1b8000001bf4, + 0x1c0000001c38, + 0x1c4000001c4a, + 0x1c4d00001c7e, + 0x1cd000001cd3, + 0x1cd400001cfb, + 0x1d0000001d2c, + 0x1d2f00001d30, + 0x1d3b00001d3c, + 0x1d4e00001d4f, + 0x1d6b00001d78, + 0x1d7900001d9b, + 0x1dc000001e00, + 0x1e0100001e02, + 0x1e0300001e04, + 0x1e0500001e06, + 0x1e0700001e08, + 0x1e0900001e0a, + 0x1e0b00001e0c, + 0x1e0d00001e0e, + 0x1e0f00001e10, + 0x1e1100001e12, + 0x1e1300001e14, + 0x1e1500001e16, + 0x1e1700001e18, + 0x1e1900001e1a, + 0x1e1b00001e1c, + 0x1e1d00001e1e, + 0x1e1f00001e20, + 0x1e2100001e22, + 0x1e2300001e24, + 0x1e2500001e26, + 0x1e2700001e28, + 0x1e2900001e2a, + 0x1e2b00001e2c, + 0x1e2d00001e2e, + 0x1e2f00001e30, + 0x1e3100001e32, + 0x1e3300001e34, + 0x1e3500001e36, + 0x1e3700001e38, + 0x1e3900001e3a, + 0x1e3b00001e3c, + 0x1e3d00001e3e, + 0x1e3f00001e40, + 0x1e4100001e42, + 0x1e4300001e44, + 0x1e4500001e46, + 0x1e4700001e48, + 0x1e4900001e4a, + 0x1e4b00001e4c, + 0x1e4d00001e4e, + 0x1e4f00001e50, + 0x1e5100001e52, + 0x1e5300001e54, + 0x1e5500001e56, + 0x1e5700001e58, + 0x1e5900001e5a, + 0x1e5b00001e5c, + 0x1e5d00001e5e, + 0x1e5f00001e60, + 0x1e6100001e62, + 0x1e6300001e64, + 0x1e6500001e66, + 0x1e6700001e68, + 0x1e6900001e6a, + 0x1e6b00001e6c, + 0x1e6d00001e6e, + 0x1e6f00001e70, + 0x1e7100001e72, + 0x1e7300001e74, + 0x1e7500001e76, + 0x1e7700001e78, + 0x1e7900001e7a, + 0x1e7b00001e7c, + 0x1e7d00001e7e, + 0x1e7f00001e80, + 0x1e8100001e82, + 0x1e8300001e84, + 0x1e8500001e86, + 0x1e8700001e88, + 0x1e8900001e8a, + 0x1e8b00001e8c, + 0x1e8d00001e8e, + 0x1e8f00001e90, + 0x1e9100001e92, + 0x1e9300001e94, + 0x1e9500001e9a, + 0x1e9c00001e9e, + 0x1e9f00001ea0, + 0x1ea100001ea2, + 0x1ea300001ea4, + 0x1ea500001ea6, + 0x1ea700001ea8, + 0x1ea900001eaa, + 0x1eab00001eac, + 0x1ead00001eae, + 0x1eaf00001eb0, + 0x1eb100001eb2, + 0x1eb300001eb4, + 0x1eb500001eb6, + 0x1eb700001eb8, + 0x1eb900001eba, + 0x1ebb00001ebc, + 0x1ebd00001ebe, + 0x1ebf00001ec0, + 0x1ec100001ec2, + 0x1ec300001ec4, + 0x1ec500001ec6, + 0x1ec700001ec8, + 0x1ec900001eca, + 0x1ecb00001ecc, + 0x1ecd00001ece, + 0x1ecf00001ed0, + 0x1ed100001ed2, + 0x1ed300001ed4, + 0x1ed500001ed6, + 0x1ed700001ed8, + 0x1ed900001eda, + 0x1edb00001edc, + 0x1edd00001ede, + 0x1edf00001ee0, + 0x1ee100001ee2, + 0x1ee300001ee4, + 0x1ee500001ee6, + 0x1ee700001ee8, + 0x1ee900001eea, + 0x1eeb00001eec, + 0x1eed00001eee, + 0x1eef00001ef0, + 0x1ef100001ef2, + 0x1ef300001ef4, + 0x1ef500001ef6, + 0x1ef700001ef8, + 0x1ef900001efa, + 0x1efb00001efc, + 0x1efd00001efe, + 0x1eff00001f08, + 0x1f1000001f16, + 0x1f2000001f28, + 0x1f3000001f38, + 0x1f4000001f46, + 0x1f5000001f58, + 0x1f6000001f68, + 0x1f7000001f71, + 0x1f7200001f73, + 0x1f7400001f75, + 0x1f7600001f77, + 0x1f7800001f79, + 0x1f7a00001f7b, + 0x1f7c00001f7d, + 0x1fb000001fb2, + 0x1fb600001fb7, + 0x1fc600001fc7, + 0x1fd000001fd3, + 0x1fd600001fd8, + 0x1fe000001fe3, + 0x1fe400001fe8, + 0x1ff600001ff7, + 0x214e0000214f, + 0x218400002185, + 0x2c3000002c60, + 0x2c6100002c62, + 0x2c6500002c67, + 0x2c6800002c69, + 0x2c6a00002c6b, + 0x2c6c00002c6d, + 0x2c7100002c72, + 0x2c7300002c75, + 0x2c7600002c7c, + 0x2c8100002c82, + 0x2c8300002c84, + 0x2c8500002c86, + 0x2c8700002c88, + 0x2c8900002c8a, + 0x2c8b00002c8c, + 0x2c8d00002c8e, + 0x2c8f00002c90, + 0x2c9100002c92, + 0x2c9300002c94, + 0x2c9500002c96, + 0x2c9700002c98, + 0x2c9900002c9a, + 0x2c9b00002c9c, + 0x2c9d00002c9e, + 0x2c9f00002ca0, + 0x2ca100002ca2, + 0x2ca300002ca4, + 0x2ca500002ca6, + 0x2ca700002ca8, + 0x2ca900002caa, + 0x2cab00002cac, + 0x2cad00002cae, + 0x2caf00002cb0, + 0x2cb100002cb2, + 0x2cb300002cb4, + 0x2cb500002cb6, + 0x2cb700002cb8, + 0x2cb900002cba, + 0x2cbb00002cbc, + 0x2cbd00002cbe, + 0x2cbf00002cc0, + 0x2cc100002cc2, + 0x2cc300002cc4, + 0x2cc500002cc6, + 0x2cc700002cc8, + 0x2cc900002cca, + 0x2ccb00002ccc, + 0x2ccd00002cce, + 0x2ccf00002cd0, + 0x2cd100002cd2, + 0x2cd300002cd4, + 0x2cd500002cd6, + 0x2cd700002cd8, + 0x2cd900002cda, + 0x2cdb00002cdc, + 0x2cdd00002cde, + 0x2cdf00002ce0, + 0x2ce100002ce2, + 0x2ce300002ce5, + 0x2cec00002ced, + 0x2cee00002cf2, + 0x2cf300002cf4, + 0x2d0000002d26, + 0x2d2700002d28, + 0x2d2d00002d2e, + 0x2d3000002d68, + 0x2d7f00002d97, + 0x2da000002da7, + 0x2da800002daf, + 0x2db000002db7, + 0x2db800002dbf, + 0x2dc000002dc7, + 0x2dc800002dcf, + 0x2dd000002dd7, + 0x2dd800002ddf, + 0x2de000002e00, + 0x2e2f00002e30, + 0x300500003008, + 0x302a0000302e, + 0x303c0000303d, + 0x304100003097, + 0x30990000309b, + 0x309d0000309f, + 0x30a1000030fb, + 0x30fc000030ff, + 0x310500003130, + 0x31a0000031c0, + 0x31f000003200, + 0x340000004dc0, + 0x4e000000a48d, + 0xa4d00000a4fe, + 0xa5000000a60d, + 0xa6100000a62c, + 0xa6410000a642, + 0xa6430000a644, + 0xa6450000a646, + 0xa6470000a648, + 0xa6490000a64a, + 0xa64b0000a64c, + 0xa64d0000a64e, + 0xa64f0000a650, + 0xa6510000a652, + 0xa6530000a654, + 0xa6550000a656, + 0xa6570000a658, + 0xa6590000a65a, + 0xa65b0000a65c, + 0xa65d0000a65e, + 0xa65f0000a660, + 0xa6610000a662, + 0xa6630000a664, + 0xa6650000a666, + 0xa6670000a668, + 0xa6690000a66a, + 0xa66b0000a66c, + 0xa66d0000a670, + 0xa6740000a67e, + 0xa67f0000a680, + 0xa6810000a682, + 0xa6830000a684, + 0xa6850000a686, + 0xa6870000a688, + 0xa6890000a68a, + 0xa68b0000a68c, + 0xa68d0000a68e, + 0xa68f0000a690, + 0xa6910000a692, + 0xa6930000a694, + 0xa6950000a696, + 0xa6970000a698, + 0xa6990000a69a, + 0xa69b0000a69c, + 0xa69e0000a6e6, + 0xa6f00000a6f2, + 0xa7170000a720, + 0xa7230000a724, + 0xa7250000a726, + 0xa7270000a728, + 0xa7290000a72a, + 0xa72b0000a72c, + 0xa72d0000a72e, + 0xa72f0000a732, + 0xa7330000a734, + 0xa7350000a736, + 0xa7370000a738, + 0xa7390000a73a, + 0xa73b0000a73c, + 0xa73d0000a73e, + 0xa73f0000a740, + 0xa7410000a742, + 0xa7430000a744, + 0xa7450000a746, + 0xa7470000a748, + 0xa7490000a74a, + 0xa74b0000a74c, + 0xa74d0000a74e, + 0xa74f0000a750, + 0xa7510000a752, + 0xa7530000a754, + 0xa7550000a756, + 0xa7570000a758, + 0xa7590000a75a, + 0xa75b0000a75c, + 0xa75d0000a75e, + 0xa75f0000a760, + 0xa7610000a762, + 0xa7630000a764, + 0xa7650000a766, + 0xa7670000a768, + 0xa7690000a76a, + 0xa76b0000a76c, + 0xa76d0000a76e, + 0xa76f0000a770, + 0xa7710000a779, + 0xa77a0000a77b, + 0xa77c0000a77d, + 0xa77f0000a780, + 0xa7810000a782, + 0xa7830000a784, + 0xa7850000a786, + 0xa7870000a789, + 0xa78c0000a78d, + 0xa78e0000a790, + 0xa7910000a792, + 0xa7930000a796, + 0xa7970000a798, + 0xa7990000a79a, + 0xa79b0000a79c, + 0xa79d0000a79e, + 0xa79f0000a7a0, + 0xa7a10000a7a2, + 0xa7a30000a7a4, + 0xa7a50000a7a6, + 0xa7a70000a7a8, + 0xa7a90000a7aa, + 0xa7af0000a7b0, + 0xa7b50000a7b6, + 0xa7b70000a7b8, + 0xa7b90000a7ba, + 0xa7bb0000a7bc, + 0xa7bd0000a7be, + 0xa7bf0000a7c0, + 0xa7c10000a7c2, + 0xa7c30000a7c4, + 0xa7c80000a7c9, + 0xa7ca0000a7cb, + 0xa7d10000a7d2, + 0xa7d30000a7d4, + 0xa7d50000a7d6, + 0xa7d70000a7d8, + 0xa7d90000a7da, + 0xa7f60000a7f8, + 0xa7fa0000a828, + 0xa82c0000a82d, + 0xa8400000a874, + 0xa8800000a8c6, + 0xa8d00000a8da, + 0xa8e00000a8f8, + 0xa8fb0000a8fc, + 0xa8fd0000a92e, + 0xa9300000a954, + 0xa9800000a9c1, + 0xa9cf0000a9da, + 0xa9e00000a9ff, + 0xaa000000aa37, + 0xaa400000aa4e, + 0xaa500000aa5a, + 0xaa600000aa77, + 0xaa7a0000aac3, + 0xaadb0000aade, + 0xaae00000aaf0, + 0xaaf20000aaf7, + 0xab010000ab07, + 0xab090000ab0f, + 0xab110000ab17, + 0xab200000ab27, + 0xab280000ab2f, + 0xab300000ab5b, + 0xab600000ab69, + 0xabc00000abeb, + 0xabec0000abee, + 0xabf00000abfa, + 0xac000000d7a4, + 0xfa0e0000fa10, + 0xfa110000fa12, + 0xfa130000fa15, + 0xfa1f0000fa20, + 0xfa210000fa22, + 0xfa230000fa25, + 0xfa270000fa2a, + 0xfb1e0000fb1f, + 0xfe200000fe30, + 0xfe730000fe74, + 0x100000001000c, + 0x1000d00010027, + 0x100280001003b, + 0x1003c0001003e, + 0x1003f0001004e, + 0x100500001005e, + 0x10080000100fb, + 0x101fd000101fe, + 0x102800001029d, + 0x102a0000102d1, + 0x102e0000102e1, + 0x1030000010320, + 0x1032d00010341, + 0x103420001034a, + 0x103500001037b, + 0x103800001039e, + 0x103a0000103c4, + 0x103c8000103d0, + 0x104280001049e, + 0x104a0000104aa, + 0x104d8000104fc, + 0x1050000010528, + 0x1053000010564, + 0x10597000105a2, + 0x105a3000105b2, + 0x105b3000105ba, + 0x105bb000105bd, + 0x1060000010737, + 0x1074000010756, + 0x1076000010768, + 0x1078000010781, + 0x1080000010806, + 0x1080800010809, + 0x1080a00010836, + 0x1083700010839, + 0x1083c0001083d, + 0x1083f00010856, + 0x1086000010877, + 0x108800001089f, + 0x108e0000108f3, + 0x108f4000108f6, + 0x1090000010916, + 0x109200001093a, + 0x10980000109b8, + 0x109be000109c0, + 0x10a0000010a04, + 0x10a0500010a07, + 0x10a0c00010a14, + 0x10a1500010a18, + 0x10a1900010a36, + 0x10a3800010a3b, + 0x10a3f00010a40, + 0x10a6000010a7d, + 0x10a8000010a9d, + 0x10ac000010ac8, + 0x10ac900010ae7, + 0x10b0000010b36, + 0x10b4000010b56, + 0x10b6000010b73, + 0x10b8000010b92, + 0x10c0000010c49, + 0x10cc000010cf3, + 0x10d0000010d28, + 0x10d3000010d3a, + 0x10e8000010eaa, + 0x10eab00010ead, + 0x10eb000010eb2, + 0x10efd00010f1d, + 0x10f2700010f28, + 0x10f3000010f51, + 0x10f7000010f86, + 0x10fb000010fc5, + 0x10fe000010ff7, + 0x1100000011047, + 0x1106600011076, + 0x1107f000110bb, + 0x110c2000110c3, + 0x110d0000110e9, + 0x110f0000110fa, + 0x1110000011135, + 0x1113600011140, + 0x1114400011148, + 0x1115000011174, + 0x1117600011177, + 0x11180000111c5, + 0x111c9000111cd, + 0x111ce000111db, + 0x111dc000111dd, + 0x1120000011212, + 0x1121300011238, + 0x1123e00011242, + 0x1128000011287, + 0x1128800011289, + 0x1128a0001128e, + 0x1128f0001129e, + 0x1129f000112a9, + 0x112b0000112eb, + 0x112f0000112fa, + 0x1130000011304, + 0x113050001130d, + 0x1130f00011311, + 0x1131300011329, + 0x1132a00011331, + 0x1133200011334, + 0x113350001133a, + 0x1133b00011345, + 0x1134700011349, + 0x1134b0001134e, + 0x1135000011351, + 0x1135700011358, + 0x1135d00011364, + 0x113660001136d, + 0x1137000011375, + 0x114000001144b, + 0x114500001145a, + 0x1145e00011462, + 0x11480000114c6, + 0x114c7000114c8, + 0x114d0000114da, + 0x11580000115b6, + 0x115b8000115c1, + 0x115d8000115de, + 0x1160000011641, + 0x1164400011645, + 0x116500001165a, + 0x11680000116b9, + 0x116c0000116ca, + 0x117000001171b, + 0x1171d0001172c, + 0x117300001173a, + 0x1174000011747, + 0x118000001183b, + 0x118c0000118ea, + 0x118ff00011907, + 0x119090001190a, + 0x1190c00011914, + 0x1191500011917, + 0x1191800011936, + 0x1193700011939, + 0x1193b00011944, + 0x119500001195a, + 0x119a0000119a8, + 0x119aa000119d8, + 0x119da000119e2, + 0x119e3000119e5, + 0x11a0000011a3f, + 0x11a4700011a48, + 0x11a5000011a9a, + 0x11a9d00011a9e, + 0x11ab000011af9, + 0x11c0000011c09, + 0x11c0a00011c37, + 0x11c3800011c41, + 0x11c5000011c5a, + 0x11c7200011c90, + 0x11c9200011ca8, + 0x11ca900011cb7, + 0x11d0000011d07, + 0x11d0800011d0a, + 0x11d0b00011d37, + 0x11d3a00011d3b, + 0x11d3c00011d3e, + 0x11d3f00011d48, + 0x11d5000011d5a, + 0x11d6000011d66, + 0x11d6700011d69, + 0x11d6a00011d8f, + 0x11d9000011d92, + 0x11d9300011d99, + 0x11da000011daa, + 0x11ee000011ef7, + 0x11f0000011f11, + 0x11f1200011f3b, + 0x11f3e00011f43, + 0x11f5000011f5a, + 0x11fb000011fb1, + 0x120000001239a, + 0x1248000012544, + 0x12f9000012ff1, + 0x1300000013430, + 0x1344000013456, + 0x1440000014647, + 0x1680000016a39, + 0x16a4000016a5f, + 0x16a6000016a6a, + 0x16a7000016abf, + 0x16ac000016aca, + 0x16ad000016aee, + 0x16af000016af5, + 0x16b0000016b37, + 0x16b4000016b44, + 0x16b5000016b5a, + 0x16b6300016b78, + 0x16b7d00016b90, + 0x16e6000016e80, + 0x16f0000016f4b, + 0x16f4f00016f88, + 0x16f8f00016fa0, + 0x16fe000016fe2, + 0x16fe300016fe5, + 0x16ff000016ff2, + 0x17000000187f8, + 0x1880000018cd6, + 0x18d0000018d09, + 0x1aff00001aff4, + 0x1aff50001affc, + 0x1affd0001afff, + 0x1b0000001b123, + 0x1b1320001b133, + 0x1b1500001b153, + 0x1b1550001b156, + 0x1b1640001b168, + 0x1b1700001b2fc, + 0x1bc000001bc6b, + 0x1bc700001bc7d, + 0x1bc800001bc89, + 0x1bc900001bc9a, + 0x1bc9d0001bc9f, + 0x1cf000001cf2e, + 0x1cf300001cf47, + 0x1da000001da37, + 0x1da3b0001da6d, + 0x1da750001da76, + 0x1da840001da85, + 0x1da9b0001daa0, + 0x1daa10001dab0, + 0x1df000001df1f, + 0x1df250001df2b, + 0x1e0000001e007, + 0x1e0080001e019, + 0x1e01b0001e022, + 0x1e0230001e025, + 0x1e0260001e02b, + 0x1e08f0001e090, + 0x1e1000001e12d, + 0x1e1300001e13e, + 0x1e1400001e14a, + 0x1e14e0001e14f, + 0x1e2900001e2af, + 0x1e2c00001e2fa, + 0x1e4d00001e4fa, + 0x1e7e00001e7e7, + 0x1e7e80001e7ec, + 0x1e7ed0001e7ef, + 0x1e7f00001e7ff, + 0x1e8000001e8c5, + 0x1e8d00001e8d7, + 0x1e9220001e94c, + 0x1e9500001e95a, + 0x200000002a6e0, + 0x2a7000002b73a, + 0x2b7400002b81e, + 0x2b8200002cea2, + 0x2ceb00002ebe1, + 0x2ebf00002ee5e, + 0x300000003134b, + 0x31350000323b0, + ), + 'CONTEXTJ': ( + 0x200c0000200e, + ), + 'CONTEXTO': ( + 0xb7000000b8, + 0x37500000376, + 0x5f3000005f5, + 0x6600000066a, + 0x6f0000006fa, + 0x30fb000030fc, + ), +} diff --git a/venv/lib/python3.12/site-packages/idna/intranges.py b/venv/lib/python3.12/site-packages/idna/intranges.py new file mode 100644 index 0000000..6a43b04 --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna/intranges.py @@ -0,0 +1,54 @@ +""" +Given a list of integers, made up of (hopefully) a small number of long runs +of consecutive integers, compute a representation of the form +((start1, end1), (start2, end2) ...). Then answer the question "was x present +in the original list?" in time O(log(# runs)). +""" + +import bisect +from typing import List, Tuple + +def intranges_from_list(list_: List[int]) -> Tuple[int, ...]: + """Represent a list of integers as a sequence of ranges: + ((start_0, end_0), (start_1, end_1), ...), such that the original + integers are exactly those x such that start_i <= x < end_i for some i. + + Ranges are encoded as single integers (start << 32 | end), not as tuples. + """ + + sorted_list = sorted(list_) + ranges = [] + last_write = -1 + for i in range(len(sorted_list)): + if i+1 < len(sorted_list): + if sorted_list[i] == sorted_list[i+1]-1: + continue + current_range = sorted_list[last_write+1:i+1] + ranges.append(_encode_range(current_range[0], current_range[-1] + 1)) + last_write = i + + return tuple(ranges) + +def _encode_range(start: int, end: int) -> int: + return (start << 32) | end + +def _decode_range(r: int) -> Tuple[int, int]: + return (r >> 32), (r & ((1 << 32) - 1)) + + +def intranges_contain(int_: int, ranges: Tuple[int, ...]) -> bool: + """Determine if `int_` falls into one of the ranges in `ranges`.""" + tuple_ = _encode_range(int_, 0) + pos = bisect.bisect_left(ranges, tuple_) + # we could be immediately ahead of a tuple (start, end) + # with start < int_ <= end + if pos > 0: + left, right = _decode_range(ranges[pos-1]) + if left <= int_ < right: + return True + # or we could be immediately behind a tuple (int_, end) + if pos < len(ranges): + left, _ = _decode_range(ranges[pos]) + if left == int_: + return True + return False diff --git a/venv/lib/python3.12/site-packages/idna/package_data.py b/venv/lib/python3.12/site-packages/idna/package_data.py new file mode 100644 index 0000000..ed81113 --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna/package_data.py @@ -0,0 +1,2 @@ +__version__ = '3.7' + diff --git a/venv/lib/python3.12/site-packages/idna/py.typed b/venv/lib/python3.12/site-packages/idna/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/idna/uts46data.py b/venv/lib/python3.12/site-packages/idna/uts46data.py new file mode 100644 index 0000000..6a1eddb --- /dev/null +++ b/venv/lib/python3.12/site-packages/idna/uts46data.py @@ -0,0 +1,8598 @@ +# This file is automatically generated by tools/idna-data +# vim: set fileencoding=utf-8 : + +from typing import List, Tuple, Union + + +"""IDNA Mapping Table from UTS46.""" + + +__version__ = '15.1.0' +def _seg_0() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x0, '3'), + (0x1, '3'), + (0x2, '3'), + (0x3, '3'), + (0x4, '3'), + (0x5, '3'), + (0x6, '3'), + (0x7, '3'), + (0x8, '3'), + (0x9, '3'), + (0xA, '3'), + (0xB, '3'), + (0xC, '3'), + (0xD, '3'), + (0xE, '3'), + (0xF, '3'), + (0x10, '3'), + (0x11, '3'), + (0x12, '3'), + (0x13, '3'), + (0x14, '3'), + (0x15, '3'), + (0x16, '3'), + (0x17, '3'), + (0x18, '3'), + (0x19, '3'), + (0x1A, '3'), + (0x1B, '3'), + (0x1C, '3'), + (0x1D, '3'), + (0x1E, '3'), + (0x1F, '3'), + (0x20, '3'), + (0x21, '3'), + (0x22, '3'), + (0x23, '3'), + (0x24, '3'), + (0x25, '3'), + (0x26, '3'), + (0x27, '3'), + (0x28, '3'), + (0x29, '3'), + (0x2A, '3'), + (0x2B, '3'), + (0x2C, '3'), + (0x2D, 'V'), + (0x2E, 'V'), + (0x2F, '3'), + (0x30, 'V'), + (0x31, 'V'), + (0x32, 'V'), + (0x33, 'V'), + (0x34, 'V'), + (0x35, 'V'), + (0x36, 'V'), + (0x37, 'V'), + (0x38, 'V'), + (0x39, 'V'), + (0x3A, '3'), + (0x3B, '3'), + (0x3C, '3'), + (0x3D, '3'), + (0x3E, '3'), + (0x3F, '3'), + (0x40, '3'), + (0x41, 'M', 'a'), + (0x42, 'M', 'b'), + (0x43, 'M', 'c'), + (0x44, 'M', 'd'), + (0x45, 'M', 'e'), + (0x46, 'M', 'f'), + (0x47, 'M', 'g'), + (0x48, 'M', 'h'), + (0x49, 'M', 'i'), + (0x4A, 'M', 'j'), + (0x4B, 'M', 'k'), + (0x4C, 'M', 'l'), + (0x4D, 'M', 'm'), + (0x4E, 'M', 'n'), + (0x4F, 'M', 'o'), + (0x50, 'M', 'p'), + (0x51, 'M', 'q'), + (0x52, 'M', 'r'), + (0x53, 'M', 's'), + (0x54, 'M', 't'), + (0x55, 'M', 'u'), + (0x56, 'M', 'v'), + (0x57, 'M', 'w'), + (0x58, 'M', 'x'), + (0x59, 'M', 'y'), + (0x5A, 'M', 'z'), + (0x5B, '3'), + (0x5C, '3'), + (0x5D, '3'), + (0x5E, '3'), + (0x5F, '3'), + (0x60, '3'), + (0x61, 'V'), + (0x62, 'V'), + (0x63, 'V'), + ] + +def _seg_1() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x64, 'V'), + (0x65, 'V'), + (0x66, 'V'), + (0x67, 'V'), + (0x68, 'V'), + (0x69, 'V'), + (0x6A, 'V'), + (0x6B, 'V'), + (0x6C, 'V'), + (0x6D, 'V'), + (0x6E, 'V'), + (0x6F, 'V'), + (0x70, 'V'), + (0x71, 'V'), + (0x72, 'V'), + (0x73, 'V'), + (0x74, 'V'), + (0x75, 'V'), + (0x76, 'V'), + (0x77, 'V'), + (0x78, 'V'), + (0x79, 'V'), + (0x7A, 'V'), + (0x7B, '3'), + (0x7C, '3'), + (0x7D, '3'), + (0x7E, '3'), + (0x7F, '3'), + (0x80, 'X'), + (0x81, 'X'), + (0x82, 'X'), + (0x83, 'X'), + (0x84, 'X'), + (0x85, 'X'), + (0x86, 'X'), + (0x87, 'X'), + (0x88, 'X'), + (0x89, 'X'), + (0x8A, 'X'), + (0x8B, 'X'), + (0x8C, 'X'), + (0x8D, 'X'), + (0x8E, 'X'), + (0x8F, 'X'), + (0x90, 'X'), + (0x91, 'X'), + (0x92, 'X'), + (0x93, 'X'), + (0x94, 'X'), + (0x95, 'X'), + (0x96, 'X'), + (0x97, 'X'), + (0x98, 'X'), + (0x99, 'X'), + (0x9A, 'X'), + (0x9B, 'X'), + (0x9C, 'X'), + (0x9D, 'X'), + (0x9E, 'X'), + (0x9F, 'X'), + (0xA0, '3', ' '), + (0xA1, 'V'), + (0xA2, 'V'), + (0xA3, 'V'), + (0xA4, 'V'), + (0xA5, 'V'), + (0xA6, 'V'), + (0xA7, 'V'), + (0xA8, '3', ' ̈'), + (0xA9, 'V'), + (0xAA, 'M', 'a'), + (0xAB, 'V'), + (0xAC, 'V'), + (0xAD, 'I'), + (0xAE, 'V'), + (0xAF, '3', ' ̄'), + (0xB0, 'V'), + (0xB1, 'V'), + (0xB2, 'M', '2'), + (0xB3, 'M', '3'), + (0xB4, '3', ' ́'), + (0xB5, 'M', 'μ'), + (0xB6, 'V'), + (0xB7, 'V'), + (0xB8, '3', ' ̧'), + (0xB9, 'M', '1'), + (0xBA, 'M', 'o'), + (0xBB, 'V'), + (0xBC, 'M', '1⁄4'), + (0xBD, 'M', '1⁄2'), + (0xBE, 'M', '3⁄4'), + (0xBF, 'V'), + (0xC0, 'M', 'à'), + (0xC1, 'M', 'á'), + (0xC2, 'M', 'â'), + (0xC3, 'M', 'ã'), + (0xC4, 'M', 'ä'), + (0xC5, 'M', 'å'), + (0xC6, 'M', 'æ'), + (0xC7, 'M', 'ç'), + ] + +def _seg_2() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xC8, 'M', 'è'), + (0xC9, 'M', 'é'), + (0xCA, 'M', 'ê'), + (0xCB, 'M', 'ë'), + (0xCC, 'M', 'ì'), + (0xCD, 'M', 'í'), + (0xCE, 'M', 'î'), + (0xCF, 'M', 'ï'), + (0xD0, 'M', 'ð'), + (0xD1, 'M', 'ñ'), + (0xD2, 'M', 'ò'), + (0xD3, 'M', 'ó'), + (0xD4, 'M', 'ô'), + (0xD5, 'M', 'õ'), + (0xD6, 'M', 'ö'), + (0xD7, 'V'), + (0xD8, 'M', 'ø'), + (0xD9, 'M', 'ù'), + (0xDA, 'M', 'ú'), + (0xDB, 'M', 'û'), + (0xDC, 'M', 'ü'), + (0xDD, 'M', 'ý'), + (0xDE, 'M', 'þ'), + (0xDF, 'D', 'ss'), + (0xE0, 'V'), + (0xE1, 'V'), + (0xE2, 'V'), + (0xE3, 'V'), + (0xE4, 'V'), + (0xE5, 'V'), + (0xE6, 'V'), + (0xE7, 'V'), + (0xE8, 'V'), + (0xE9, 'V'), + (0xEA, 'V'), + (0xEB, 'V'), + (0xEC, 'V'), + (0xED, 'V'), + (0xEE, 'V'), + (0xEF, 'V'), + (0xF0, 'V'), + (0xF1, 'V'), + (0xF2, 'V'), + (0xF3, 'V'), + (0xF4, 'V'), + (0xF5, 'V'), + (0xF6, 'V'), + (0xF7, 'V'), + (0xF8, 'V'), + (0xF9, 'V'), + (0xFA, 'V'), + (0xFB, 'V'), + (0xFC, 'V'), + (0xFD, 'V'), + (0xFE, 'V'), + (0xFF, 'V'), + (0x100, 'M', 'ā'), + (0x101, 'V'), + (0x102, 'M', 'ă'), + (0x103, 'V'), + (0x104, 'M', 'ą'), + (0x105, 'V'), + (0x106, 'M', 'ć'), + (0x107, 'V'), + (0x108, 'M', 'ĉ'), + (0x109, 'V'), + (0x10A, 'M', 'ċ'), + (0x10B, 'V'), + (0x10C, 'M', 'č'), + (0x10D, 'V'), + (0x10E, 'M', 'ď'), + (0x10F, 'V'), + (0x110, 'M', 'đ'), + (0x111, 'V'), + (0x112, 'M', 'ē'), + (0x113, 'V'), + (0x114, 'M', 'ĕ'), + (0x115, 'V'), + (0x116, 'M', 'ė'), + (0x117, 'V'), + (0x118, 'M', 'ę'), + (0x119, 'V'), + (0x11A, 'M', 'ě'), + (0x11B, 'V'), + (0x11C, 'M', 'ĝ'), + (0x11D, 'V'), + (0x11E, 'M', 'ğ'), + (0x11F, 'V'), + (0x120, 'M', 'ġ'), + (0x121, 'V'), + (0x122, 'M', 'ģ'), + (0x123, 'V'), + (0x124, 'M', 'ĥ'), + (0x125, 'V'), + (0x126, 'M', 'ħ'), + (0x127, 'V'), + (0x128, 'M', 'ĩ'), + (0x129, 'V'), + (0x12A, 'M', 'ī'), + (0x12B, 'V'), + ] + +def _seg_3() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x12C, 'M', 'ĭ'), + (0x12D, 'V'), + (0x12E, 'M', 'į'), + (0x12F, 'V'), + (0x130, 'M', 'i̇'), + (0x131, 'V'), + (0x132, 'M', 'ij'), + (0x134, 'M', 'ĵ'), + (0x135, 'V'), + (0x136, 'M', 'ķ'), + (0x137, 'V'), + (0x139, 'M', 'ĺ'), + (0x13A, 'V'), + (0x13B, 'M', 'ļ'), + (0x13C, 'V'), + (0x13D, 'M', 'ľ'), + (0x13E, 'V'), + (0x13F, 'M', 'l·'), + (0x141, 'M', 'ł'), + (0x142, 'V'), + (0x143, 'M', 'ń'), + (0x144, 'V'), + (0x145, 'M', 'ņ'), + (0x146, 'V'), + (0x147, 'M', 'ň'), + (0x148, 'V'), + (0x149, 'M', 'ʼn'), + (0x14A, 'M', 'ŋ'), + (0x14B, 'V'), + (0x14C, 'M', 'ō'), + (0x14D, 'V'), + (0x14E, 'M', 'ŏ'), + (0x14F, 'V'), + (0x150, 'M', 'ő'), + (0x151, 'V'), + (0x152, 'M', 'œ'), + (0x153, 'V'), + (0x154, 'M', 'ŕ'), + (0x155, 'V'), + (0x156, 'M', 'ŗ'), + (0x157, 'V'), + (0x158, 'M', 'ř'), + (0x159, 'V'), + (0x15A, 'M', 'ś'), + (0x15B, 'V'), + (0x15C, 'M', 'ŝ'), + (0x15D, 'V'), + (0x15E, 'M', 'ş'), + (0x15F, 'V'), + (0x160, 'M', 'š'), + (0x161, 'V'), + (0x162, 'M', 'ţ'), + (0x163, 'V'), + (0x164, 'M', 'ť'), + (0x165, 'V'), + (0x166, 'M', 'ŧ'), + (0x167, 'V'), + (0x168, 'M', 'ũ'), + (0x169, 'V'), + (0x16A, 'M', 'ū'), + (0x16B, 'V'), + (0x16C, 'M', 'ŭ'), + (0x16D, 'V'), + (0x16E, 'M', 'ů'), + (0x16F, 'V'), + (0x170, 'M', 'ű'), + (0x171, 'V'), + (0x172, 'M', 'ų'), + (0x173, 'V'), + (0x174, 'M', 'ŵ'), + (0x175, 'V'), + (0x176, 'M', 'ŷ'), + (0x177, 'V'), + (0x178, 'M', 'ÿ'), + (0x179, 'M', 'ź'), + (0x17A, 'V'), + (0x17B, 'M', 'ż'), + (0x17C, 'V'), + (0x17D, 'M', 'ž'), + (0x17E, 'V'), + (0x17F, 'M', 's'), + (0x180, 'V'), + (0x181, 'M', 'ɓ'), + (0x182, 'M', 'ƃ'), + (0x183, 'V'), + (0x184, 'M', 'ƅ'), + (0x185, 'V'), + (0x186, 'M', 'ɔ'), + (0x187, 'M', 'ƈ'), + (0x188, 'V'), + (0x189, 'M', 'ɖ'), + (0x18A, 'M', 'ɗ'), + (0x18B, 'M', 'ƌ'), + (0x18C, 'V'), + (0x18E, 'M', 'ǝ'), + (0x18F, 'M', 'ə'), + (0x190, 'M', 'ɛ'), + (0x191, 'M', 'ƒ'), + (0x192, 'V'), + (0x193, 'M', 'ɠ'), + ] + +def _seg_4() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x194, 'M', 'ɣ'), + (0x195, 'V'), + (0x196, 'M', 'ɩ'), + (0x197, 'M', 'ɨ'), + (0x198, 'M', 'ƙ'), + (0x199, 'V'), + (0x19C, 'M', 'ɯ'), + (0x19D, 'M', 'ɲ'), + (0x19E, 'V'), + (0x19F, 'M', 'ɵ'), + (0x1A0, 'M', 'ơ'), + (0x1A1, 'V'), + (0x1A2, 'M', 'ƣ'), + (0x1A3, 'V'), + (0x1A4, 'M', 'ƥ'), + (0x1A5, 'V'), + (0x1A6, 'M', 'ʀ'), + (0x1A7, 'M', 'ƨ'), + (0x1A8, 'V'), + (0x1A9, 'M', 'ʃ'), + (0x1AA, 'V'), + (0x1AC, 'M', 'ƭ'), + (0x1AD, 'V'), + (0x1AE, 'M', 'ʈ'), + (0x1AF, 'M', 'ư'), + (0x1B0, 'V'), + (0x1B1, 'M', 'ʊ'), + (0x1B2, 'M', 'ʋ'), + (0x1B3, 'M', 'ƴ'), + (0x1B4, 'V'), + (0x1B5, 'M', 'ƶ'), + (0x1B6, 'V'), + (0x1B7, 'M', 'ʒ'), + (0x1B8, 'M', 'ƹ'), + (0x1B9, 'V'), + (0x1BC, 'M', 'ƽ'), + (0x1BD, 'V'), + (0x1C4, 'M', 'dž'), + (0x1C7, 'M', 'lj'), + (0x1CA, 'M', 'nj'), + (0x1CD, 'M', 'ǎ'), + (0x1CE, 'V'), + (0x1CF, 'M', 'ǐ'), + (0x1D0, 'V'), + (0x1D1, 'M', 'ǒ'), + (0x1D2, 'V'), + (0x1D3, 'M', 'ǔ'), + (0x1D4, 'V'), + (0x1D5, 'M', 'ǖ'), + (0x1D6, 'V'), + (0x1D7, 'M', 'ǘ'), + (0x1D8, 'V'), + (0x1D9, 'M', 'ǚ'), + (0x1DA, 'V'), + (0x1DB, 'M', 'ǜ'), + (0x1DC, 'V'), + (0x1DE, 'M', 'ǟ'), + (0x1DF, 'V'), + (0x1E0, 'M', 'ǡ'), + (0x1E1, 'V'), + (0x1E2, 'M', 'ǣ'), + (0x1E3, 'V'), + (0x1E4, 'M', 'ǥ'), + (0x1E5, 'V'), + (0x1E6, 'M', 'ǧ'), + (0x1E7, 'V'), + (0x1E8, 'M', 'ǩ'), + (0x1E9, 'V'), + (0x1EA, 'M', 'ǫ'), + (0x1EB, 'V'), + (0x1EC, 'M', 'ǭ'), + (0x1ED, 'V'), + (0x1EE, 'M', 'ǯ'), + (0x1EF, 'V'), + (0x1F1, 'M', 'dz'), + (0x1F4, 'M', 'ǵ'), + (0x1F5, 'V'), + (0x1F6, 'M', 'ƕ'), + (0x1F7, 'M', 'ƿ'), + (0x1F8, 'M', 'ǹ'), + (0x1F9, 'V'), + (0x1FA, 'M', 'ǻ'), + (0x1FB, 'V'), + (0x1FC, 'M', 'ǽ'), + (0x1FD, 'V'), + (0x1FE, 'M', 'ǿ'), + (0x1FF, 'V'), + (0x200, 'M', 'ȁ'), + (0x201, 'V'), + (0x202, 'M', 'ȃ'), + (0x203, 'V'), + (0x204, 'M', 'ȅ'), + (0x205, 'V'), + (0x206, 'M', 'ȇ'), + (0x207, 'V'), + (0x208, 'M', 'ȉ'), + (0x209, 'V'), + (0x20A, 'M', 'ȋ'), + (0x20B, 'V'), + (0x20C, 'M', 'ȍ'), + ] + +def _seg_5() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x20D, 'V'), + (0x20E, 'M', 'ȏ'), + (0x20F, 'V'), + (0x210, 'M', 'ȑ'), + (0x211, 'V'), + (0x212, 'M', 'ȓ'), + (0x213, 'V'), + (0x214, 'M', 'ȕ'), + (0x215, 'V'), + (0x216, 'M', 'ȗ'), + (0x217, 'V'), + (0x218, 'M', 'ș'), + (0x219, 'V'), + (0x21A, 'M', 'ț'), + (0x21B, 'V'), + (0x21C, 'M', 'ȝ'), + (0x21D, 'V'), + (0x21E, 'M', 'ȟ'), + (0x21F, 'V'), + (0x220, 'M', 'ƞ'), + (0x221, 'V'), + (0x222, 'M', 'ȣ'), + (0x223, 'V'), + (0x224, 'M', 'ȥ'), + (0x225, 'V'), + (0x226, 'M', 'ȧ'), + (0x227, 'V'), + (0x228, 'M', 'ȩ'), + (0x229, 'V'), + (0x22A, 'M', 'ȫ'), + (0x22B, 'V'), + (0x22C, 'M', 'ȭ'), + (0x22D, 'V'), + (0x22E, 'M', 'ȯ'), + (0x22F, 'V'), + (0x230, 'M', 'ȱ'), + (0x231, 'V'), + (0x232, 'M', 'ȳ'), + (0x233, 'V'), + (0x23A, 'M', 'ⱥ'), + (0x23B, 'M', 'ȼ'), + (0x23C, 'V'), + (0x23D, 'M', 'ƚ'), + (0x23E, 'M', 'ⱦ'), + (0x23F, 'V'), + (0x241, 'M', 'ɂ'), + (0x242, 'V'), + (0x243, 'M', 'ƀ'), + (0x244, 'M', 'ʉ'), + (0x245, 'M', 'ʌ'), + (0x246, 'M', 'ɇ'), + (0x247, 'V'), + (0x248, 'M', 'ɉ'), + (0x249, 'V'), + (0x24A, 'M', 'ɋ'), + (0x24B, 'V'), + (0x24C, 'M', 'ɍ'), + (0x24D, 'V'), + (0x24E, 'M', 'ɏ'), + (0x24F, 'V'), + (0x2B0, 'M', 'h'), + (0x2B1, 'M', 'ɦ'), + (0x2B2, 'M', 'j'), + (0x2B3, 'M', 'r'), + (0x2B4, 'M', 'ɹ'), + (0x2B5, 'M', 'ɻ'), + (0x2B6, 'M', 'ʁ'), + (0x2B7, 'M', 'w'), + (0x2B8, 'M', 'y'), + (0x2B9, 'V'), + (0x2D8, '3', ' ̆'), + (0x2D9, '3', ' ̇'), + (0x2DA, '3', ' ̊'), + (0x2DB, '3', ' ̨'), + (0x2DC, '3', ' ̃'), + (0x2DD, '3', ' ̋'), + (0x2DE, 'V'), + (0x2E0, 'M', 'ɣ'), + (0x2E1, 'M', 'l'), + (0x2E2, 'M', 's'), + (0x2E3, 'M', 'x'), + (0x2E4, 'M', 'ʕ'), + (0x2E5, 'V'), + (0x340, 'M', '̀'), + (0x341, 'M', '́'), + (0x342, 'V'), + (0x343, 'M', '̓'), + (0x344, 'M', '̈́'), + (0x345, 'M', 'ι'), + (0x346, 'V'), + (0x34F, 'I'), + (0x350, 'V'), + (0x370, 'M', 'ͱ'), + (0x371, 'V'), + (0x372, 'M', 'ͳ'), + (0x373, 'V'), + (0x374, 'M', 'ʹ'), + (0x375, 'V'), + (0x376, 'M', 'ͷ'), + (0x377, 'V'), + ] + +def _seg_6() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x378, 'X'), + (0x37A, '3', ' ι'), + (0x37B, 'V'), + (0x37E, '3', ';'), + (0x37F, 'M', 'ϳ'), + (0x380, 'X'), + (0x384, '3', ' ́'), + (0x385, '3', ' ̈́'), + (0x386, 'M', 'ά'), + (0x387, 'M', '·'), + (0x388, 'M', 'έ'), + (0x389, 'M', 'ή'), + (0x38A, 'M', 'ί'), + (0x38B, 'X'), + (0x38C, 'M', 'ό'), + (0x38D, 'X'), + (0x38E, 'M', 'ύ'), + (0x38F, 'M', 'ώ'), + (0x390, 'V'), + (0x391, 'M', 'α'), + (0x392, 'M', 'β'), + (0x393, 'M', 'γ'), + (0x394, 'M', 'δ'), + (0x395, 'M', 'ε'), + (0x396, 'M', 'ζ'), + (0x397, 'M', 'η'), + (0x398, 'M', 'θ'), + (0x399, 'M', 'ι'), + (0x39A, 'M', 'κ'), + (0x39B, 'M', 'λ'), + (0x39C, 'M', 'μ'), + (0x39D, 'M', 'ν'), + (0x39E, 'M', 'ξ'), + (0x39F, 'M', 'ο'), + (0x3A0, 'M', 'π'), + (0x3A1, 'M', 'ρ'), + (0x3A2, 'X'), + (0x3A3, 'M', 'σ'), + (0x3A4, 'M', 'τ'), + (0x3A5, 'M', 'υ'), + (0x3A6, 'M', 'φ'), + (0x3A7, 'M', 'χ'), + (0x3A8, 'M', 'ψ'), + (0x3A9, 'M', 'ω'), + (0x3AA, 'M', 'ϊ'), + (0x3AB, 'M', 'ϋ'), + (0x3AC, 'V'), + (0x3C2, 'D', 'σ'), + (0x3C3, 'V'), + (0x3CF, 'M', 'ϗ'), + (0x3D0, 'M', 'β'), + (0x3D1, 'M', 'θ'), + (0x3D2, 'M', 'υ'), + (0x3D3, 'M', 'ύ'), + (0x3D4, 'M', 'ϋ'), + (0x3D5, 'M', 'φ'), + (0x3D6, 'M', 'π'), + (0x3D7, 'V'), + (0x3D8, 'M', 'ϙ'), + (0x3D9, 'V'), + (0x3DA, 'M', 'ϛ'), + (0x3DB, 'V'), + (0x3DC, 'M', 'ϝ'), + (0x3DD, 'V'), + (0x3DE, 'M', 'ϟ'), + (0x3DF, 'V'), + (0x3E0, 'M', 'ϡ'), + (0x3E1, 'V'), + (0x3E2, 'M', 'ϣ'), + (0x3E3, 'V'), + (0x3E4, 'M', 'ϥ'), + (0x3E5, 'V'), + (0x3E6, 'M', 'ϧ'), + (0x3E7, 'V'), + (0x3E8, 'M', 'ϩ'), + (0x3E9, 'V'), + (0x3EA, 'M', 'ϫ'), + (0x3EB, 'V'), + (0x3EC, 'M', 'ϭ'), + (0x3ED, 'V'), + (0x3EE, 'M', 'ϯ'), + (0x3EF, 'V'), + (0x3F0, 'M', 'κ'), + (0x3F1, 'M', 'ρ'), + (0x3F2, 'M', 'σ'), + (0x3F3, 'V'), + (0x3F4, 'M', 'θ'), + (0x3F5, 'M', 'ε'), + (0x3F6, 'V'), + (0x3F7, 'M', 'ϸ'), + (0x3F8, 'V'), + (0x3F9, 'M', 'σ'), + (0x3FA, 'M', 'ϻ'), + (0x3FB, 'V'), + (0x3FD, 'M', 'ͻ'), + (0x3FE, 'M', 'ͼ'), + (0x3FF, 'M', 'ͽ'), + (0x400, 'M', 'ѐ'), + (0x401, 'M', 'ё'), + (0x402, 'M', 'ђ'), + ] + +def _seg_7() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x403, 'M', 'ѓ'), + (0x404, 'M', 'є'), + (0x405, 'M', 'ѕ'), + (0x406, 'M', 'і'), + (0x407, 'M', 'ї'), + (0x408, 'M', 'ј'), + (0x409, 'M', 'љ'), + (0x40A, 'M', 'њ'), + (0x40B, 'M', 'ћ'), + (0x40C, 'M', 'ќ'), + (0x40D, 'M', 'ѝ'), + (0x40E, 'M', 'ў'), + (0x40F, 'M', 'џ'), + (0x410, 'M', 'а'), + (0x411, 'M', 'б'), + (0x412, 'M', 'в'), + (0x413, 'M', 'г'), + (0x414, 'M', 'д'), + (0x415, 'M', 'е'), + (0x416, 'M', 'ж'), + (0x417, 'M', 'з'), + (0x418, 'M', 'и'), + (0x419, 'M', 'й'), + (0x41A, 'M', 'к'), + (0x41B, 'M', 'л'), + (0x41C, 'M', 'м'), + (0x41D, 'M', 'н'), + (0x41E, 'M', 'о'), + (0x41F, 'M', 'п'), + (0x420, 'M', 'р'), + (0x421, 'M', 'с'), + (0x422, 'M', 'т'), + (0x423, 'M', 'у'), + (0x424, 'M', 'ф'), + (0x425, 'M', 'х'), + (0x426, 'M', 'ц'), + (0x427, 'M', 'ч'), + (0x428, 'M', 'ш'), + (0x429, 'M', 'щ'), + (0x42A, 'M', 'ъ'), + (0x42B, 'M', 'ы'), + (0x42C, 'M', 'ь'), + (0x42D, 'M', 'э'), + (0x42E, 'M', 'ю'), + (0x42F, 'M', 'я'), + (0x430, 'V'), + (0x460, 'M', 'ѡ'), + (0x461, 'V'), + (0x462, 'M', 'ѣ'), + (0x463, 'V'), + (0x464, 'M', 'ѥ'), + (0x465, 'V'), + (0x466, 'M', 'ѧ'), + (0x467, 'V'), + (0x468, 'M', 'ѩ'), + (0x469, 'V'), + (0x46A, 'M', 'ѫ'), + (0x46B, 'V'), + (0x46C, 'M', 'ѭ'), + (0x46D, 'V'), + (0x46E, 'M', 'ѯ'), + (0x46F, 'V'), + (0x470, 'M', 'ѱ'), + (0x471, 'V'), + (0x472, 'M', 'ѳ'), + (0x473, 'V'), + (0x474, 'M', 'ѵ'), + (0x475, 'V'), + (0x476, 'M', 'ѷ'), + (0x477, 'V'), + (0x478, 'M', 'ѹ'), + (0x479, 'V'), + (0x47A, 'M', 'ѻ'), + (0x47B, 'V'), + (0x47C, 'M', 'ѽ'), + (0x47D, 'V'), + (0x47E, 'M', 'ѿ'), + (0x47F, 'V'), + (0x480, 'M', 'ҁ'), + (0x481, 'V'), + (0x48A, 'M', 'ҋ'), + (0x48B, 'V'), + (0x48C, 'M', 'ҍ'), + (0x48D, 'V'), + (0x48E, 'M', 'ҏ'), + (0x48F, 'V'), + (0x490, 'M', 'ґ'), + (0x491, 'V'), + (0x492, 'M', 'ғ'), + (0x493, 'V'), + (0x494, 'M', 'ҕ'), + (0x495, 'V'), + (0x496, 'M', 'җ'), + (0x497, 'V'), + (0x498, 'M', 'ҙ'), + (0x499, 'V'), + (0x49A, 'M', 'қ'), + (0x49B, 'V'), + (0x49C, 'M', 'ҝ'), + (0x49D, 'V'), + ] + +def _seg_8() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x49E, 'M', 'ҟ'), + (0x49F, 'V'), + (0x4A0, 'M', 'ҡ'), + (0x4A1, 'V'), + (0x4A2, 'M', 'ң'), + (0x4A3, 'V'), + (0x4A4, 'M', 'ҥ'), + (0x4A5, 'V'), + (0x4A6, 'M', 'ҧ'), + (0x4A7, 'V'), + (0x4A8, 'M', 'ҩ'), + (0x4A9, 'V'), + (0x4AA, 'M', 'ҫ'), + (0x4AB, 'V'), + (0x4AC, 'M', 'ҭ'), + (0x4AD, 'V'), + (0x4AE, 'M', 'ү'), + (0x4AF, 'V'), + (0x4B0, 'M', 'ұ'), + (0x4B1, 'V'), + (0x4B2, 'M', 'ҳ'), + (0x4B3, 'V'), + (0x4B4, 'M', 'ҵ'), + (0x4B5, 'V'), + (0x4B6, 'M', 'ҷ'), + (0x4B7, 'V'), + (0x4B8, 'M', 'ҹ'), + (0x4B9, 'V'), + (0x4BA, 'M', 'һ'), + (0x4BB, 'V'), + (0x4BC, 'M', 'ҽ'), + (0x4BD, 'V'), + (0x4BE, 'M', 'ҿ'), + (0x4BF, 'V'), + (0x4C0, 'X'), + (0x4C1, 'M', 'ӂ'), + (0x4C2, 'V'), + (0x4C3, 'M', 'ӄ'), + (0x4C4, 'V'), + (0x4C5, 'M', 'ӆ'), + (0x4C6, 'V'), + (0x4C7, 'M', 'ӈ'), + (0x4C8, 'V'), + (0x4C9, 'M', 'ӊ'), + (0x4CA, 'V'), + (0x4CB, 'M', 'ӌ'), + (0x4CC, 'V'), + (0x4CD, 'M', 'ӎ'), + (0x4CE, 'V'), + (0x4D0, 'M', 'ӑ'), + (0x4D1, 'V'), + (0x4D2, 'M', 'ӓ'), + (0x4D3, 'V'), + (0x4D4, 'M', 'ӕ'), + (0x4D5, 'V'), + (0x4D6, 'M', 'ӗ'), + (0x4D7, 'V'), + (0x4D8, 'M', 'ә'), + (0x4D9, 'V'), + (0x4DA, 'M', 'ӛ'), + (0x4DB, 'V'), + (0x4DC, 'M', 'ӝ'), + (0x4DD, 'V'), + (0x4DE, 'M', 'ӟ'), + (0x4DF, 'V'), + (0x4E0, 'M', 'ӡ'), + (0x4E1, 'V'), + (0x4E2, 'M', 'ӣ'), + (0x4E3, 'V'), + (0x4E4, 'M', 'ӥ'), + (0x4E5, 'V'), + (0x4E6, 'M', 'ӧ'), + (0x4E7, 'V'), + (0x4E8, 'M', 'ө'), + (0x4E9, 'V'), + (0x4EA, 'M', 'ӫ'), + (0x4EB, 'V'), + (0x4EC, 'M', 'ӭ'), + (0x4ED, 'V'), + (0x4EE, 'M', 'ӯ'), + (0x4EF, 'V'), + (0x4F0, 'M', 'ӱ'), + (0x4F1, 'V'), + (0x4F2, 'M', 'ӳ'), + (0x4F3, 'V'), + (0x4F4, 'M', 'ӵ'), + (0x4F5, 'V'), + (0x4F6, 'M', 'ӷ'), + (0x4F7, 'V'), + (0x4F8, 'M', 'ӹ'), + (0x4F9, 'V'), + (0x4FA, 'M', 'ӻ'), + (0x4FB, 'V'), + (0x4FC, 'M', 'ӽ'), + (0x4FD, 'V'), + (0x4FE, 'M', 'ӿ'), + (0x4FF, 'V'), + (0x500, 'M', 'ԁ'), + (0x501, 'V'), + (0x502, 'M', 'ԃ'), + ] + +def _seg_9() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x503, 'V'), + (0x504, 'M', 'ԅ'), + (0x505, 'V'), + (0x506, 'M', 'ԇ'), + (0x507, 'V'), + (0x508, 'M', 'ԉ'), + (0x509, 'V'), + (0x50A, 'M', 'ԋ'), + (0x50B, 'V'), + (0x50C, 'M', 'ԍ'), + (0x50D, 'V'), + (0x50E, 'M', 'ԏ'), + (0x50F, 'V'), + (0x510, 'M', 'ԑ'), + (0x511, 'V'), + (0x512, 'M', 'ԓ'), + (0x513, 'V'), + (0x514, 'M', 'ԕ'), + (0x515, 'V'), + (0x516, 'M', 'ԗ'), + (0x517, 'V'), + (0x518, 'M', 'ԙ'), + (0x519, 'V'), + (0x51A, 'M', 'ԛ'), + (0x51B, 'V'), + (0x51C, 'M', 'ԝ'), + (0x51D, 'V'), + (0x51E, 'M', 'ԟ'), + (0x51F, 'V'), + (0x520, 'M', 'ԡ'), + (0x521, 'V'), + (0x522, 'M', 'ԣ'), + (0x523, 'V'), + (0x524, 'M', 'ԥ'), + (0x525, 'V'), + (0x526, 'M', 'ԧ'), + (0x527, 'V'), + (0x528, 'M', 'ԩ'), + (0x529, 'V'), + (0x52A, 'M', 'ԫ'), + (0x52B, 'V'), + (0x52C, 'M', 'ԭ'), + (0x52D, 'V'), + (0x52E, 'M', 'ԯ'), + (0x52F, 'V'), + (0x530, 'X'), + (0x531, 'M', 'ա'), + (0x532, 'M', 'բ'), + (0x533, 'M', 'գ'), + (0x534, 'M', 'դ'), + (0x535, 'M', 'ե'), + (0x536, 'M', 'զ'), + (0x537, 'M', 'է'), + (0x538, 'M', 'ը'), + (0x539, 'M', 'թ'), + (0x53A, 'M', 'ժ'), + (0x53B, 'M', 'ի'), + (0x53C, 'M', 'լ'), + (0x53D, 'M', 'խ'), + (0x53E, 'M', 'ծ'), + (0x53F, 'M', 'կ'), + (0x540, 'M', 'հ'), + (0x541, 'M', 'ձ'), + (0x542, 'M', 'ղ'), + (0x543, 'M', 'ճ'), + (0x544, 'M', 'մ'), + (0x545, 'M', 'յ'), + (0x546, 'M', 'ն'), + (0x547, 'M', 'շ'), + (0x548, 'M', 'ո'), + (0x549, 'M', 'չ'), + (0x54A, 'M', 'պ'), + (0x54B, 'M', 'ջ'), + (0x54C, 'M', 'ռ'), + (0x54D, 'M', 'ս'), + (0x54E, 'M', 'վ'), + (0x54F, 'M', 'տ'), + (0x550, 'M', 'ր'), + (0x551, 'M', 'ց'), + (0x552, 'M', 'ւ'), + (0x553, 'M', 'փ'), + (0x554, 'M', 'ք'), + (0x555, 'M', 'օ'), + (0x556, 'M', 'ֆ'), + (0x557, 'X'), + (0x559, 'V'), + (0x587, 'M', 'եւ'), + (0x588, 'V'), + (0x58B, 'X'), + (0x58D, 'V'), + (0x590, 'X'), + (0x591, 'V'), + (0x5C8, 'X'), + (0x5D0, 'V'), + (0x5EB, 'X'), + (0x5EF, 'V'), + (0x5F5, 'X'), + (0x606, 'V'), + (0x61C, 'X'), + (0x61D, 'V'), + ] + +def _seg_10() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x675, 'M', 'اٴ'), + (0x676, 'M', 'وٴ'), + (0x677, 'M', 'ۇٴ'), + (0x678, 'M', 'يٴ'), + (0x679, 'V'), + (0x6DD, 'X'), + (0x6DE, 'V'), + (0x70E, 'X'), + (0x710, 'V'), + (0x74B, 'X'), + (0x74D, 'V'), + (0x7B2, 'X'), + (0x7C0, 'V'), + (0x7FB, 'X'), + (0x7FD, 'V'), + (0x82E, 'X'), + (0x830, 'V'), + (0x83F, 'X'), + (0x840, 'V'), + (0x85C, 'X'), + (0x85E, 'V'), + (0x85F, 'X'), + (0x860, 'V'), + (0x86B, 'X'), + (0x870, 'V'), + (0x88F, 'X'), + (0x898, 'V'), + (0x8E2, 'X'), + (0x8E3, 'V'), + (0x958, 'M', 'क़'), + (0x959, 'M', 'ख़'), + (0x95A, 'M', 'ग़'), + (0x95B, 'M', 'ज़'), + (0x95C, 'M', 'ड़'), + (0x95D, 'M', 'ढ़'), + (0x95E, 'M', 'फ़'), + (0x95F, 'M', 'य़'), + (0x960, 'V'), + (0x984, 'X'), + (0x985, 'V'), + (0x98D, 'X'), + (0x98F, 'V'), + (0x991, 'X'), + (0x993, 'V'), + (0x9A9, 'X'), + (0x9AA, 'V'), + (0x9B1, 'X'), + (0x9B2, 'V'), + (0x9B3, 'X'), + (0x9B6, 'V'), + (0x9BA, 'X'), + (0x9BC, 'V'), + (0x9C5, 'X'), + (0x9C7, 'V'), + (0x9C9, 'X'), + (0x9CB, 'V'), + (0x9CF, 'X'), + (0x9D7, 'V'), + (0x9D8, 'X'), + (0x9DC, 'M', 'ড়'), + (0x9DD, 'M', 'ঢ়'), + (0x9DE, 'X'), + (0x9DF, 'M', 'য়'), + (0x9E0, 'V'), + (0x9E4, 'X'), + (0x9E6, 'V'), + (0x9FF, 'X'), + (0xA01, 'V'), + (0xA04, 'X'), + (0xA05, 'V'), + (0xA0B, 'X'), + (0xA0F, 'V'), + (0xA11, 'X'), + (0xA13, 'V'), + (0xA29, 'X'), + (0xA2A, 'V'), + (0xA31, 'X'), + (0xA32, 'V'), + (0xA33, 'M', 'ਲ਼'), + (0xA34, 'X'), + (0xA35, 'V'), + (0xA36, 'M', 'ਸ਼'), + (0xA37, 'X'), + (0xA38, 'V'), + (0xA3A, 'X'), + (0xA3C, 'V'), + (0xA3D, 'X'), + (0xA3E, 'V'), + (0xA43, 'X'), + (0xA47, 'V'), + (0xA49, 'X'), + (0xA4B, 'V'), + (0xA4E, 'X'), + (0xA51, 'V'), + (0xA52, 'X'), + (0xA59, 'M', 'ਖ਼'), + (0xA5A, 'M', 'ਗ਼'), + (0xA5B, 'M', 'ਜ਼'), + (0xA5C, 'V'), + (0xA5D, 'X'), + ] + +def _seg_11() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA5E, 'M', 'ਫ਼'), + (0xA5F, 'X'), + (0xA66, 'V'), + (0xA77, 'X'), + (0xA81, 'V'), + (0xA84, 'X'), + (0xA85, 'V'), + (0xA8E, 'X'), + (0xA8F, 'V'), + (0xA92, 'X'), + (0xA93, 'V'), + (0xAA9, 'X'), + (0xAAA, 'V'), + (0xAB1, 'X'), + (0xAB2, 'V'), + (0xAB4, 'X'), + (0xAB5, 'V'), + (0xABA, 'X'), + (0xABC, 'V'), + (0xAC6, 'X'), + (0xAC7, 'V'), + (0xACA, 'X'), + (0xACB, 'V'), + (0xACE, 'X'), + (0xAD0, 'V'), + (0xAD1, 'X'), + (0xAE0, 'V'), + (0xAE4, 'X'), + (0xAE6, 'V'), + (0xAF2, 'X'), + (0xAF9, 'V'), + (0xB00, 'X'), + (0xB01, 'V'), + (0xB04, 'X'), + (0xB05, 'V'), + (0xB0D, 'X'), + (0xB0F, 'V'), + (0xB11, 'X'), + (0xB13, 'V'), + (0xB29, 'X'), + (0xB2A, 'V'), + (0xB31, 'X'), + (0xB32, 'V'), + (0xB34, 'X'), + (0xB35, 'V'), + (0xB3A, 'X'), + (0xB3C, 'V'), + (0xB45, 'X'), + (0xB47, 'V'), + (0xB49, 'X'), + (0xB4B, 'V'), + (0xB4E, 'X'), + (0xB55, 'V'), + (0xB58, 'X'), + (0xB5C, 'M', 'ଡ଼'), + (0xB5D, 'M', 'ଢ଼'), + (0xB5E, 'X'), + (0xB5F, 'V'), + (0xB64, 'X'), + (0xB66, 'V'), + (0xB78, 'X'), + (0xB82, 'V'), + (0xB84, 'X'), + (0xB85, 'V'), + (0xB8B, 'X'), + (0xB8E, 'V'), + (0xB91, 'X'), + (0xB92, 'V'), + (0xB96, 'X'), + (0xB99, 'V'), + (0xB9B, 'X'), + (0xB9C, 'V'), + (0xB9D, 'X'), + (0xB9E, 'V'), + (0xBA0, 'X'), + (0xBA3, 'V'), + (0xBA5, 'X'), + (0xBA8, 'V'), + (0xBAB, 'X'), + (0xBAE, 'V'), + (0xBBA, 'X'), + (0xBBE, 'V'), + (0xBC3, 'X'), + (0xBC6, 'V'), + (0xBC9, 'X'), + (0xBCA, 'V'), + (0xBCE, 'X'), + (0xBD0, 'V'), + (0xBD1, 'X'), + (0xBD7, 'V'), + (0xBD8, 'X'), + (0xBE6, 'V'), + (0xBFB, 'X'), + (0xC00, 'V'), + (0xC0D, 'X'), + (0xC0E, 'V'), + (0xC11, 'X'), + (0xC12, 'V'), + (0xC29, 'X'), + (0xC2A, 'V'), + ] + +def _seg_12() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xC3A, 'X'), + (0xC3C, 'V'), + (0xC45, 'X'), + (0xC46, 'V'), + (0xC49, 'X'), + (0xC4A, 'V'), + (0xC4E, 'X'), + (0xC55, 'V'), + (0xC57, 'X'), + (0xC58, 'V'), + (0xC5B, 'X'), + (0xC5D, 'V'), + (0xC5E, 'X'), + (0xC60, 'V'), + (0xC64, 'X'), + (0xC66, 'V'), + (0xC70, 'X'), + (0xC77, 'V'), + (0xC8D, 'X'), + (0xC8E, 'V'), + (0xC91, 'X'), + (0xC92, 'V'), + (0xCA9, 'X'), + (0xCAA, 'V'), + (0xCB4, 'X'), + (0xCB5, 'V'), + (0xCBA, 'X'), + (0xCBC, 'V'), + (0xCC5, 'X'), + (0xCC6, 'V'), + (0xCC9, 'X'), + (0xCCA, 'V'), + (0xCCE, 'X'), + (0xCD5, 'V'), + (0xCD7, 'X'), + (0xCDD, 'V'), + (0xCDF, 'X'), + (0xCE0, 'V'), + (0xCE4, 'X'), + (0xCE6, 'V'), + (0xCF0, 'X'), + (0xCF1, 'V'), + (0xCF4, 'X'), + (0xD00, 'V'), + (0xD0D, 'X'), + (0xD0E, 'V'), + (0xD11, 'X'), + (0xD12, 'V'), + (0xD45, 'X'), + (0xD46, 'V'), + (0xD49, 'X'), + (0xD4A, 'V'), + (0xD50, 'X'), + (0xD54, 'V'), + (0xD64, 'X'), + (0xD66, 'V'), + (0xD80, 'X'), + (0xD81, 'V'), + (0xD84, 'X'), + (0xD85, 'V'), + (0xD97, 'X'), + (0xD9A, 'V'), + (0xDB2, 'X'), + (0xDB3, 'V'), + (0xDBC, 'X'), + (0xDBD, 'V'), + (0xDBE, 'X'), + (0xDC0, 'V'), + (0xDC7, 'X'), + (0xDCA, 'V'), + (0xDCB, 'X'), + (0xDCF, 'V'), + (0xDD5, 'X'), + (0xDD6, 'V'), + (0xDD7, 'X'), + (0xDD8, 'V'), + (0xDE0, 'X'), + (0xDE6, 'V'), + (0xDF0, 'X'), + (0xDF2, 'V'), + (0xDF5, 'X'), + (0xE01, 'V'), + (0xE33, 'M', 'ํา'), + (0xE34, 'V'), + (0xE3B, 'X'), + (0xE3F, 'V'), + (0xE5C, 'X'), + (0xE81, 'V'), + (0xE83, 'X'), + (0xE84, 'V'), + (0xE85, 'X'), + (0xE86, 'V'), + (0xE8B, 'X'), + (0xE8C, 'V'), + (0xEA4, 'X'), + (0xEA5, 'V'), + (0xEA6, 'X'), + (0xEA7, 'V'), + (0xEB3, 'M', 'ໍາ'), + (0xEB4, 'V'), + ] + +def _seg_13() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xEBE, 'X'), + (0xEC0, 'V'), + (0xEC5, 'X'), + (0xEC6, 'V'), + (0xEC7, 'X'), + (0xEC8, 'V'), + (0xECF, 'X'), + (0xED0, 'V'), + (0xEDA, 'X'), + (0xEDC, 'M', 'ຫນ'), + (0xEDD, 'M', 'ຫມ'), + (0xEDE, 'V'), + (0xEE0, 'X'), + (0xF00, 'V'), + (0xF0C, 'M', '་'), + (0xF0D, 'V'), + (0xF43, 'M', 'གྷ'), + (0xF44, 'V'), + (0xF48, 'X'), + (0xF49, 'V'), + (0xF4D, 'M', 'ཌྷ'), + (0xF4E, 'V'), + (0xF52, 'M', 'དྷ'), + (0xF53, 'V'), + (0xF57, 'M', 'བྷ'), + (0xF58, 'V'), + (0xF5C, 'M', 'ཛྷ'), + (0xF5D, 'V'), + (0xF69, 'M', 'ཀྵ'), + (0xF6A, 'V'), + (0xF6D, 'X'), + (0xF71, 'V'), + (0xF73, 'M', 'ཱི'), + (0xF74, 'V'), + (0xF75, 'M', 'ཱུ'), + (0xF76, 'M', 'ྲྀ'), + (0xF77, 'M', 'ྲཱྀ'), + (0xF78, 'M', 'ླྀ'), + (0xF79, 'M', 'ླཱྀ'), + (0xF7A, 'V'), + (0xF81, 'M', 'ཱྀ'), + (0xF82, 'V'), + (0xF93, 'M', 'ྒྷ'), + (0xF94, 'V'), + (0xF98, 'X'), + (0xF99, 'V'), + (0xF9D, 'M', 'ྜྷ'), + (0xF9E, 'V'), + (0xFA2, 'M', 'ྡྷ'), + (0xFA3, 'V'), + (0xFA7, 'M', 'ྦྷ'), + (0xFA8, 'V'), + (0xFAC, 'M', 'ྫྷ'), + (0xFAD, 'V'), + (0xFB9, 'M', 'ྐྵ'), + (0xFBA, 'V'), + (0xFBD, 'X'), + (0xFBE, 'V'), + (0xFCD, 'X'), + (0xFCE, 'V'), + (0xFDB, 'X'), + (0x1000, 'V'), + (0x10A0, 'X'), + (0x10C7, 'M', 'ⴧ'), + (0x10C8, 'X'), + (0x10CD, 'M', 'ⴭ'), + (0x10CE, 'X'), + (0x10D0, 'V'), + (0x10FC, 'M', 'ნ'), + (0x10FD, 'V'), + (0x115F, 'X'), + (0x1161, 'V'), + (0x1249, 'X'), + (0x124A, 'V'), + (0x124E, 'X'), + (0x1250, 'V'), + (0x1257, 'X'), + (0x1258, 'V'), + (0x1259, 'X'), + (0x125A, 'V'), + (0x125E, 'X'), + (0x1260, 'V'), + (0x1289, 'X'), + (0x128A, 'V'), + (0x128E, 'X'), + (0x1290, 'V'), + (0x12B1, 'X'), + (0x12B2, 'V'), + (0x12B6, 'X'), + (0x12B8, 'V'), + (0x12BF, 'X'), + (0x12C0, 'V'), + (0x12C1, 'X'), + (0x12C2, 'V'), + (0x12C6, 'X'), + (0x12C8, 'V'), + (0x12D7, 'X'), + (0x12D8, 'V'), + (0x1311, 'X'), + (0x1312, 'V'), + ] + +def _seg_14() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1316, 'X'), + (0x1318, 'V'), + (0x135B, 'X'), + (0x135D, 'V'), + (0x137D, 'X'), + (0x1380, 'V'), + (0x139A, 'X'), + (0x13A0, 'V'), + (0x13F6, 'X'), + (0x13F8, 'M', 'Ᏸ'), + (0x13F9, 'M', 'Ᏹ'), + (0x13FA, 'M', 'Ᏺ'), + (0x13FB, 'M', 'Ᏻ'), + (0x13FC, 'M', 'Ᏼ'), + (0x13FD, 'M', 'Ᏽ'), + (0x13FE, 'X'), + (0x1400, 'V'), + (0x1680, 'X'), + (0x1681, 'V'), + (0x169D, 'X'), + (0x16A0, 'V'), + (0x16F9, 'X'), + (0x1700, 'V'), + (0x1716, 'X'), + (0x171F, 'V'), + (0x1737, 'X'), + (0x1740, 'V'), + (0x1754, 'X'), + (0x1760, 'V'), + (0x176D, 'X'), + (0x176E, 'V'), + (0x1771, 'X'), + (0x1772, 'V'), + (0x1774, 'X'), + (0x1780, 'V'), + (0x17B4, 'X'), + (0x17B6, 'V'), + (0x17DE, 'X'), + (0x17E0, 'V'), + (0x17EA, 'X'), + (0x17F0, 'V'), + (0x17FA, 'X'), + (0x1800, 'V'), + (0x1806, 'X'), + (0x1807, 'V'), + (0x180B, 'I'), + (0x180E, 'X'), + (0x180F, 'I'), + (0x1810, 'V'), + (0x181A, 'X'), + (0x1820, 'V'), + (0x1879, 'X'), + (0x1880, 'V'), + (0x18AB, 'X'), + (0x18B0, 'V'), + (0x18F6, 'X'), + (0x1900, 'V'), + (0x191F, 'X'), + (0x1920, 'V'), + (0x192C, 'X'), + (0x1930, 'V'), + (0x193C, 'X'), + (0x1940, 'V'), + (0x1941, 'X'), + (0x1944, 'V'), + (0x196E, 'X'), + (0x1970, 'V'), + (0x1975, 'X'), + (0x1980, 'V'), + (0x19AC, 'X'), + (0x19B0, 'V'), + (0x19CA, 'X'), + (0x19D0, 'V'), + (0x19DB, 'X'), + (0x19DE, 'V'), + (0x1A1C, 'X'), + (0x1A1E, 'V'), + (0x1A5F, 'X'), + (0x1A60, 'V'), + (0x1A7D, 'X'), + (0x1A7F, 'V'), + (0x1A8A, 'X'), + (0x1A90, 'V'), + (0x1A9A, 'X'), + (0x1AA0, 'V'), + (0x1AAE, 'X'), + (0x1AB0, 'V'), + (0x1ACF, 'X'), + (0x1B00, 'V'), + (0x1B4D, 'X'), + (0x1B50, 'V'), + (0x1B7F, 'X'), + (0x1B80, 'V'), + (0x1BF4, 'X'), + (0x1BFC, 'V'), + (0x1C38, 'X'), + (0x1C3B, 'V'), + (0x1C4A, 'X'), + (0x1C4D, 'V'), + (0x1C80, 'M', 'в'), + ] + +def _seg_15() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1C81, 'M', 'д'), + (0x1C82, 'M', 'о'), + (0x1C83, 'M', 'с'), + (0x1C84, 'M', 'т'), + (0x1C86, 'M', 'ъ'), + (0x1C87, 'M', 'ѣ'), + (0x1C88, 'M', 'ꙋ'), + (0x1C89, 'X'), + (0x1C90, 'M', 'ა'), + (0x1C91, 'M', 'ბ'), + (0x1C92, 'M', 'გ'), + (0x1C93, 'M', 'დ'), + (0x1C94, 'M', 'ე'), + (0x1C95, 'M', 'ვ'), + (0x1C96, 'M', 'ზ'), + (0x1C97, 'M', 'თ'), + (0x1C98, 'M', 'ი'), + (0x1C99, 'M', 'კ'), + (0x1C9A, 'M', 'ლ'), + (0x1C9B, 'M', 'მ'), + (0x1C9C, 'M', 'ნ'), + (0x1C9D, 'M', 'ო'), + (0x1C9E, 'M', 'პ'), + (0x1C9F, 'M', 'ჟ'), + (0x1CA0, 'M', 'რ'), + (0x1CA1, 'M', 'ს'), + (0x1CA2, 'M', 'ტ'), + (0x1CA3, 'M', 'უ'), + (0x1CA4, 'M', 'ფ'), + (0x1CA5, 'M', 'ქ'), + (0x1CA6, 'M', 'ღ'), + (0x1CA7, 'M', 'ყ'), + (0x1CA8, 'M', 'შ'), + (0x1CA9, 'M', 'ჩ'), + (0x1CAA, 'M', 'ც'), + (0x1CAB, 'M', 'ძ'), + (0x1CAC, 'M', 'წ'), + (0x1CAD, 'M', 'ჭ'), + (0x1CAE, 'M', 'ხ'), + (0x1CAF, 'M', 'ჯ'), + (0x1CB0, 'M', 'ჰ'), + (0x1CB1, 'M', 'ჱ'), + (0x1CB2, 'M', 'ჲ'), + (0x1CB3, 'M', 'ჳ'), + (0x1CB4, 'M', 'ჴ'), + (0x1CB5, 'M', 'ჵ'), + (0x1CB6, 'M', 'ჶ'), + (0x1CB7, 'M', 'ჷ'), + (0x1CB8, 'M', 'ჸ'), + (0x1CB9, 'M', 'ჹ'), + (0x1CBA, 'M', 'ჺ'), + (0x1CBB, 'X'), + (0x1CBD, 'M', 'ჽ'), + (0x1CBE, 'M', 'ჾ'), + (0x1CBF, 'M', 'ჿ'), + (0x1CC0, 'V'), + (0x1CC8, 'X'), + (0x1CD0, 'V'), + (0x1CFB, 'X'), + (0x1D00, 'V'), + (0x1D2C, 'M', 'a'), + (0x1D2D, 'M', 'æ'), + (0x1D2E, 'M', 'b'), + (0x1D2F, 'V'), + (0x1D30, 'M', 'd'), + (0x1D31, 'M', 'e'), + (0x1D32, 'M', 'ǝ'), + (0x1D33, 'M', 'g'), + (0x1D34, 'M', 'h'), + (0x1D35, 'M', 'i'), + (0x1D36, 'M', 'j'), + (0x1D37, 'M', 'k'), + (0x1D38, 'M', 'l'), + (0x1D39, 'M', 'm'), + (0x1D3A, 'M', 'n'), + (0x1D3B, 'V'), + (0x1D3C, 'M', 'o'), + (0x1D3D, 'M', 'ȣ'), + (0x1D3E, 'M', 'p'), + (0x1D3F, 'M', 'r'), + (0x1D40, 'M', 't'), + (0x1D41, 'M', 'u'), + (0x1D42, 'M', 'w'), + (0x1D43, 'M', 'a'), + (0x1D44, 'M', 'ɐ'), + (0x1D45, 'M', 'ɑ'), + (0x1D46, 'M', 'ᴂ'), + (0x1D47, 'M', 'b'), + (0x1D48, 'M', 'd'), + (0x1D49, 'M', 'e'), + (0x1D4A, 'M', 'ə'), + (0x1D4B, 'M', 'ɛ'), + (0x1D4C, 'M', 'ɜ'), + (0x1D4D, 'M', 'g'), + (0x1D4E, 'V'), + (0x1D4F, 'M', 'k'), + (0x1D50, 'M', 'm'), + (0x1D51, 'M', 'ŋ'), + (0x1D52, 'M', 'o'), + (0x1D53, 'M', 'ɔ'), + ] + +def _seg_16() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D54, 'M', 'ᴖ'), + (0x1D55, 'M', 'ᴗ'), + (0x1D56, 'M', 'p'), + (0x1D57, 'M', 't'), + (0x1D58, 'M', 'u'), + (0x1D59, 'M', 'ᴝ'), + (0x1D5A, 'M', 'ɯ'), + (0x1D5B, 'M', 'v'), + (0x1D5C, 'M', 'ᴥ'), + (0x1D5D, 'M', 'β'), + (0x1D5E, 'M', 'γ'), + (0x1D5F, 'M', 'δ'), + (0x1D60, 'M', 'φ'), + (0x1D61, 'M', 'χ'), + (0x1D62, 'M', 'i'), + (0x1D63, 'M', 'r'), + (0x1D64, 'M', 'u'), + (0x1D65, 'M', 'v'), + (0x1D66, 'M', 'β'), + (0x1D67, 'M', 'γ'), + (0x1D68, 'M', 'ρ'), + (0x1D69, 'M', 'φ'), + (0x1D6A, 'M', 'χ'), + (0x1D6B, 'V'), + (0x1D78, 'M', 'н'), + (0x1D79, 'V'), + (0x1D9B, 'M', 'ɒ'), + (0x1D9C, 'M', 'c'), + (0x1D9D, 'M', 'ɕ'), + (0x1D9E, 'M', 'ð'), + (0x1D9F, 'M', 'ɜ'), + (0x1DA0, 'M', 'f'), + (0x1DA1, 'M', 'ɟ'), + (0x1DA2, 'M', 'ɡ'), + (0x1DA3, 'M', 'ɥ'), + (0x1DA4, 'M', 'ɨ'), + (0x1DA5, 'M', 'ɩ'), + (0x1DA6, 'M', 'ɪ'), + (0x1DA7, 'M', 'ᵻ'), + (0x1DA8, 'M', 'ʝ'), + (0x1DA9, 'M', 'ɭ'), + (0x1DAA, 'M', 'ᶅ'), + (0x1DAB, 'M', 'ʟ'), + (0x1DAC, 'M', 'ɱ'), + (0x1DAD, 'M', 'ɰ'), + (0x1DAE, 'M', 'ɲ'), + (0x1DAF, 'M', 'ɳ'), + (0x1DB0, 'M', 'ɴ'), + (0x1DB1, 'M', 'ɵ'), + (0x1DB2, 'M', 'ɸ'), + (0x1DB3, 'M', 'ʂ'), + (0x1DB4, 'M', 'ʃ'), + (0x1DB5, 'M', 'ƫ'), + (0x1DB6, 'M', 'ʉ'), + (0x1DB7, 'M', 'ʊ'), + (0x1DB8, 'M', 'ᴜ'), + (0x1DB9, 'M', 'ʋ'), + (0x1DBA, 'M', 'ʌ'), + (0x1DBB, 'M', 'z'), + (0x1DBC, 'M', 'ʐ'), + (0x1DBD, 'M', 'ʑ'), + (0x1DBE, 'M', 'ʒ'), + (0x1DBF, 'M', 'θ'), + (0x1DC0, 'V'), + (0x1E00, 'M', 'ḁ'), + (0x1E01, 'V'), + (0x1E02, 'M', 'ḃ'), + (0x1E03, 'V'), + (0x1E04, 'M', 'ḅ'), + (0x1E05, 'V'), + (0x1E06, 'M', 'ḇ'), + (0x1E07, 'V'), + (0x1E08, 'M', 'ḉ'), + (0x1E09, 'V'), + (0x1E0A, 'M', 'ḋ'), + (0x1E0B, 'V'), + (0x1E0C, 'M', 'ḍ'), + (0x1E0D, 'V'), + (0x1E0E, 'M', 'ḏ'), + (0x1E0F, 'V'), + (0x1E10, 'M', 'ḑ'), + (0x1E11, 'V'), + (0x1E12, 'M', 'ḓ'), + (0x1E13, 'V'), + (0x1E14, 'M', 'ḕ'), + (0x1E15, 'V'), + (0x1E16, 'M', 'ḗ'), + (0x1E17, 'V'), + (0x1E18, 'M', 'ḙ'), + (0x1E19, 'V'), + (0x1E1A, 'M', 'ḛ'), + (0x1E1B, 'V'), + (0x1E1C, 'M', 'ḝ'), + (0x1E1D, 'V'), + (0x1E1E, 'M', 'ḟ'), + (0x1E1F, 'V'), + (0x1E20, 'M', 'ḡ'), + (0x1E21, 'V'), + (0x1E22, 'M', 'ḣ'), + (0x1E23, 'V'), + ] + +def _seg_17() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E24, 'M', 'ḥ'), + (0x1E25, 'V'), + (0x1E26, 'M', 'ḧ'), + (0x1E27, 'V'), + (0x1E28, 'M', 'ḩ'), + (0x1E29, 'V'), + (0x1E2A, 'M', 'ḫ'), + (0x1E2B, 'V'), + (0x1E2C, 'M', 'ḭ'), + (0x1E2D, 'V'), + (0x1E2E, 'M', 'ḯ'), + (0x1E2F, 'V'), + (0x1E30, 'M', 'ḱ'), + (0x1E31, 'V'), + (0x1E32, 'M', 'ḳ'), + (0x1E33, 'V'), + (0x1E34, 'M', 'ḵ'), + (0x1E35, 'V'), + (0x1E36, 'M', 'ḷ'), + (0x1E37, 'V'), + (0x1E38, 'M', 'ḹ'), + (0x1E39, 'V'), + (0x1E3A, 'M', 'ḻ'), + (0x1E3B, 'V'), + (0x1E3C, 'M', 'ḽ'), + (0x1E3D, 'V'), + (0x1E3E, 'M', 'ḿ'), + (0x1E3F, 'V'), + (0x1E40, 'M', 'ṁ'), + (0x1E41, 'V'), + (0x1E42, 'M', 'ṃ'), + (0x1E43, 'V'), + (0x1E44, 'M', 'ṅ'), + (0x1E45, 'V'), + (0x1E46, 'M', 'ṇ'), + (0x1E47, 'V'), + (0x1E48, 'M', 'ṉ'), + (0x1E49, 'V'), + (0x1E4A, 'M', 'ṋ'), + (0x1E4B, 'V'), + (0x1E4C, 'M', 'ṍ'), + (0x1E4D, 'V'), + (0x1E4E, 'M', 'ṏ'), + (0x1E4F, 'V'), + (0x1E50, 'M', 'ṑ'), + (0x1E51, 'V'), + (0x1E52, 'M', 'ṓ'), + (0x1E53, 'V'), + (0x1E54, 'M', 'ṕ'), + (0x1E55, 'V'), + (0x1E56, 'M', 'ṗ'), + (0x1E57, 'V'), + (0x1E58, 'M', 'ṙ'), + (0x1E59, 'V'), + (0x1E5A, 'M', 'ṛ'), + (0x1E5B, 'V'), + (0x1E5C, 'M', 'ṝ'), + (0x1E5D, 'V'), + (0x1E5E, 'M', 'ṟ'), + (0x1E5F, 'V'), + (0x1E60, 'M', 'ṡ'), + (0x1E61, 'V'), + (0x1E62, 'M', 'ṣ'), + (0x1E63, 'V'), + (0x1E64, 'M', 'ṥ'), + (0x1E65, 'V'), + (0x1E66, 'M', 'ṧ'), + (0x1E67, 'V'), + (0x1E68, 'M', 'ṩ'), + (0x1E69, 'V'), + (0x1E6A, 'M', 'ṫ'), + (0x1E6B, 'V'), + (0x1E6C, 'M', 'ṭ'), + (0x1E6D, 'V'), + (0x1E6E, 'M', 'ṯ'), + (0x1E6F, 'V'), + (0x1E70, 'M', 'ṱ'), + (0x1E71, 'V'), + (0x1E72, 'M', 'ṳ'), + (0x1E73, 'V'), + (0x1E74, 'M', 'ṵ'), + (0x1E75, 'V'), + (0x1E76, 'M', 'ṷ'), + (0x1E77, 'V'), + (0x1E78, 'M', 'ṹ'), + (0x1E79, 'V'), + (0x1E7A, 'M', 'ṻ'), + (0x1E7B, 'V'), + (0x1E7C, 'M', 'ṽ'), + (0x1E7D, 'V'), + (0x1E7E, 'M', 'ṿ'), + (0x1E7F, 'V'), + (0x1E80, 'M', 'ẁ'), + (0x1E81, 'V'), + (0x1E82, 'M', 'ẃ'), + (0x1E83, 'V'), + (0x1E84, 'M', 'ẅ'), + (0x1E85, 'V'), + (0x1E86, 'M', 'ẇ'), + (0x1E87, 'V'), + ] + +def _seg_18() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E88, 'M', 'ẉ'), + (0x1E89, 'V'), + (0x1E8A, 'M', 'ẋ'), + (0x1E8B, 'V'), + (0x1E8C, 'M', 'ẍ'), + (0x1E8D, 'V'), + (0x1E8E, 'M', 'ẏ'), + (0x1E8F, 'V'), + (0x1E90, 'M', 'ẑ'), + (0x1E91, 'V'), + (0x1E92, 'M', 'ẓ'), + (0x1E93, 'V'), + (0x1E94, 'M', 'ẕ'), + (0x1E95, 'V'), + (0x1E9A, 'M', 'aʾ'), + (0x1E9B, 'M', 'ṡ'), + (0x1E9C, 'V'), + (0x1E9E, 'M', 'ß'), + (0x1E9F, 'V'), + (0x1EA0, 'M', 'ạ'), + (0x1EA1, 'V'), + (0x1EA2, 'M', 'ả'), + (0x1EA3, 'V'), + (0x1EA4, 'M', 'ấ'), + (0x1EA5, 'V'), + (0x1EA6, 'M', 'ầ'), + (0x1EA7, 'V'), + (0x1EA8, 'M', 'ẩ'), + (0x1EA9, 'V'), + (0x1EAA, 'M', 'ẫ'), + (0x1EAB, 'V'), + (0x1EAC, 'M', 'ậ'), + (0x1EAD, 'V'), + (0x1EAE, 'M', 'ắ'), + (0x1EAF, 'V'), + (0x1EB0, 'M', 'ằ'), + (0x1EB1, 'V'), + (0x1EB2, 'M', 'ẳ'), + (0x1EB3, 'V'), + (0x1EB4, 'M', 'ẵ'), + (0x1EB5, 'V'), + (0x1EB6, 'M', 'ặ'), + (0x1EB7, 'V'), + (0x1EB8, 'M', 'ẹ'), + (0x1EB9, 'V'), + (0x1EBA, 'M', 'ẻ'), + (0x1EBB, 'V'), + (0x1EBC, 'M', 'ẽ'), + (0x1EBD, 'V'), + (0x1EBE, 'M', 'ế'), + (0x1EBF, 'V'), + (0x1EC0, 'M', 'ề'), + (0x1EC1, 'V'), + (0x1EC2, 'M', 'ể'), + (0x1EC3, 'V'), + (0x1EC4, 'M', 'ễ'), + (0x1EC5, 'V'), + (0x1EC6, 'M', 'ệ'), + (0x1EC7, 'V'), + (0x1EC8, 'M', 'ỉ'), + (0x1EC9, 'V'), + (0x1ECA, 'M', 'ị'), + (0x1ECB, 'V'), + (0x1ECC, 'M', 'ọ'), + (0x1ECD, 'V'), + (0x1ECE, 'M', 'ỏ'), + (0x1ECF, 'V'), + (0x1ED0, 'M', 'ố'), + (0x1ED1, 'V'), + (0x1ED2, 'M', 'ồ'), + (0x1ED3, 'V'), + (0x1ED4, 'M', 'ổ'), + (0x1ED5, 'V'), + (0x1ED6, 'M', 'ỗ'), + (0x1ED7, 'V'), + (0x1ED8, 'M', 'ộ'), + (0x1ED9, 'V'), + (0x1EDA, 'M', 'ớ'), + (0x1EDB, 'V'), + (0x1EDC, 'M', 'ờ'), + (0x1EDD, 'V'), + (0x1EDE, 'M', 'ở'), + (0x1EDF, 'V'), + (0x1EE0, 'M', 'ỡ'), + (0x1EE1, 'V'), + (0x1EE2, 'M', 'ợ'), + (0x1EE3, 'V'), + (0x1EE4, 'M', 'ụ'), + (0x1EE5, 'V'), + (0x1EE6, 'M', 'ủ'), + (0x1EE7, 'V'), + (0x1EE8, 'M', 'ứ'), + (0x1EE9, 'V'), + (0x1EEA, 'M', 'ừ'), + (0x1EEB, 'V'), + (0x1EEC, 'M', 'ử'), + (0x1EED, 'V'), + (0x1EEE, 'M', 'ữ'), + (0x1EEF, 'V'), + (0x1EF0, 'M', 'ự'), + ] + +def _seg_19() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EF1, 'V'), + (0x1EF2, 'M', 'ỳ'), + (0x1EF3, 'V'), + (0x1EF4, 'M', 'ỵ'), + (0x1EF5, 'V'), + (0x1EF6, 'M', 'ỷ'), + (0x1EF7, 'V'), + (0x1EF8, 'M', 'ỹ'), + (0x1EF9, 'V'), + (0x1EFA, 'M', 'ỻ'), + (0x1EFB, 'V'), + (0x1EFC, 'M', 'ỽ'), + (0x1EFD, 'V'), + (0x1EFE, 'M', 'ỿ'), + (0x1EFF, 'V'), + (0x1F08, 'M', 'ἀ'), + (0x1F09, 'M', 'ἁ'), + (0x1F0A, 'M', 'ἂ'), + (0x1F0B, 'M', 'ἃ'), + (0x1F0C, 'M', 'ἄ'), + (0x1F0D, 'M', 'ἅ'), + (0x1F0E, 'M', 'ἆ'), + (0x1F0F, 'M', 'ἇ'), + (0x1F10, 'V'), + (0x1F16, 'X'), + (0x1F18, 'M', 'ἐ'), + (0x1F19, 'M', 'ἑ'), + (0x1F1A, 'M', 'ἒ'), + (0x1F1B, 'M', 'ἓ'), + (0x1F1C, 'M', 'ἔ'), + (0x1F1D, 'M', 'ἕ'), + (0x1F1E, 'X'), + (0x1F20, 'V'), + (0x1F28, 'M', 'ἠ'), + (0x1F29, 'M', 'ἡ'), + (0x1F2A, 'M', 'ἢ'), + (0x1F2B, 'M', 'ἣ'), + (0x1F2C, 'M', 'ἤ'), + (0x1F2D, 'M', 'ἥ'), + (0x1F2E, 'M', 'ἦ'), + (0x1F2F, 'M', 'ἧ'), + (0x1F30, 'V'), + (0x1F38, 'M', 'ἰ'), + (0x1F39, 'M', 'ἱ'), + (0x1F3A, 'M', 'ἲ'), + (0x1F3B, 'M', 'ἳ'), + (0x1F3C, 'M', 'ἴ'), + (0x1F3D, 'M', 'ἵ'), + (0x1F3E, 'M', 'ἶ'), + (0x1F3F, 'M', 'ἷ'), + (0x1F40, 'V'), + (0x1F46, 'X'), + (0x1F48, 'M', 'ὀ'), + (0x1F49, 'M', 'ὁ'), + (0x1F4A, 'M', 'ὂ'), + (0x1F4B, 'M', 'ὃ'), + (0x1F4C, 'M', 'ὄ'), + (0x1F4D, 'M', 'ὅ'), + (0x1F4E, 'X'), + (0x1F50, 'V'), + (0x1F58, 'X'), + (0x1F59, 'M', 'ὑ'), + (0x1F5A, 'X'), + (0x1F5B, 'M', 'ὓ'), + (0x1F5C, 'X'), + (0x1F5D, 'M', 'ὕ'), + (0x1F5E, 'X'), + (0x1F5F, 'M', 'ὗ'), + (0x1F60, 'V'), + (0x1F68, 'M', 'ὠ'), + (0x1F69, 'M', 'ὡ'), + (0x1F6A, 'M', 'ὢ'), + (0x1F6B, 'M', 'ὣ'), + (0x1F6C, 'M', 'ὤ'), + (0x1F6D, 'M', 'ὥ'), + (0x1F6E, 'M', 'ὦ'), + (0x1F6F, 'M', 'ὧ'), + (0x1F70, 'V'), + (0x1F71, 'M', 'ά'), + (0x1F72, 'V'), + (0x1F73, 'M', 'έ'), + (0x1F74, 'V'), + (0x1F75, 'M', 'ή'), + (0x1F76, 'V'), + (0x1F77, 'M', 'ί'), + (0x1F78, 'V'), + (0x1F79, 'M', 'ό'), + (0x1F7A, 'V'), + (0x1F7B, 'M', 'ύ'), + (0x1F7C, 'V'), + (0x1F7D, 'M', 'ώ'), + (0x1F7E, 'X'), + (0x1F80, 'M', 'ἀι'), + (0x1F81, 'M', 'ἁι'), + (0x1F82, 'M', 'ἂι'), + (0x1F83, 'M', 'ἃι'), + (0x1F84, 'M', 'ἄι'), + (0x1F85, 'M', 'ἅι'), + (0x1F86, 'M', 'ἆι'), + (0x1F87, 'M', 'ἇι'), + ] + +def _seg_20() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1F88, 'M', 'ἀι'), + (0x1F89, 'M', 'ἁι'), + (0x1F8A, 'M', 'ἂι'), + (0x1F8B, 'M', 'ἃι'), + (0x1F8C, 'M', 'ἄι'), + (0x1F8D, 'M', 'ἅι'), + (0x1F8E, 'M', 'ἆι'), + (0x1F8F, 'M', 'ἇι'), + (0x1F90, 'M', 'ἠι'), + (0x1F91, 'M', 'ἡι'), + (0x1F92, 'M', 'ἢι'), + (0x1F93, 'M', 'ἣι'), + (0x1F94, 'M', 'ἤι'), + (0x1F95, 'M', 'ἥι'), + (0x1F96, 'M', 'ἦι'), + (0x1F97, 'M', 'ἧι'), + (0x1F98, 'M', 'ἠι'), + (0x1F99, 'M', 'ἡι'), + (0x1F9A, 'M', 'ἢι'), + (0x1F9B, 'M', 'ἣι'), + (0x1F9C, 'M', 'ἤι'), + (0x1F9D, 'M', 'ἥι'), + (0x1F9E, 'M', 'ἦι'), + (0x1F9F, 'M', 'ἧι'), + (0x1FA0, 'M', 'ὠι'), + (0x1FA1, 'M', 'ὡι'), + (0x1FA2, 'M', 'ὢι'), + (0x1FA3, 'M', 'ὣι'), + (0x1FA4, 'M', 'ὤι'), + (0x1FA5, 'M', 'ὥι'), + (0x1FA6, 'M', 'ὦι'), + (0x1FA7, 'M', 'ὧι'), + (0x1FA8, 'M', 'ὠι'), + (0x1FA9, 'M', 'ὡι'), + (0x1FAA, 'M', 'ὢι'), + (0x1FAB, 'M', 'ὣι'), + (0x1FAC, 'M', 'ὤι'), + (0x1FAD, 'M', 'ὥι'), + (0x1FAE, 'M', 'ὦι'), + (0x1FAF, 'M', 'ὧι'), + (0x1FB0, 'V'), + (0x1FB2, 'M', 'ὰι'), + (0x1FB3, 'M', 'αι'), + (0x1FB4, 'M', 'άι'), + (0x1FB5, 'X'), + (0x1FB6, 'V'), + (0x1FB7, 'M', 'ᾶι'), + (0x1FB8, 'M', 'ᾰ'), + (0x1FB9, 'M', 'ᾱ'), + (0x1FBA, 'M', 'ὰ'), + (0x1FBB, 'M', 'ά'), + (0x1FBC, 'M', 'αι'), + (0x1FBD, '3', ' ̓'), + (0x1FBE, 'M', 'ι'), + (0x1FBF, '3', ' ̓'), + (0x1FC0, '3', ' ͂'), + (0x1FC1, '3', ' ̈͂'), + (0x1FC2, 'M', 'ὴι'), + (0x1FC3, 'M', 'ηι'), + (0x1FC4, 'M', 'ήι'), + (0x1FC5, 'X'), + (0x1FC6, 'V'), + (0x1FC7, 'M', 'ῆι'), + (0x1FC8, 'M', 'ὲ'), + (0x1FC9, 'M', 'έ'), + (0x1FCA, 'M', 'ὴ'), + (0x1FCB, 'M', 'ή'), + (0x1FCC, 'M', 'ηι'), + (0x1FCD, '3', ' ̓̀'), + (0x1FCE, '3', ' ̓́'), + (0x1FCF, '3', ' ̓͂'), + (0x1FD0, 'V'), + (0x1FD3, 'M', 'ΐ'), + (0x1FD4, 'X'), + (0x1FD6, 'V'), + (0x1FD8, 'M', 'ῐ'), + (0x1FD9, 'M', 'ῑ'), + (0x1FDA, 'M', 'ὶ'), + (0x1FDB, 'M', 'ί'), + (0x1FDC, 'X'), + (0x1FDD, '3', ' ̔̀'), + (0x1FDE, '3', ' ̔́'), + (0x1FDF, '3', ' ̔͂'), + (0x1FE0, 'V'), + (0x1FE3, 'M', 'ΰ'), + (0x1FE4, 'V'), + (0x1FE8, 'M', 'ῠ'), + (0x1FE9, 'M', 'ῡ'), + (0x1FEA, 'M', 'ὺ'), + (0x1FEB, 'M', 'ύ'), + (0x1FEC, 'M', 'ῥ'), + (0x1FED, '3', ' ̈̀'), + (0x1FEE, '3', ' ̈́'), + (0x1FEF, '3', '`'), + (0x1FF0, 'X'), + (0x1FF2, 'M', 'ὼι'), + (0x1FF3, 'M', 'ωι'), + (0x1FF4, 'M', 'ώι'), + (0x1FF5, 'X'), + (0x1FF6, 'V'), + ] + +def _seg_21() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1FF7, 'M', 'ῶι'), + (0x1FF8, 'M', 'ὸ'), + (0x1FF9, 'M', 'ό'), + (0x1FFA, 'M', 'ὼ'), + (0x1FFB, 'M', 'ώ'), + (0x1FFC, 'M', 'ωι'), + (0x1FFD, '3', ' ́'), + (0x1FFE, '3', ' ̔'), + (0x1FFF, 'X'), + (0x2000, '3', ' '), + (0x200B, 'I'), + (0x200C, 'D', ''), + (0x200E, 'X'), + (0x2010, 'V'), + (0x2011, 'M', '‐'), + (0x2012, 'V'), + (0x2017, '3', ' ̳'), + (0x2018, 'V'), + (0x2024, 'X'), + (0x2027, 'V'), + (0x2028, 'X'), + (0x202F, '3', ' '), + (0x2030, 'V'), + (0x2033, 'M', '′′'), + (0x2034, 'M', '′′′'), + (0x2035, 'V'), + (0x2036, 'M', '‵‵'), + (0x2037, 'M', '‵‵‵'), + (0x2038, 'V'), + (0x203C, '3', '!!'), + (0x203D, 'V'), + (0x203E, '3', ' ̅'), + (0x203F, 'V'), + (0x2047, '3', '??'), + (0x2048, '3', '?!'), + (0x2049, '3', '!?'), + (0x204A, 'V'), + (0x2057, 'M', '′′′′'), + (0x2058, 'V'), + (0x205F, '3', ' '), + (0x2060, 'I'), + (0x2061, 'X'), + (0x2064, 'I'), + (0x2065, 'X'), + (0x2070, 'M', '0'), + (0x2071, 'M', 'i'), + (0x2072, 'X'), + (0x2074, 'M', '4'), + (0x2075, 'M', '5'), + (0x2076, 'M', '6'), + (0x2077, 'M', '7'), + (0x2078, 'M', '8'), + (0x2079, 'M', '9'), + (0x207A, '3', '+'), + (0x207B, 'M', '−'), + (0x207C, '3', '='), + (0x207D, '3', '('), + (0x207E, '3', ')'), + (0x207F, 'M', 'n'), + (0x2080, 'M', '0'), + (0x2081, 'M', '1'), + (0x2082, 'M', '2'), + (0x2083, 'M', '3'), + (0x2084, 'M', '4'), + (0x2085, 'M', '5'), + (0x2086, 'M', '6'), + (0x2087, 'M', '7'), + (0x2088, 'M', '8'), + (0x2089, 'M', '9'), + (0x208A, '3', '+'), + (0x208B, 'M', '−'), + (0x208C, '3', '='), + (0x208D, '3', '('), + (0x208E, '3', ')'), + (0x208F, 'X'), + (0x2090, 'M', 'a'), + (0x2091, 'M', 'e'), + (0x2092, 'M', 'o'), + (0x2093, 'M', 'x'), + (0x2094, 'M', 'ə'), + (0x2095, 'M', 'h'), + (0x2096, 'M', 'k'), + (0x2097, 'M', 'l'), + (0x2098, 'M', 'm'), + (0x2099, 'M', 'n'), + (0x209A, 'M', 'p'), + (0x209B, 'M', 's'), + (0x209C, 'M', 't'), + (0x209D, 'X'), + (0x20A0, 'V'), + (0x20A8, 'M', 'rs'), + (0x20A9, 'V'), + (0x20C1, 'X'), + (0x20D0, 'V'), + (0x20F1, 'X'), + (0x2100, '3', 'a/c'), + (0x2101, '3', 'a/s'), + (0x2102, 'M', 'c'), + (0x2103, 'M', '°c'), + (0x2104, 'V'), + ] + +def _seg_22() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2105, '3', 'c/o'), + (0x2106, '3', 'c/u'), + (0x2107, 'M', 'ɛ'), + (0x2108, 'V'), + (0x2109, 'M', '°f'), + (0x210A, 'M', 'g'), + (0x210B, 'M', 'h'), + (0x210F, 'M', 'ħ'), + (0x2110, 'M', 'i'), + (0x2112, 'M', 'l'), + (0x2114, 'V'), + (0x2115, 'M', 'n'), + (0x2116, 'M', 'no'), + (0x2117, 'V'), + (0x2119, 'M', 'p'), + (0x211A, 'M', 'q'), + (0x211B, 'M', 'r'), + (0x211E, 'V'), + (0x2120, 'M', 'sm'), + (0x2121, 'M', 'tel'), + (0x2122, 'M', 'tm'), + (0x2123, 'V'), + (0x2124, 'M', 'z'), + (0x2125, 'V'), + (0x2126, 'M', 'ω'), + (0x2127, 'V'), + (0x2128, 'M', 'z'), + (0x2129, 'V'), + (0x212A, 'M', 'k'), + (0x212B, 'M', 'å'), + (0x212C, 'M', 'b'), + (0x212D, 'M', 'c'), + (0x212E, 'V'), + (0x212F, 'M', 'e'), + (0x2131, 'M', 'f'), + (0x2132, 'X'), + (0x2133, 'M', 'm'), + (0x2134, 'M', 'o'), + (0x2135, 'M', 'א'), + (0x2136, 'M', 'ב'), + (0x2137, 'M', 'ג'), + (0x2138, 'M', 'ד'), + (0x2139, 'M', 'i'), + (0x213A, 'V'), + (0x213B, 'M', 'fax'), + (0x213C, 'M', 'π'), + (0x213D, 'M', 'γ'), + (0x213F, 'M', 'π'), + (0x2140, 'M', '∑'), + (0x2141, 'V'), + (0x2145, 'M', 'd'), + (0x2147, 'M', 'e'), + (0x2148, 'M', 'i'), + (0x2149, 'M', 'j'), + (0x214A, 'V'), + (0x2150, 'M', '1⁄7'), + (0x2151, 'M', '1⁄9'), + (0x2152, 'M', '1⁄10'), + (0x2153, 'M', '1⁄3'), + (0x2154, 'M', '2⁄3'), + (0x2155, 'M', '1⁄5'), + (0x2156, 'M', '2⁄5'), + (0x2157, 'M', '3⁄5'), + (0x2158, 'M', '4⁄5'), + (0x2159, 'M', '1⁄6'), + (0x215A, 'M', '5⁄6'), + (0x215B, 'M', '1⁄8'), + (0x215C, 'M', '3⁄8'), + (0x215D, 'M', '5⁄8'), + (0x215E, 'M', '7⁄8'), + (0x215F, 'M', '1⁄'), + (0x2160, 'M', 'i'), + (0x2161, 'M', 'ii'), + (0x2162, 'M', 'iii'), + (0x2163, 'M', 'iv'), + (0x2164, 'M', 'v'), + (0x2165, 'M', 'vi'), + (0x2166, 'M', 'vii'), + (0x2167, 'M', 'viii'), + (0x2168, 'M', 'ix'), + (0x2169, 'M', 'x'), + (0x216A, 'M', 'xi'), + (0x216B, 'M', 'xii'), + (0x216C, 'M', 'l'), + (0x216D, 'M', 'c'), + (0x216E, 'M', 'd'), + (0x216F, 'M', 'm'), + (0x2170, 'M', 'i'), + (0x2171, 'M', 'ii'), + (0x2172, 'M', 'iii'), + (0x2173, 'M', 'iv'), + (0x2174, 'M', 'v'), + (0x2175, 'M', 'vi'), + (0x2176, 'M', 'vii'), + (0x2177, 'M', 'viii'), + (0x2178, 'M', 'ix'), + (0x2179, 'M', 'x'), + (0x217A, 'M', 'xi'), + (0x217B, 'M', 'xii'), + (0x217C, 'M', 'l'), + ] + +def _seg_23() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x217D, 'M', 'c'), + (0x217E, 'M', 'd'), + (0x217F, 'M', 'm'), + (0x2180, 'V'), + (0x2183, 'X'), + (0x2184, 'V'), + (0x2189, 'M', '0⁄3'), + (0x218A, 'V'), + (0x218C, 'X'), + (0x2190, 'V'), + (0x222C, 'M', '∫∫'), + (0x222D, 'M', '∫∫∫'), + (0x222E, 'V'), + (0x222F, 'M', '∮∮'), + (0x2230, 'M', '∮∮∮'), + (0x2231, 'V'), + (0x2329, 'M', '〈'), + (0x232A, 'M', '〉'), + (0x232B, 'V'), + (0x2427, 'X'), + (0x2440, 'V'), + (0x244B, 'X'), + (0x2460, 'M', '1'), + (0x2461, 'M', '2'), + (0x2462, 'M', '3'), + (0x2463, 'M', '4'), + (0x2464, 'M', '5'), + (0x2465, 'M', '6'), + (0x2466, 'M', '7'), + (0x2467, 'M', '8'), + (0x2468, 'M', '9'), + (0x2469, 'M', '10'), + (0x246A, 'M', '11'), + (0x246B, 'M', '12'), + (0x246C, 'M', '13'), + (0x246D, 'M', '14'), + (0x246E, 'M', '15'), + (0x246F, 'M', '16'), + (0x2470, 'M', '17'), + (0x2471, 'M', '18'), + (0x2472, 'M', '19'), + (0x2473, 'M', '20'), + (0x2474, '3', '(1)'), + (0x2475, '3', '(2)'), + (0x2476, '3', '(3)'), + (0x2477, '3', '(4)'), + (0x2478, '3', '(5)'), + (0x2479, '3', '(6)'), + (0x247A, '3', '(7)'), + (0x247B, '3', '(8)'), + (0x247C, '3', '(9)'), + (0x247D, '3', '(10)'), + (0x247E, '3', '(11)'), + (0x247F, '3', '(12)'), + (0x2480, '3', '(13)'), + (0x2481, '3', '(14)'), + (0x2482, '3', '(15)'), + (0x2483, '3', '(16)'), + (0x2484, '3', '(17)'), + (0x2485, '3', '(18)'), + (0x2486, '3', '(19)'), + (0x2487, '3', '(20)'), + (0x2488, 'X'), + (0x249C, '3', '(a)'), + (0x249D, '3', '(b)'), + (0x249E, '3', '(c)'), + (0x249F, '3', '(d)'), + (0x24A0, '3', '(e)'), + (0x24A1, '3', '(f)'), + (0x24A2, '3', '(g)'), + (0x24A3, '3', '(h)'), + (0x24A4, '3', '(i)'), + (0x24A5, '3', '(j)'), + (0x24A6, '3', '(k)'), + (0x24A7, '3', '(l)'), + (0x24A8, '3', '(m)'), + (0x24A9, '3', '(n)'), + (0x24AA, '3', '(o)'), + (0x24AB, '3', '(p)'), + (0x24AC, '3', '(q)'), + (0x24AD, '3', '(r)'), + (0x24AE, '3', '(s)'), + (0x24AF, '3', '(t)'), + (0x24B0, '3', '(u)'), + (0x24B1, '3', '(v)'), + (0x24B2, '3', '(w)'), + (0x24B3, '3', '(x)'), + (0x24B4, '3', '(y)'), + (0x24B5, '3', '(z)'), + (0x24B6, 'M', 'a'), + (0x24B7, 'M', 'b'), + (0x24B8, 'M', 'c'), + (0x24B9, 'M', 'd'), + (0x24BA, 'M', 'e'), + (0x24BB, 'M', 'f'), + (0x24BC, 'M', 'g'), + (0x24BD, 'M', 'h'), + (0x24BE, 'M', 'i'), + (0x24BF, 'M', 'j'), + (0x24C0, 'M', 'k'), + ] + +def _seg_24() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x24C1, 'M', 'l'), + (0x24C2, 'M', 'm'), + (0x24C3, 'M', 'n'), + (0x24C4, 'M', 'o'), + (0x24C5, 'M', 'p'), + (0x24C6, 'M', 'q'), + (0x24C7, 'M', 'r'), + (0x24C8, 'M', 's'), + (0x24C9, 'M', 't'), + (0x24CA, 'M', 'u'), + (0x24CB, 'M', 'v'), + (0x24CC, 'M', 'w'), + (0x24CD, 'M', 'x'), + (0x24CE, 'M', 'y'), + (0x24CF, 'M', 'z'), + (0x24D0, 'M', 'a'), + (0x24D1, 'M', 'b'), + (0x24D2, 'M', 'c'), + (0x24D3, 'M', 'd'), + (0x24D4, 'M', 'e'), + (0x24D5, 'M', 'f'), + (0x24D6, 'M', 'g'), + (0x24D7, 'M', 'h'), + (0x24D8, 'M', 'i'), + (0x24D9, 'M', 'j'), + (0x24DA, 'M', 'k'), + (0x24DB, 'M', 'l'), + (0x24DC, 'M', 'm'), + (0x24DD, 'M', 'n'), + (0x24DE, 'M', 'o'), + (0x24DF, 'M', 'p'), + (0x24E0, 'M', 'q'), + (0x24E1, 'M', 'r'), + (0x24E2, 'M', 's'), + (0x24E3, 'M', 't'), + (0x24E4, 'M', 'u'), + (0x24E5, 'M', 'v'), + (0x24E6, 'M', 'w'), + (0x24E7, 'M', 'x'), + (0x24E8, 'M', 'y'), + (0x24E9, 'M', 'z'), + (0x24EA, 'M', '0'), + (0x24EB, 'V'), + (0x2A0C, 'M', '∫∫∫∫'), + (0x2A0D, 'V'), + (0x2A74, '3', '::='), + (0x2A75, '3', '=='), + (0x2A76, '3', '==='), + (0x2A77, 'V'), + (0x2ADC, 'M', '⫝̸'), + (0x2ADD, 'V'), + (0x2B74, 'X'), + (0x2B76, 'V'), + (0x2B96, 'X'), + (0x2B97, 'V'), + (0x2C00, 'M', 'ⰰ'), + (0x2C01, 'M', 'ⰱ'), + (0x2C02, 'M', 'ⰲ'), + (0x2C03, 'M', 'ⰳ'), + (0x2C04, 'M', 'ⰴ'), + (0x2C05, 'M', 'ⰵ'), + (0x2C06, 'M', 'ⰶ'), + (0x2C07, 'M', 'ⰷ'), + (0x2C08, 'M', 'ⰸ'), + (0x2C09, 'M', 'ⰹ'), + (0x2C0A, 'M', 'ⰺ'), + (0x2C0B, 'M', 'ⰻ'), + (0x2C0C, 'M', 'ⰼ'), + (0x2C0D, 'M', 'ⰽ'), + (0x2C0E, 'M', 'ⰾ'), + (0x2C0F, 'M', 'ⰿ'), + (0x2C10, 'M', 'ⱀ'), + (0x2C11, 'M', 'ⱁ'), + (0x2C12, 'M', 'ⱂ'), + (0x2C13, 'M', 'ⱃ'), + (0x2C14, 'M', 'ⱄ'), + (0x2C15, 'M', 'ⱅ'), + (0x2C16, 'M', 'ⱆ'), + (0x2C17, 'M', 'ⱇ'), + (0x2C18, 'M', 'ⱈ'), + (0x2C19, 'M', 'ⱉ'), + (0x2C1A, 'M', 'ⱊ'), + (0x2C1B, 'M', 'ⱋ'), + (0x2C1C, 'M', 'ⱌ'), + (0x2C1D, 'M', 'ⱍ'), + (0x2C1E, 'M', 'ⱎ'), + (0x2C1F, 'M', 'ⱏ'), + (0x2C20, 'M', 'ⱐ'), + (0x2C21, 'M', 'ⱑ'), + (0x2C22, 'M', 'ⱒ'), + (0x2C23, 'M', 'ⱓ'), + (0x2C24, 'M', 'ⱔ'), + (0x2C25, 'M', 'ⱕ'), + (0x2C26, 'M', 'ⱖ'), + (0x2C27, 'M', 'ⱗ'), + (0x2C28, 'M', 'ⱘ'), + (0x2C29, 'M', 'ⱙ'), + (0x2C2A, 'M', 'ⱚ'), + (0x2C2B, 'M', 'ⱛ'), + (0x2C2C, 'M', 'ⱜ'), + ] + +def _seg_25() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2C2D, 'M', 'ⱝ'), + (0x2C2E, 'M', 'ⱞ'), + (0x2C2F, 'M', 'ⱟ'), + (0x2C30, 'V'), + (0x2C60, 'M', 'ⱡ'), + (0x2C61, 'V'), + (0x2C62, 'M', 'ɫ'), + (0x2C63, 'M', 'ᵽ'), + (0x2C64, 'M', 'ɽ'), + (0x2C65, 'V'), + (0x2C67, 'M', 'ⱨ'), + (0x2C68, 'V'), + (0x2C69, 'M', 'ⱪ'), + (0x2C6A, 'V'), + (0x2C6B, 'M', 'ⱬ'), + (0x2C6C, 'V'), + (0x2C6D, 'M', 'ɑ'), + (0x2C6E, 'M', 'ɱ'), + (0x2C6F, 'M', 'ɐ'), + (0x2C70, 'M', 'ɒ'), + (0x2C71, 'V'), + (0x2C72, 'M', 'ⱳ'), + (0x2C73, 'V'), + (0x2C75, 'M', 'ⱶ'), + (0x2C76, 'V'), + (0x2C7C, 'M', 'j'), + (0x2C7D, 'M', 'v'), + (0x2C7E, 'M', 'ȿ'), + (0x2C7F, 'M', 'ɀ'), + (0x2C80, 'M', 'ⲁ'), + (0x2C81, 'V'), + (0x2C82, 'M', 'ⲃ'), + (0x2C83, 'V'), + (0x2C84, 'M', 'ⲅ'), + (0x2C85, 'V'), + (0x2C86, 'M', 'ⲇ'), + (0x2C87, 'V'), + (0x2C88, 'M', 'ⲉ'), + (0x2C89, 'V'), + (0x2C8A, 'M', 'ⲋ'), + (0x2C8B, 'V'), + (0x2C8C, 'M', 'ⲍ'), + (0x2C8D, 'V'), + (0x2C8E, 'M', 'ⲏ'), + (0x2C8F, 'V'), + (0x2C90, 'M', 'ⲑ'), + (0x2C91, 'V'), + (0x2C92, 'M', 'ⲓ'), + (0x2C93, 'V'), + (0x2C94, 'M', 'ⲕ'), + (0x2C95, 'V'), + (0x2C96, 'M', 'ⲗ'), + (0x2C97, 'V'), + (0x2C98, 'M', 'ⲙ'), + (0x2C99, 'V'), + (0x2C9A, 'M', 'ⲛ'), + (0x2C9B, 'V'), + (0x2C9C, 'M', 'ⲝ'), + (0x2C9D, 'V'), + (0x2C9E, 'M', 'ⲟ'), + (0x2C9F, 'V'), + (0x2CA0, 'M', 'ⲡ'), + (0x2CA1, 'V'), + (0x2CA2, 'M', 'ⲣ'), + (0x2CA3, 'V'), + (0x2CA4, 'M', 'ⲥ'), + (0x2CA5, 'V'), + (0x2CA6, 'M', 'ⲧ'), + (0x2CA7, 'V'), + (0x2CA8, 'M', 'ⲩ'), + (0x2CA9, 'V'), + (0x2CAA, 'M', 'ⲫ'), + (0x2CAB, 'V'), + (0x2CAC, 'M', 'ⲭ'), + (0x2CAD, 'V'), + (0x2CAE, 'M', 'ⲯ'), + (0x2CAF, 'V'), + (0x2CB0, 'M', 'ⲱ'), + (0x2CB1, 'V'), + (0x2CB2, 'M', 'ⲳ'), + (0x2CB3, 'V'), + (0x2CB4, 'M', 'ⲵ'), + (0x2CB5, 'V'), + (0x2CB6, 'M', 'ⲷ'), + (0x2CB7, 'V'), + (0x2CB8, 'M', 'ⲹ'), + (0x2CB9, 'V'), + (0x2CBA, 'M', 'ⲻ'), + (0x2CBB, 'V'), + (0x2CBC, 'M', 'ⲽ'), + (0x2CBD, 'V'), + (0x2CBE, 'M', 'ⲿ'), + (0x2CBF, 'V'), + (0x2CC0, 'M', 'ⳁ'), + (0x2CC1, 'V'), + (0x2CC2, 'M', 'ⳃ'), + (0x2CC3, 'V'), + (0x2CC4, 'M', 'ⳅ'), + (0x2CC5, 'V'), + (0x2CC6, 'M', 'ⳇ'), + ] + +def _seg_26() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2CC7, 'V'), + (0x2CC8, 'M', 'ⳉ'), + (0x2CC9, 'V'), + (0x2CCA, 'M', 'ⳋ'), + (0x2CCB, 'V'), + (0x2CCC, 'M', 'ⳍ'), + (0x2CCD, 'V'), + (0x2CCE, 'M', 'ⳏ'), + (0x2CCF, 'V'), + (0x2CD0, 'M', 'ⳑ'), + (0x2CD1, 'V'), + (0x2CD2, 'M', 'ⳓ'), + (0x2CD3, 'V'), + (0x2CD4, 'M', 'ⳕ'), + (0x2CD5, 'V'), + (0x2CD6, 'M', 'ⳗ'), + (0x2CD7, 'V'), + (0x2CD8, 'M', 'ⳙ'), + (0x2CD9, 'V'), + (0x2CDA, 'M', 'ⳛ'), + (0x2CDB, 'V'), + (0x2CDC, 'M', 'ⳝ'), + (0x2CDD, 'V'), + (0x2CDE, 'M', 'ⳟ'), + (0x2CDF, 'V'), + (0x2CE0, 'M', 'ⳡ'), + (0x2CE1, 'V'), + (0x2CE2, 'M', 'ⳣ'), + (0x2CE3, 'V'), + (0x2CEB, 'M', 'ⳬ'), + (0x2CEC, 'V'), + (0x2CED, 'M', 'ⳮ'), + (0x2CEE, 'V'), + (0x2CF2, 'M', 'ⳳ'), + (0x2CF3, 'V'), + (0x2CF4, 'X'), + (0x2CF9, 'V'), + (0x2D26, 'X'), + (0x2D27, 'V'), + (0x2D28, 'X'), + (0x2D2D, 'V'), + (0x2D2E, 'X'), + (0x2D30, 'V'), + (0x2D68, 'X'), + (0x2D6F, 'M', 'ⵡ'), + (0x2D70, 'V'), + (0x2D71, 'X'), + (0x2D7F, 'V'), + (0x2D97, 'X'), + (0x2DA0, 'V'), + (0x2DA7, 'X'), + (0x2DA8, 'V'), + (0x2DAF, 'X'), + (0x2DB0, 'V'), + (0x2DB7, 'X'), + (0x2DB8, 'V'), + (0x2DBF, 'X'), + (0x2DC0, 'V'), + (0x2DC7, 'X'), + (0x2DC8, 'V'), + (0x2DCF, 'X'), + (0x2DD0, 'V'), + (0x2DD7, 'X'), + (0x2DD8, 'V'), + (0x2DDF, 'X'), + (0x2DE0, 'V'), + (0x2E5E, 'X'), + (0x2E80, 'V'), + (0x2E9A, 'X'), + (0x2E9B, 'V'), + (0x2E9F, 'M', '母'), + (0x2EA0, 'V'), + (0x2EF3, 'M', '龟'), + (0x2EF4, 'X'), + (0x2F00, 'M', '一'), + (0x2F01, 'M', '丨'), + (0x2F02, 'M', '丶'), + (0x2F03, 'M', '丿'), + (0x2F04, 'M', '乙'), + (0x2F05, 'M', '亅'), + (0x2F06, 'M', '二'), + (0x2F07, 'M', '亠'), + (0x2F08, 'M', '人'), + (0x2F09, 'M', '儿'), + (0x2F0A, 'M', '入'), + (0x2F0B, 'M', '八'), + (0x2F0C, 'M', '冂'), + (0x2F0D, 'M', '冖'), + (0x2F0E, 'M', '冫'), + (0x2F0F, 'M', '几'), + (0x2F10, 'M', '凵'), + (0x2F11, 'M', '刀'), + (0x2F12, 'M', '力'), + (0x2F13, 'M', '勹'), + (0x2F14, 'M', '匕'), + (0x2F15, 'M', '匚'), + (0x2F16, 'M', '匸'), + (0x2F17, 'M', '十'), + (0x2F18, 'M', '卜'), + (0x2F19, 'M', '卩'), + ] + +def _seg_27() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F1A, 'M', '厂'), + (0x2F1B, 'M', '厶'), + (0x2F1C, 'M', '又'), + (0x2F1D, 'M', '口'), + (0x2F1E, 'M', '囗'), + (0x2F1F, 'M', '土'), + (0x2F20, 'M', '士'), + (0x2F21, 'M', '夂'), + (0x2F22, 'M', '夊'), + (0x2F23, 'M', '夕'), + (0x2F24, 'M', '大'), + (0x2F25, 'M', '女'), + (0x2F26, 'M', '子'), + (0x2F27, 'M', '宀'), + (0x2F28, 'M', '寸'), + (0x2F29, 'M', '小'), + (0x2F2A, 'M', '尢'), + (0x2F2B, 'M', '尸'), + (0x2F2C, 'M', '屮'), + (0x2F2D, 'M', '山'), + (0x2F2E, 'M', '巛'), + (0x2F2F, 'M', '工'), + (0x2F30, 'M', '己'), + (0x2F31, 'M', '巾'), + (0x2F32, 'M', '干'), + (0x2F33, 'M', '幺'), + (0x2F34, 'M', '广'), + (0x2F35, 'M', '廴'), + (0x2F36, 'M', '廾'), + (0x2F37, 'M', '弋'), + (0x2F38, 'M', '弓'), + (0x2F39, 'M', '彐'), + (0x2F3A, 'M', '彡'), + (0x2F3B, 'M', '彳'), + (0x2F3C, 'M', '心'), + (0x2F3D, 'M', '戈'), + (0x2F3E, 'M', '戶'), + (0x2F3F, 'M', '手'), + (0x2F40, 'M', '支'), + (0x2F41, 'M', '攴'), + (0x2F42, 'M', '文'), + (0x2F43, 'M', '斗'), + (0x2F44, 'M', '斤'), + (0x2F45, 'M', '方'), + (0x2F46, 'M', '无'), + (0x2F47, 'M', '日'), + (0x2F48, 'M', '曰'), + (0x2F49, 'M', '月'), + (0x2F4A, 'M', '木'), + (0x2F4B, 'M', '欠'), + (0x2F4C, 'M', '止'), + (0x2F4D, 'M', '歹'), + (0x2F4E, 'M', '殳'), + (0x2F4F, 'M', '毋'), + (0x2F50, 'M', '比'), + (0x2F51, 'M', '毛'), + (0x2F52, 'M', '氏'), + (0x2F53, 'M', '气'), + (0x2F54, 'M', '水'), + (0x2F55, 'M', '火'), + (0x2F56, 'M', '爪'), + (0x2F57, 'M', '父'), + (0x2F58, 'M', '爻'), + (0x2F59, 'M', '爿'), + (0x2F5A, 'M', '片'), + (0x2F5B, 'M', '牙'), + (0x2F5C, 'M', '牛'), + (0x2F5D, 'M', '犬'), + (0x2F5E, 'M', '玄'), + (0x2F5F, 'M', '玉'), + (0x2F60, 'M', '瓜'), + (0x2F61, 'M', '瓦'), + (0x2F62, 'M', '甘'), + (0x2F63, 'M', '生'), + (0x2F64, 'M', '用'), + (0x2F65, 'M', '田'), + (0x2F66, 'M', '疋'), + (0x2F67, 'M', '疒'), + (0x2F68, 'M', '癶'), + (0x2F69, 'M', '白'), + (0x2F6A, 'M', '皮'), + (0x2F6B, 'M', '皿'), + (0x2F6C, 'M', '目'), + (0x2F6D, 'M', '矛'), + (0x2F6E, 'M', '矢'), + (0x2F6F, 'M', '石'), + (0x2F70, 'M', '示'), + (0x2F71, 'M', '禸'), + (0x2F72, 'M', '禾'), + (0x2F73, 'M', '穴'), + (0x2F74, 'M', '立'), + (0x2F75, 'M', '竹'), + (0x2F76, 'M', '米'), + (0x2F77, 'M', '糸'), + (0x2F78, 'M', '缶'), + (0x2F79, 'M', '网'), + (0x2F7A, 'M', '羊'), + (0x2F7B, 'M', '羽'), + (0x2F7C, 'M', '老'), + (0x2F7D, 'M', '而'), + ] + +def _seg_28() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F7E, 'M', '耒'), + (0x2F7F, 'M', '耳'), + (0x2F80, 'M', '聿'), + (0x2F81, 'M', '肉'), + (0x2F82, 'M', '臣'), + (0x2F83, 'M', '自'), + (0x2F84, 'M', '至'), + (0x2F85, 'M', '臼'), + (0x2F86, 'M', '舌'), + (0x2F87, 'M', '舛'), + (0x2F88, 'M', '舟'), + (0x2F89, 'M', '艮'), + (0x2F8A, 'M', '色'), + (0x2F8B, 'M', '艸'), + (0x2F8C, 'M', '虍'), + (0x2F8D, 'M', '虫'), + (0x2F8E, 'M', '血'), + (0x2F8F, 'M', '行'), + (0x2F90, 'M', '衣'), + (0x2F91, 'M', '襾'), + (0x2F92, 'M', '見'), + (0x2F93, 'M', '角'), + (0x2F94, 'M', '言'), + (0x2F95, 'M', '谷'), + (0x2F96, 'M', '豆'), + (0x2F97, 'M', '豕'), + (0x2F98, 'M', '豸'), + (0x2F99, 'M', '貝'), + (0x2F9A, 'M', '赤'), + (0x2F9B, 'M', '走'), + (0x2F9C, 'M', '足'), + (0x2F9D, 'M', '身'), + (0x2F9E, 'M', '車'), + (0x2F9F, 'M', '辛'), + (0x2FA0, 'M', '辰'), + (0x2FA1, 'M', '辵'), + (0x2FA2, 'M', '邑'), + (0x2FA3, 'M', '酉'), + (0x2FA4, 'M', '釆'), + (0x2FA5, 'M', '里'), + (0x2FA6, 'M', '金'), + (0x2FA7, 'M', '長'), + (0x2FA8, 'M', '門'), + (0x2FA9, 'M', '阜'), + (0x2FAA, 'M', '隶'), + (0x2FAB, 'M', '隹'), + (0x2FAC, 'M', '雨'), + (0x2FAD, 'M', '靑'), + (0x2FAE, 'M', '非'), + (0x2FAF, 'M', '面'), + (0x2FB0, 'M', '革'), + (0x2FB1, 'M', '韋'), + (0x2FB2, 'M', '韭'), + (0x2FB3, 'M', '音'), + (0x2FB4, 'M', '頁'), + (0x2FB5, 'M', '風'), + (0x2FB6, 'M', '飛'), + (0x2FB7, 'M', '食'), + (0x2FB8, 'M', '首'), + (0x2FB9, 'M', '香'), + (0x2FBA, 'M', '馬'), + (0x2FBB, 'M', '骨'), + (0x2FBC, 'M', '高'), + (0x2FBD, 'M', '髟'), + (0x2FBE, 'M', '鬥'), + (0x2FBF, 'M', '鬯'), + (0x2FC0, 'M', '鬲'), + (0x2FC1, 'M', '鬼'), + (0x2FC2, 'M', '魚'), + (0x2FC3, 'M', '鳥'), + (0x2FC4, 'M', '鹵'), + (0x2FC5, 'M', '鹿'), + (0x2FC6, 'M', '麥'), + (0x2FC7, 'M', '麻'), + (0x2FC8, 'M', '黃'), + (0x2FC9, 'M', '黍'), + (0x2FCA, 'M', '黑'), + (0x2FCB, 'M', '黹'), + (0x2FCC, 'M', '黽'), + (0x2FCD, 'M', '鼎'), + (0x2FCE, 'M', '鼓'), + (0x2FCF, 'M', '鼠'), + (0x2FD0, 'M', '鼻'), + (0x2FD1, 'M', '齊'), + (0x2FD2, 'M', '齒'), + (0x2FD3, 'M', '龍'), + (0x2FD4, 'M', '龜'), + (0x2FD5, 'M', '龠'), + (0x2FD6, 'X'), + (0x3000, '3', ' '), + (0x3001, 'V'), + (0x3002, 'M', '.'), + (0x3003, 'V'), + (0x3036, 'M', '〒'), + (0x3037, 'V'), + (0x3038, 'M', '十'), + (0x3039, 'M', '卄'), + (0x303A, 'M', '卅'), + (0x303B, 'V'), + (0x3040, 'X'), + ] + +def _seg_29() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3041, 'V'), + (0x3097, 'X'), + (0x3099, 'V'), + (0x309B, '3', ' ゙'), + (0x309C, '3', ' ゚'), + (0x309D, 'V'), + (0x309F, 'M', 'より'), + (0x30A0, 'V'), + (0x30FF, 'M', 'コト'), + (0x3100, 'X'), + (0x3105, 'V'), + (0x3130, 'X'), + (0x3131, 'M', 'ᄀ'), + (0x3132, 'M', 'ᄁ'), + (0x3133, 'M', 'ᆪ'), + (0x3134, 'M', 'ᄂ'), + (0x3135, 'M', 'ᆬ'), + (0x3136, 'M', 'ᆭ'), + (0x3137, 'M', 'ᄃ'), + (0x3138, 'M', 'ᄄ'), + (0x3139, 'M', 'ᄅ'), + (0x313A, 'M', 'ᆰ'), + (0x313B, 'M', 'ᆱ'), + (0x313C, 'M', 'ᆲ'), + (0x313D, 'M', 'ᆳ'), + (0x313E, 'M', 'ᆴ'), + (0x313F, 'M', 'ᆵ'), + (0x3140, 'M', 'ᄚ'), + (0x3141, 'M', 'ᄆ'), + (0x3142, 'M', 'ᄇ'), + (0x3143, 'M', 'ᄈ'), + (0x3144, 'M', 'ᄡ'), + (0x3145, 'M', 'ᄉ'), + (0x3146, 'M', 'ᄊ'), + (0x3147, 'M', 'ᄋ'), + (0x3148, 'M', 'ᄌ'), + (0x3149, 'M', 'ᄍ'), + (0x314A, 'M', 'ᄎ'), + (0x314B, 'M', 'ᄏ'), + (0x314C, 'M', 'ᄐ'), + (0x314D, 'M', 'ᄑ'), + (0x314E, 'M', 'ᄒ'), + (0x314F, 'M', 'ᅡ'), + (0x3150, 'M', 'ᅢ'), + (0x3151, 'M', 'ᅣ'), + (0x3152, 'M', 'ᅤ'), + (0x3153, 'M', 'ᅥ'), + (0x3154, 'M', 'ᅦ'), + (0x3155, 'M', 'ᅧ'), + (0x3156, 'M', 'ᅨ'), + (0x3157, 'M', 'ᅩ'), + (0x3158, 'M', 'ᅪ'), + (0x3159, 'M', 'ᅫ'), + (0x315A, 'M', 'ᅬ'), + (0x315B, 'M', 'ᅭ'), + (0x315C, 'M', 'ᅮ'), + (0x315D, 'M', 'ᅯ'), + (0x315E, 'M', 'ᅰ'), + (0x315F, 'M', 'ᅱ'), + (0x3160, 'M', 'ᅲ'), + (0x3161, 'M', 'ᅳ'), + (0x3162, 'M', 'ᅴ'), + (0x3163, 'M', 'ᅵ'), + (0x3164, 'X'), + (0x3165, 'M', 'ᄔ'), + (0x3166, 'M', 'ᄕ'), + (0x3167, 'M', 'ᇇ'), + (0x3168, 'M', 'ᇈ'), + (0x3169, 'M', 'ᇌ'), + (0x316A, 'M', 'ᇎ'), + (0x316B, 'M', 'ᇓ'), + (0x316C, 'M', 'ᇗ'), + (0x316D, 'M', 'ᇙ'), + (0x316E, 'M', 'ᄜ'), + (0x316F, 'M', 'ᇝ'), + (0x3170, 'M', 'ᇟ'), + (0x3171, 'M', 'ᄝ'), + (0x3172, 'M', 'ᄞ'), + (0x3173, 'M', 'ᄠ'), + (0x3174, 'M', 'ᄢ'), + (0x3175, 'M', 'ᄣ'), + (0x3176, 'M', 'ᄧ'), + (0x3177, 'M', 'ᄩ'), + (0x3178, 'M', 'ᄫ'), + (0x3179, 'M', 'ᄬ'), + (0x317A, 'M', 'ᄭ'), + (0x317B, 'M', 'ᄮ'), + (0x317C, 'M', 'ᄯ'), + (0x317D, 'M', 'ᄲ'), + (0x317E, 'M', 'ᄶ'), + (0x317F, 'M', 'ᅀ'), + (0x3180, 'M', 'ᅇ'), + (0x3181, 'M', 'ᅌ'), + (0x3182, 'M', 'ᇱ'), + (0x3183, 'M', 'ᇲ'), + (0x3184, 'M', 'ᅗ'), + (0x3185, 'M', 'ᅘ'), + (0x3186, 'M', 'ᅙ'), + (0x3187, 'M', 'ᆄ'), + (0x3188, 'M', 'ᆅ'), + ] + +def _seg_30() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3189, 'M', 'ᆈ'), + (0x318A, 'M', 'ᆑ'), + (0x318B, 'M', 'ᆒ'), + (0x318C, 'M', 'ᆔ'), + (0x318D, 'M', 'ᆞ'), + (0x318E, 'M', 'ᆡ'), + (0x318F, 'X'), + (0x3190, 'V'), + (0x3192, 'M', '一'), + (0x3193, 'M', '二'), + (0x3194, 'M', '三'), + (0x3195, 'M', '四'), + (0x3196, 'M', '上'), + (0x3197, 'M', '中'), + (0x3198, 'M', '下'), + (0x3199, 'M', '甲'), + (0x319A, 'M', '乙'), + (0x319B, 'M', '丙'), + (0x319C, 'M', '丁'), + (0x319D, 'M', '天'), + (0x319E, 'M', '地'), + (0x319F, 'M', '人'), + (0x31A0, 'V'), + (0x31E4, 'X'), + (0x31F0, 'V'), + (0x3200, '3', '(ᄀ)'), + (0x3201, '3', '(ᄂ)'), + (0x3202, '3', '(ᄃ)'), + (0x3203, '3', '(ᄅ)'), + (0x3204, '3', '(ᄆ)'), + (0x3205, '3', '(ᄇ)'), + (0x3206, '3', '(ᄉ)'), + (0x3207, '3', '(ᄋ)'), + (0x3208, '3', '(ᄌ)'), + (0x3209, '3', '(ᄎ)'), + (0x320A, '3', '(ᄏ)'), + (0x320B, '3', '(ᄐ)'), + (0x320C, '3', '(ᄑ)'), + (0x320D, '3', '(ᄒ)'), + (0x320E, '3', '(가)'), + (0x320F, '3', '(나)'), + (0x3210, '3', '(다)'), + (0x3211, '3', '(라)'), + (0x3212, '3', '(마)'), + (0x3213, '3', '(바)'), + (0x3214, '3', '(사)'), + (0x3215, '3', '(아)'), + (0x3216, '3', '(자)'), + (0x3217, '3', '(차)'), + (0x3218, '3', '(카)'), + (0x3219, '3', '(타)'), + (0x321A, '3', '(파)'), + (0x321B, '3', '(하)'), + (0x321C, '3', '(주)'), + (0x321D, '3', '(오전)'), + (0x321E, '3', '(오후)'), + (0x321F, 'X'), + (0x3220, '3', '(一)'), + (0x3221, '3', '(二)'), + (0x3222, '3', '(三)'), + (0x3223, '3', '(四)'), + (0x3224, '3', '(五)'), + (0x3225, '3', '(六)'), + (0x3226, '3', '(七)'), + (0x3227, '3', '(八)'), + (0x3228, '3', '(九)'), + (0x3229, '3', '(十)'), + (0x322A, '3', '(月)'), + (0x322B, '3', '(火)'), + (0x322C, '3', '(水)'), + (0x322D, '3', '(木)'), + (0x322E, '3', '(金)'), + (0x322F, '3', '(土)'), + (0x3230, '3', '(日)'), + (0x3231, '3', '(株)'), + (0x3232, '3', '(有)'), + (0x3233, '3', '(社)'), + (0x3234, '3', '(名)'), + (0x3235, '3', '(特)'), + (0x3236, '3', '(財)'), + (0x3237, '3', '(祝)'), + (0x3238, '3', '(労)'), + (0x3239, '3', '(代)'), + (0x323A, '3', '(呼)'), + (0x323B, '3', '(学)'), + (0x323C, '3', '(監)'), + (0x323D, '3', '(企)'), + (0x323E, '3', '(資)'), + (0x323F, '3', '(協)'), + (0x3240, '3', '(祭)'), + (0x3241, '3', '(休)'), + (0x3242, '3', '(自)'), + (0x3243, '3', '(至)'), + (0x3244, 'M', '問'), + (0x3245, 'M', '幼'), + (0x3246, 'M', '文'), + (0x3247, 'M', '箏'), + (0x3248, 'V'), + (0x3250, 'M', 'pte'), + (0x3251, 'M', '21'), + ] + +def _seg_31() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x3252, 'M', '22'), + (0x3253, 'M', '23'), + (0x3254, 'M', '24'), + (0x3255, 'M', '25'), + (0x3256, 'M', '26'), + (0x3257, 'M', '27'), + (0x3258, 'M', '28'), + (0x3259, 'M', '29'), + (0x325A, 'M', '30'), + (0x325B, 'M', '31'), + (0x325C, 'M', '32'), + (0x325D, 'M', '33'), + (0x325E, 'M', '34'), + (0x325F, 'M', '35'), + (0x3260, 'M', 'ᄀ'), + (0x3261, 'M', 'ᄂ'), + (0x3262, 'M', 'ᄃ'), + (0x3263, 'M', 'ᄅ'), + (0x3264, 'M', 'ᄆ'), + (0x3265, 'M', 'ᄇ'), + (0x3266, 'M', 'ᄉ'), + (0x3267, 'M', 'ᄋ'), + (0x3268, 'M', 'ᄌ'), + (0x3269, 'M', 'ᄎ'), + (0x326A, 'M', 'ᄏ'), + (0x326B, 'M', 'ᄐ'), + (0x326C, 'M', 'ᄑ'), + (0x326D, 'M', 'ᄒ'), + (0x326E, 'M', '가'), + (0x326F, 'M', '나'), + (0x3270, 'M', '다'), + (0x3271, 'M', '라'), + (0x3272, 'M', '마'), + (0x3273, 'M', '바'), + (0x3274, 'M', '사'), + (0x3275, 'M', '아'), + (0x3276, 'M', '자'), + (0x3277, 'M', '차'), + (0x3278, 'M', '카'), + (0x3279, 'M', '타'), + (0x327A, 'M', '파'), + (0x327B, 'M', '하'), + (0x327C, 'M', '참고'), + (0x327D, 'M', '주의'), + (0x327E, 'M', '우'), + (0x327F, 'V'), + (0x3280, 'M', '一'), + (0x3281, 'M', '二'), + (0x3282, 'M', '三'), + (0x3283, 'M', '四'), + (0x3284, 'M', '五'), + (0x3285, 'M', '六'), + (0x3286, 'M', '七'), + (0x3287, 'M', '八'), + (0x3288, 'M', '九'), + (0x3289, 'M', '十'), + (0x328A, 'M', '月'), + (0x328B, 'M', '火'), + (0x328C, 'M', '水'), + (0x328D, 'M', '木'), + (0x328E, 'M', '金'), + (0x328F, 'M', '土'), + (0x3290, 'M', '日'), + (0x3291, 'M', '株'), + (0x3292, 'M', '有'), + (0x3293, 'M', '社'), + (0x3294, 'M', '名'), + (0x3295, 'M', '特'), + (0x3296, 'M', '財'), + (0x3297, 'M', '祝'), + (0x3298, 'M', '労'), + (0x3299, 'M', '秘'), + (0x329A, 'M', '男'), + (0x329B, 'M', '女'), + (0x329C, 'M', '適'), + (0x329D, 'M', '優'), + (0x329E, 'M', '印'), + (0x329F, 'M', '注'), + (0x32A0, 'M', '項'), + (0x32A1, 'M', '休'), + (0x32A2, 'M', '写'), + (0x32A3, 'M', '正'), + (0x32A4, 'M', '上'), + (0x32A5, 'M', '中'), + (0x32A6, 'M', '下'), + (0x32A7, 'M', '左'), + (0x32A8, 'M', '右'), + (0x32A9, 'M', '医'), + (0x32AA, 'M', '宗'), + (0x32AB, 'M', '学'), + (0x32AC, 'M', '監'), + (0x32AD, 'M', '企'), + (0x32AE, 'M', '資'), + (0x32AF, 'M', '協'), + (0x32B0, 'M', '夜'), + (0x32B1, 'M', '36'), + (0x32B2, 'M', '37'), + (0x32B3, 'M', '38'), + (0x32B4, 'M', '39'), + (0x32B5, 'M', '40'), + ] + +def _seg_32() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x32B6, 'M', '41'), + (0x32B7, 'M', '42'), + (0x32B8, 'M', '43'), + (0x32B9, 'M', '44'), + (0x32BA, 'M', '45'), + (0x32BB, 'M', '46'), + (0x32BC, 'M', '47'), + (0x32BD, 'M', '48'), + (0x32BE, 'M', '49'), + (0x32BF, 'M', '50'), + (0x32C0, 'M', '1月'), + (0x32C1, 'M', '2月'), + (0x32C2, 'M', '3月'), + (0x32C3, 'M', '4月'), + (0x32C4, 'M', '5月'), + (0x32C5, 'M', '6月'), + (0x32C6, 'M', '7月'), + (0x32C7, 'M', '8月'), + (0x32C8, 'M', '9月'), + (0x32C9, 'M', '10月'), + (0x32CA, 'M', '11月'), + (0x32CB, 'M', '12月'), + (0x32CC, 'M', 'hg'), + (0x32CD, 'M', 'erg'), + (0x32CE, 'M', 'ev'), + (0x32CF, 'M', 'ltd'), + (0x32D0, 'M', 'ア'), + (0x32D1, 'M', 'イ'), + (0x32D2, 'M', 'ウ'), + (0x32D3, 'M', 'エ'), + (0x32D4, 'M', 'オ'), + (0x32D5, 'M', 'カ'), + (0x32D6, 'M', 'キ'), + (0x32D7, 'M', 'ク'), + (0x32D8, 'M', 'ケ'), + (0x32D9, 'M', 'コ'), + (0x32DA, 'M', 'サ'), + (0x32DB, 'M', 'シ'), + (0x32DC, 'M', 'ス'), + (0x32DD, 'M', 'セ'), + (0x32DE, 'M', 'ソ'), + (0x32DF, 'M', 'タ'), + (0x32E0, 'M', 'チ'), + (0x32E1, 'M', 'ツ'), + (0x32E2, 'M', 'テ'), + (0x32E3, 'M', 'ト'), + (0x32E4, 'M', 'ナ'), + (0x32E5, 'M', 'ニ'), + (0x32E6, 'M', 'ヌ'), + (0x32E7, 'M', 'ネ'), + (0x32E8, 'M', 'ノ'), + (0x32E9, 'M', 'ハ'), + (0x32EA, 'M', 'ヒ'), + (0x32EB, 'M', 'フ'), + (0x32EC, 'M', 'ヘ'), + (0x32ED, 'M', 'ホ'), + (0x32EE, 'M', 'マ'), + (0x32EF, 'M', 'ミ'), + (0x32F0, 'M', 'ム'), + (0x32F1, 'M', 'メ'), + (0x32F2, 'M', 'モ'), + (0x32F3, 'M', 'ヤ'), + (0x32F4, 'M', 'ユ'), + (0x32F5, 'M', 'ヨ'), + (0x32F6, 'M', 'ラ'), + (0x32F7, 'M', 'リ'), + (0x32F8, 'M', 'ル'), + (0x32F9, 'M', 'レ'), + (0x32FA, 'M', 'ロ'), + (0x32FB, 'M', 'ワ'), + (0x32FC, 'M', 'ヰ'), + (0x32FD, 'M', 'ヱ'), + (0x32FE, 'M', 'ヲ'), + (0x32FF, 'M', '令和'), + (0x3300, 'M', 'アパート'), + (0x3301, 'M', 'アルファ'), + (0x3302, 'M', 'アンペア'), + (0x3303, 'M', 'アール'), + (0x3304, 'M', 'イニング'), + (0x3305, 'M', 'インチ'), + (0x3306, 'M', 'ウォン'), + (0x3307, 'M', 'エスクード'), + (0x3308, 'M', 'エーカー'), + (0x3309, 'M', 'オンス'), + (0x330A, 'M', 'オーム'), + (0x330B, 'M', 'カイリ'), + (0x330C, 'M', 'カラット'), + (0x330D, 'M', 'カロリー'), + (0x330E, 'M', 'ガロン'), + (0x330F, 'M', 'ガンマ'), + (0x3310, 'M', 'ギガ'), + (0x3311, 'M', 'ギニー'), + (0x3312, 'M', 'キュリー'), + (0x3313, 'M', 'ギルダー'), + (0x3314, 'M', 'キロ'), + (0x3315, 'M', 'キログラム'), + (0x3316, 'M', 'キロメートル'), + (0x3317, 'M', 'キロワット'), + (0x3318, 'M', 'グラム'), + (0x3319, 'M', 'グラムトン'), + ] + +def _seg_33() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x331A, 'M', 'クルゼイロ'), + (0x331B, 'M', 'クローネ'), + (0x331C, 'M', 'ケース'), + (0x331D, 'M', 'コルナ'), + (0x331E, 'M', 'コーポ'), + (0x331F, 'M', 'サイクル'), + (0x3320, 'M', 'サンチーム'), + (0x3321, 'M', 'シリング'), + (0x3322, 'M', 'センチ'), + (0x3323, 'M', 'セント'), + (0x3324, 'M', 'ダース'), + (0x3325, 'M', 'デシ'), + (0x3326, 'M', 'ドル'), + (0x3327, 'M', 'トン'), + (0x3328, 'M', 'ナノ'), + (0x3329, 'M', 'ノット'), + (0x332A, 'M', 'ハイツ'), + (0x332B, 'M', 'パーセント'), + (0x332C, 'M', 'パーツ'), + (0x332D, 'M', 'バーレル'), + (0x332E, 'M', 'ピアストル'), + (0x332F, 'M', 'ピクル'), + (0x3330, 'M', 'ピコ'), + (0x3331, 'M', 'ビル'), + (0x3332, 'M', 'ファラッド'), + (0x3333, 'M', 'フィート'), + (0x3334, 'M', 'ブッシェル'), + (0x3335, 'M', 'フラン'), + (0x3336, 'M', 'ヘクタール'), + (0x3337, 'M', 'ペソ'), + (0x3338, 'M', 'ペニヒ'), + (0x3339, 'M', 'ヘルツ'), + (0x333A, 'M', 'ペンス'), + (0x333B, 'M', 'ページ'), + (0x333C, 'M', 'ベータ'), + (0x333D, 'M', 'ポイント'), + (0x333E, 'M', 'ボルト'), + (0x333F, 'M', 'ホン'), + (0x3340, 'M', 'ポンド'), + (0x3341, 'M', 'ホール'), + (0x3342, 'M', 'ホーン'), + (0x3343, 'M', 'マイクロ'), + (0x3344, 'M', 'マイル'), + (0x3345, 'M', 'マッハ'), + (0x3346, 'M', 'マルク'), + (0x3347, 'M', 'マンション'), + (0x3348, 'M', 'ミクロン'), + (0x3349, 'M', 'ミリ'), + (0x334A, 'M', 'ミリバール'), + (0x334B, 'M', 'メガ'), + (0x334C, 'M', 'メガトン'), + (0x334D, 'M', 'メートル'), + (0x334E, 'M', 'ヤード'), + (0x334F, 'M', 'ヤール'), + (0x3350, 'M', 'ユアン'), + (0x3351, 'M', 'リットル'), + (0x3352, 'M', 'リラ'), + (0x3353, 'M', 'ルピー'), + (0x3354, 'M', 'ルーブル'), + (0x3355, 'M', 'レム'), + (0x3356, 'M', 'レントゲン'), + (0x3357, 'M', 'ワット'), + (0x3358, 'M', '0点'), + (0x3359, 'M', '1点'), + (0x335A, 'M', '2点'), + (0x335B, 'M', '3点'), + (0x335C, 'M', '4点'), + (0x335D, 'M', '5点'), + (0x335E, 'M', '6点'), + (0x335F, 'M', '7点'), + (0x3360, 'M', '8点'), + (0x3361, 'M', '9点'), + (0x3362, 'M', '10点'), + (0x3363, 'M', '11点'), + (0x3364, 'M', '12点'), + (0x3365, 'M', '13点'), + (0x3366, 'M', '14点'), + (0x3367, 'M', '15点'), + (0x3368, 'M', '16点'), + (0x3369, 'M', '17点'), + (0x336A, 'M', '18点'), + (0x336B, 'M', '19点'), + (0x336C, 'M', '20点'), + (0x336D, 'M', '21点'), + (0x336E, 'M', '22点'), + (0x336F, 'M', '23点'), + (0x3370, 'M', '24点'), + (0x3371, 'M', 'hpa'), + (0x3372, 'M', 'da'), + (0x3373, 'M', 'au'), + (0x3374, 'M', 'bar'), + (0x3375, 'M', 'ov'), + (0x3376, 'M', 'pc'), + (0x3377, 'M', 'dm'), + (0x3378, 'M', 'dm2'), + (0x3379, 'M', 'dm3'), + (0x337A, 'M', 'iu'), + (0x337B, 'M', '平成'), + (0x337C, 'M', '昭和'), + (0x337D, 'M', '大正'), + ] + +def _seg_34() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x337E, 'M', '明治'), + (0x337F, 'M', '株式会社'), + (0x3380, 'M', 'pa'), + (0x3381, 'M', 'na'), + (0x3382, 'M', 'μa'), + (0x3383, 'M', 'ma'), + (0x3384, 'M', 'ka'), + (0x3385, 'M', 'kb'), + (0x3386, 'M', 'mb'), + (0x3387, 'M', 'gb'), + (0x3388, 'M', 'cal'), + (0x3389, 'M', 'kcal'), + (0x338A, 'M', 'pf'), + (0x338B, 'M', 'nf'), + (0x338C, 'M', 'μf'), + (0x338D, 'M', 'μg'), + (0x338E, 'M', 'mg'), + (0x338F, 'M', 'kg'), + (0x3390, 'M', 'hz'), + (0x3391, 'M', 'khz'), + (0x3392, 'M', 'mhz'), + (0x3393, 'M', 'ghz'), + (0x3394, 'M', 'thz'), + (0x3395, 'M', 'μl'), + (0x3396, 'M', 'ml'), + (0x3397, 'M', 'dl'), + (0x3398, 'M', 'kl'), + (0x3399, 'M', 'fm'), + (0x339A, 'M', 'nm'), + (0x339B, 'M', 'μm'), + (0x339C, 'M', 'mm'), + (0x339D, 'M', 'cm'), + (0x339E, 'M', 'km'), + (0x339F, 'M', 'mm2'), + (0x33A0, 'M', 'cm2'), + (0x33A1, 'M', 'm2'), + (0x33A2, 'M', 'km2'), + (0x33A3, 'M', 'mm3'), + (0x33A4, 'M', 'cm3'), + (0x33A5, 'M', 'm3'), + (0x33A6, 'M', 'km3'), + (0x33A7, 'M', 'm∕s'), + (0x33A8, 'M', 'm∕s2'), + (0x33A9, 'M', 'pa'), + (0x33AA, 'M', 'kpa'), + (0x33AB, 'M', 'mpa'), + (0x33AC, 'M', 'gpa'), + (0x33AD, 'M', 'rad'), + (0x33AE, 'M', 'rad∕s'), + (0x33AF, 'M', 'rad∕s2'), + (0x33B0, 'M', 'ps'), + (0x33B1, 'M', 'ns'), + (0x33B2, 'M', 'μs'), + (0x33B3, 'M', 'ms'), + (0x33B4, 'M', 'pv'), + (0x33B5, 'M', 'nv'), + (0x33B6, 'M', 'μv'), + (0x33B7, 'M', 'mv'), + (0x33B8, 'M', 'kv'), + (0x33B9, 'M', 'mv'), + (0x33BA, 'M', 'pw'), + (0x33BB, 'M', 'nw'), + (0x33BC, 'M', 'μw'), + (0x33BD, 'M', 'mw'), + (0x33BE, 'M', 'kw'), + (0x33BF, 'M', 'mw'), + (0x33C0, 'M', 'kω'), + (0x33C1, 'M', 'mω'), + (0x33C2, 'X'), + (0x33C3, 'M', 'bq'), + (0x33C4, 'M', 'cc'), + (0x33C5, 'M', 'cd'), + (0x33C6, 'M', 'c∕kg'), + (0x33C7, 'X'), + (0x33C8, 'M', 'db'), + (0x33C9, 'M', 'gy'), + (0x33CA, 'M', 'ha'), + (0x33CB, 'M', 'hp'), + (0x33CC, 'M', 'in'), + (0x33CD, 'M', 'kk'), + (0x33CE, 'M', 'km'), + (0x33CF, 'M', 'kt'), + (0x33D0, 'M', 'lm'), + (0x33D1, 'M', 'ln'), + (0x33D2, 'M', 'log'), + (0x33D3, 'M', 'lx'), + (0x33D4, 'M', 'mb'), + (0x33D5, 'M', 'mil'), + (0x33D6, 'M', 'mol'), + (0x33D7, 'M', 'ph'), + (0x33D8, 'X'), + (0x33D9, 'M', 'ppm'), + (0x33DA, 'M', 'pr'), + (0x33DB, 'M', 'sr'), + (0x33DC, 'M', 'sv'), + (0x33DD, 'M', 'wb'), + (0x33DE, 'M', 'v∕m'), + (0x33DF, 'M', 'a∕m'), + (0x33E0, 'M', '1日'), + (0x33E1, 'M', '2日'), + ] + +def _seg_35() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x33E2, 'M', '3日'), + (0x33E3, 'M', '4日'), + (0x33E4, 'M', '5日'), + (0x33E5, 'M', '6日'), + (0x33E6, 'M', '7日'), + (0x33E7, 'M', '8日'), + (0x33E8, 'M', '9日'), + (0x33E9, 'M', '10日'), + (0x33EA, 'M', '11日'), + (0x33EB, 'M', '12日'), + (0x33EC, 'M', '13日'), + (0x33ED, 'M', '14日'), + (0x33EE, 'M', '15日'), + (0x33EF, 'M', '16日'), + (0x33F0, 'M', '17日'), + (0x33F1, 'M', '18日'), + (0x33F2, 'M', '19日'), + (0x33F3, 'M', '20日'), + (0x33F4, 'M', '21日'), + (0x33F5, 'M', '22日'), + (0x33F6, 'M', '23日'), + (0x33F7, 'M', '24日'), + (0x33F8, 'M', '25日'), + (0x33F9, 'M', '26日'), + (0x33FA, 'M', '27日'), + (0x33FB, 'M', '28日'), + (0x33FC, 'M', '29日'), + (0x33FD, 'M', '30日'), + (0x33FE, 'M', '31日'), + (0x33FF, 'M', 'gal'), + (0x3400, 'V'), + (0xA48D, 'X'), + (0xA490, 'V'), + (0xA4C7, 'X'), + (0xA4D0, 'V'), + (0xA62C, 'X'), + (0xA640, 'M', 'ꙁ'), + (0xA641, 'V'), + (0xA642, 'M', 'ꙃ'), + (0xA643, 'V'), + (0xA644, 'M', 'ꙅ'), + (0xA645, 'V'), + (0xA646, 'M', 'ꙇ'), + (0xA647, 'V'), + (0xA648, 'M', 'ꙉ'), + (0xA649, 'V'), + (0xA64A, 'M', 'ꙋ'), + (0xA64B, 'V'), + (0xA64C, 'M', 'ꙍ'), + (0xA64D, 'V'), + (0xA64E, 'M', 'ꙏ'), + (0xA64F, 'V'), + (0xA650, 'M', 'ꙑ'), + (0xA651, 'V'), + (0xA652, 'M', 'ꙓ'), + (0xA653, 'V'), + (0xA654, 'M', 'ꙕ'), + (0xA655, 'V'), + (0xA656, 'M', 'ꙗ'), + (0xA657, 'V'), + (0xA658, 'M', 'ꙙ'), + (0xA659, 'V'), + (0xA65A, 'M', 'ꙛ'), + (0xA65B, 'V'), + (0xA65C, 'M', 'ꙝ'), + (0xA65D, 'V'), + (0xA65E, 'M', 'ꙟ'), + (0xA65F, 'V'), + (0xA660, 'M', 'ꙡ'), + (0xA661, 'V'), + (0xA662, 'M', 'ꙣ'), + (0xA663, 'V'), + (0xA664, 'M', 'ꙥ'), + (0xA665, 'V'), + (0xA666, 'M', 'ꙧ'), + (0xA667, 'V'), + (0xA668, 'M', 'ꙩ'), + (0xA669, 'V'), + (0xA66A, 'M', 'ꙫ'), + (0xA66B, 'V'), + (0xA66C, 'M', 'ꙭ'), + (0xA66D, 'V'), + (0xA680, 'M', 'ꚁ'), + (0xA681, 'V'), + (0xA682, 'M', 'ꚃ'), + (0xA683, 'V'), + (0xA684, 'M', 'ꚅ'), + (0xA685, 'V'), + (0xA686, 'M', 'ꚇ'), + (0xA687, 'V'), + (0xA688, 'M', 'ꚉ'), + (0xA689, 'V'), + (0xA68A, 'M', 'ꚋ'), + (0xA68B, 'V'), + (0xA68C, 'M', 'ꚍ'), + (0xA68D, 'V'), + (0xA68E, 'M', 'ꚏ'), + (0xA68F, 'V'), + (0xA690, 'M', 'ꚑ'), + (0xA691, 'V'), + ] + +def _seg_36() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA692, 'M', 'ꚓ'), + (0xA693, 'V'), + (0xA694, 'M', 'ꚕ'), + (0xA695, 'V'), + (0xA696, 'M', 'ꚗ'), + (0xA697, 'V'), + (0xA698, 'M', 'ꚙ'), + (0xA699, 'V'), + (0xA69A, 'M', 'ꚛ'), + (0xA69B, 'V'), + (0xA69C, 'M', 'ъ'), + (0xA69D, 'M', 'ь'), + (0xA69E, 'V'), + (0xA6F8, 'X'), + (0xA700, 'V'), + (0xA722, 'M', 'ꜣ'), + (0xA723, 'V'), + (0xA724, 'M', 'ꜥ'), + (0xA725, 'V'), + (0xA726, 'M', 'ꜧ'), + (0xA727, 'V'), + (0xA728, 'M', 'ꜩ'), + (0xA729, 'V'), + (0xA72A, 'M', 'ꜫ'), + (0xA72B, 'V'), + (0xA72C, 'M', 'ꜭ'), + (0xA72D, 'V'), + (0xA72E, 'M', 'ꜯ'), + (0xA72F, 'V'), + (0xA732, 'M', 'ꜳ'), + (0xA733, 'V'), + (0xA734, 'M', 'ꜵ'), + (0xA735, 'V'), + (0xA736, 'M', 'ꜷ'), + (0xA737, 'V'), + (0xA738, 'M', 'ꜹ'), + (0xA739, 'V'), + (0xA73A, 'M', 'ꜻ'), + (0xA73B, 'V'), + (0xA73C, 'M', 'ꜽ'), + (0xA73D, 'V'), + (0xA73E, 'M', 'ꜿ'), + (0xA73F, 'V'), + (0xA740, 'M', 'ꝁ'), + (0xA741, 'V'), + (0xA742, 'M', 'ꝃ'), + (0xA743, 'V'), + (0xA744, 'M', 'ꝅ'), + (0xA745, 'V'), + (0xA746, 'M', 'ꝇ'), + (0xA747, 'V'), + (0xA748, 'M', 'ꝉ'), + (0xA749, 'V'), + (0xA74A, 'M', 'ꝋ'), + (0xA74B, 'V'), + (0xA74C, 'M', 'ꝍ'), + (0xA74D, 'V'), + (0xA74E, 'M', 'ꝏ'), + (0xA74F, 'V'), + (0xA750, 'M', 'ꝑ'), + (0xA751, 'V'), + (0xA752, 'M', 'ꝓ'), + (0xA753, 'V'), + (0xA754, 'M', 'ꝕ'), + (0xA755, 'V'), + (0xA756, 'M', 'ꝗ'), + (0xA757, 'V'), + (0xA758, 'M', 'ꝙ'), + (0xA759, 'V'), + (0xA75A, 'M', 'ꝛ'), + (0xA75B, 'V'), + (0xA75C, 'M', 'ꝝ'), + (0xA75D, 'V'), + (0xA75E, 'M', 'ꝟ'), + (0xA75F, 'V'), + (0xA760, 'M', 'ꝡ'), + (0xA761, 'V'), + (0xA762, 'M', 'ꝣ'), + (0xA763, 'V'), + (0xA764, 'M', 'ꝥ'), + (0xA765, 'V'), + (0xA766, 'M', 'ꝧ'), + (0xA767, 'V'), + (0xA768, 'M', 'ꝩ'), + (0xA769, 'V'), + (0xA76A, 'M', 'ꝫ'), + (0xA76B, 'V'), + (0xA76C, 'M', 'ꝭ'), + (0xA76D, 'V'), + (0xA76E, 'M', 'ꝯ'), + (0xA76F, 'V'), + (0xA770, 'M', 'ꝯ'), + (0xA771, 'V'), + (0xA779, 'M', 'ꝺ'), + (0xA77A, 'V'), + (0xA77B, 'M', 'ꝼ'), + (0xA77C, 'V'), + (0xA77D, 'M', 'ᵹ'), + (0xA77E, 'M', 'ꝿ'), + (0xA77F, 'V'), + ] + +def _seg_37() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA780, 'M', 'ꞁ'), + (0xA781, 'V'), + (0xA782, 'M', 'ꞃ'), + (0xA783, 'V'), + (0xA784, 'M', 'ꞅ'), + (0xA785, 'V'), + (0xA786, 'M', 'ꞇ'), + (0xA787, 'V'), + (0xA78B, 'M', 'ꞌ'), + (0xA78C, 'V'), + (0xA78D, 'M', 'ɥ'), + (0xA78E, 'V'), + (0xA790, 'M', 'ꞑ'), + (0xA791, 'V'), + (0xA792, 'M', 'ꞓ'), + (0xA793, 'V'), + (0xA796, 'M', 'ꞗ'), + (0xA797, 'V'), + (0xA798, 'M', 'ꞙ'), + (0xA799, 'V'), + (0xA79A, 'M', 'ꞛ'), + (0xA79B, 'V'), + (0xA79C, 'M', 'ꞝ'), + (0xA79D, 'V'), + (0xA79E, 'M', 'ꞟ'), + (0xA79F, 'V'), + (0xA7A0, 'M', 'ꞡ'), + (0xA7A1, 'V'), + (0xA7A2, 'M', 'ꞣ'), + (0xA7A3, 'V'), + (0xA7A4, 'M', 'ꞥ'), + (0xA7A5, 'V'), + (0xA7A6, 'M', 'ꞧ'), + (0xA7A7, 'V'), + (0xA7A8, 'M', 'ꞩ'), + (0xA7A9, 'V'), + (0xA7AA, 'M', 'ɦ'), + (0xA7AB, 'M', 'ɜ'), + (0xA7AC, 'M', 'ɡ'), + (0xA7AD, 'M', 'ɬ'), + (0xA7AE, 'M', 'ɪ'), + (0xA7AF, 'V'), + (0xA7B0, 'M', 'ʞ'), + (0xA7B1, 'M', 'ʇ'), + (0xA7B2, 'M', 'ʝ'), + (0xA7B3, 'M', 'ꭓ'), + (0xA7B4, 'M', 'ꞵ'), + (0xA7B5, 'V'), + (0xA7B6, 'M', 'ꞷ'), + (0xA7B7, 'V'), + (0xA7B8, 'M', 'ꞹ'), + (0xA7B9, 'V'), + (0xA7BA, 'M', 'ꞻ'), + (0xA7BB, 'V'), + (0xA7BC, 'M', 'ꞽ'), + (0xA7BD, 'V'), + (0xA7BE, 'M', 'ꞿ'), + (0xA7BF, 'V'), + (0xA7C0, 'M', 'ꟁ'), + (0xA7C1, 'V'), + (0xA7C2, 'M', 'ꟃ'), + (0xA7C3, 'V'), + (0xA7C4, 'M', 'ꞔ'), + (0xA7C5, 'M', 'ʂ'), + (0xA7C6, 'M', 'ᶎ'), + (0xA7C7, 'M', 'ꟈ'), + (0xA7C8, 'V'), + (0xA7C9, 'M', 'ꟊ'), + (0xA7CA, 'V'), + (0xA7CB, 'X'), + (0xA7D0, 'M', 'ꟑ'), + (0xA7D1, 'V'), + (0xA7D2, 'X'), + (0xA7D3, 'V'), + (0xA7D4, 'X'), + (0xA7D5, 'V'), + (0xA7D6, 'M', 'ꟗ'), + (0xA7D7, 'V'), + (0xA7D8, 'M', 'ꟙ'), + (0xA7D9, 'V'), + (0xA7DA, 'X'), + (0xA7F2, 'M', 'c'), + (0xA7F3, 'M', 'f'), + (0xA7F4, 'M', 'q'), + (0xA7F5, 'M', 'ꟶ'), + (0xA7F6, 'V'), + (0xA7F8, 'M', 'ħ'), + (0xA7F9, 'M', 'œ'), + (0xA7FA, 'V'), + (0xA82D, 'X'), + (0xA830, 'V'), + (0xA83A, 'X'), + (0xA840, 'V'), + (0xA878, 'X'), + (0xA880, 'V'), + (0xA8C6, 'X'), + (0xA8CE, 'V'), + (0xA8DA, 'X'), + (0xA8E0, 'V'), + (0xA954, 'X'), + ] + +def _seg_38() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xA95F, 'V'), + (0xA97D, 'X'), + (0xA980, 'V'), + (0xA9CE, 'X'), + (0xA9CF, 'V'), + (0xA9DA, 'X'), + (0xA9DE, 'V'), + (0xA9FF, 'X'), + (0xAA00, 'V'), + (0xAA37, 'X'), + (0xAA40, 'V'), + (0xAA4E, 'X'), + (0xAA50, 'V'), + (0xAA5A, 'X'), + (0xAA5C, 'V'), + (0xAAC3, 'X'), + (0xAADB, 'V'), + (0xAAF7, 'X'), + (0xAB01, 'V'), + (0xAB07, 'X'), + (0xAB09, 'V'), + (0xAB0F, 'X'), + (0xAB11, 'V'), + (0xAB17, 'X'), + (0xAB20, 'V'), + (0xAB27, 'X'), + (0xAB28, 'V'), + (0xAB2F, 'X'), + (0xAB30, 'V'), + (0xAB5C, 'M', 'ꜧ'), + (0xAB5D, 'M', 'ꬷ'), + (0xAB5E, 'M', 'ɫ'), + (0xAB5F, 'M', 'ꭒ'), + (0xAB60, 'V'), + (0xAB69, 'M', 'ʍ'), + (0xAB6A, 'V'), + (0xAB6C, 'X'), + (0xAB70, 'M', 'Ꭰ'), + (0xAB71, 'M', 'Ꭱ'), + (0xAB72, 'M', 'Ꭲ'), + (0xAB73, 'M', 'Ꭳ'), + (0xAB74, 'M', 'Ꭴ'), + (0xAB75, 'M', 'Ꭵ'), + (0xAB76, 'M', 'Ꭶ'), + (0xAB77, 'M', 'Ꭷ'), + (0xAB78, 'M', 'Ꭸ'), + (0xAB79, 'M', 'Ꭹ'), + (0xAB7A, 'M', 'Ꭺ'), + (0xAB7B, 'M', 'Ꭻ'), + (0xAB7C, 'M', 'Ꭼ'), + (0xAB7D, 'M', 'Ꭽ'), + (0xAB7E, 'M', 'Ꭾ'), + (0xAB7F, 'M', 'Ꭿ'), + (0xAB80, 'M', 'Ꮀ'), + (0xAB81, 'M', 'Ꮁ'), + (0xAB82, 'M', 'Ꮂ'), + (0xAB83, 'M', 'Ꮃ'), + (0xAB84, 'M', 'Ꮄ'), + (0xAB85, 'M', 'Ꮅ'), + (0xAB86, 'M', 'Ꮆ'), + (0xAB87, 'M', 'Ꮇ'), + (0xAB88, 'M', 'Ꮈ'), + (0xAB89, 'M', 'Ꮉ'), + (0xAB8A, 'M', 'Ꮊ'), + (0xAB8B, 'M', 'Ꮋ'), + (0xAB8C, 'M', 'Ꮌ'), + (0xAB8D, 'M', 'Ꮍ'), + (0xAB8E, 'M', 'Ꮎ'), + (0xAB8F, 'M', 'Ꮏ'), + (0xAB90, 'M', 'Ꮐ'), + (0xAB91, 'M', 'Ꮑ'), + (0xAB92, 'M', 'Ꮒ'), + (0xAB93, 'M', 'Ꮓ'), + (0xAB94, 'M', 'Ꮔ'), + (0xAB95, 'M', 'Ꮕ'), + (0xAB96, 'M', 'Ꮖ'), + (0xAB97, 'M', 'Ꮗ'), + (0xAB98, 'M', 'Ꮘ'), + (0xAB99, 'M', 'Ꮙ'), + (0xAB9A, 'M', 'Ꮚ'), + (0xAB9B, 'M', 'Ꮛ'), + (0xAB9C, 'M', 'Ꮜ'), + (0xAB9D, 'M', 'Ꮝ'), + (0xAB9E, 'M', 'Ꮞ'), + (0xAB9F, 'M', 'Ꮟ'), + (0xABA0, 'M', 'Ꮠ'), + (0xABA1, 'M', 'Ꮡ'), + (0xABA2, 'M', 'Ꮢ'), + (0xABA3, 'M', 'Ꮣ'), + (0xABA4, 'M', 'Ꮤ'), + (0xABA5, 'M', 'Ꮥ'), + (0xABA6, 'M', 'Ꮦ'), + (0xABA7, 'M', 'Ꮧ'), + (0xABA8, 'M', 'Ꮨ'), + (0xABA9, 'M', 'Ꮩ'), + (0xABAA, 'M', 'Ꮪ'), + (0xABAB, 'M', 'Ꮫ'), + (0xABAC, 'M', 'Ꮬ'), + (0xABAD, 'M', 'Ꮭ'), + (0xABAE, 'M', 'Ꮮ'), + ] + +def _seg_39() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xABAF, 'M', 'Ꮯ'), + (0xABB0, 'M', 'Ꮰ'), + (0xABB1, 'M', 'Ꮱ'), + (0xABB2, 'M', 'Ꮲ'), + (0xABB3, 'M', 'Ꮳ'), + (0xABB4, 'M', 'Ꮴ'), + (0xABB5, 'M', 'Ꮵ'), + (0xABB6, 'M', 'Ꮶ'), + (0xABB7, 'M', 'Ꮷ'), + (0xABB8, 'M', 'Ꮸ'), + (0xABB9, 'M', 'Ꮹ'), + (0xABBA, 'M', 'Ꮺ'), + (0xABBB, 'M', 'Ꮻ'), + (0xABBC, 'M', 'Ꮼ'), + (0xABBD, 'M', 'Ꮽ'), + (0xABBE, 'M', 'Ꮾ'), + (0xABBF, 'M', 'Ꮿ'), + (0xABC0, 'V'), + (0xABEE, 'X'), + (0xABF0, 'V'), + (0xABFA, 'X'), + (0xAC00, 'V'), + (0xD7A4, 'X'), + (0xD7B0, 'V'), + (0xD7C7, 'X'), + (0xD7CB, 'V'), + (0xD7FC, 'X'), + (0xF900, 'M', '豈'), + (0xF901, 'M', '更'), + (0xF902, 'M', '車'), + (0xF903, 'M', '賈'), + (0xF904, 'M', '滑'), + (0xF905, 'M', '串'), + (0xF906, 'M', '句'), + (0xF907, 'M', '龜'), + (0xF909, 'M', '契'), + (0xF90A, 'M', '金'), + (0xF90B, 'M', '喇'), + (0xF90C, 'M', '奈'), + (0xF90D, 'M', '懶'), + (0xF90E, 'M', '癩'), + (0xF90F, 'M', '羅'), + (0xF910, 'M', '蘿'), + (0xF911, 'M', '螺'), + (0xF912, 'M', '裸'), + (0xF913, 'M', '邏'), + (0xF914, 'M', '樂'), + (0xF915, 'M', '洛'), + (0xF916, 'M', '烙'), + (0xF917, 'M', '珞'), + (0xF918, 'M', '落'), + (0xF919, 'M', '酪'), + (0xF91A, 'M', '駱'), + (0xF91B, 'M', '亂'), + (0xF91C, 'M', '卵'), + (0xF91D, 'M', '欄'), + (0xF91E, 'M', '爛'), + (0xF91F, 'M', '蘭'), + (0xF920, 'M', '鸞'), + (0xF921, 'M', '嵐'), + (0xF922, 'M', '濫'), + (0xF923, 'M', '藍'), + (0xF924, 'M', '襤'), + (0xF925, 'M', '拉'), + (0xF926, 'M', '臘'), + (0xF927, 'M', '蠟'), + (0xF928, 'M', '廊'), + (0xF929, 'M', '朗'), + (0xF92A, 'M', '浪'), + (0xF92B, 'M', '狼'), + (0xF92C, 'M', '郎'), + (0xF92D, 'M', '來'), + (0xF92E, 'M', '冷'), + (0xF92F, 'M', '勞'), + (0xF930, 'M', '擄'), + (0xF931, 'M', '櫓'), + (0xF932, 'M', '爐'), + (0xF933, 'M', '盧'), + (0xF934, 'M', '老'), + (0xF935, 'M', '蘆'), + (0xF936, 'M', '虜'), + (0xF937, 'M', '路'), + (0xF938, 'M', '露'), + (0xF939, 'M', '魯'), + (0xF93A, 'M', '鷺'), + (0xF93B, 'M', '碌'), + (0xF93C, 'M', '祿'), + (0xF93D, 'M', '綠'), + (0xF93E, 'M', '菉'), + (0xF93F, 'M', '錄'), + (0xF940, 'M', '鹿'), + (0xF941, 'M', '論'), + (0xF942, 'M', '壟'), + (0xF943, 'M', '弄'), + (0xF944, 'M', '籠'), + (0xF945, 'M', '聾'), + (0xF946, 'M', '牢'), + (0xF947, 'M', '磊'), + (0xF948, 'M', '賂'), + (0xF949, 'M', '雷'), + ] + +def _seg_40() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xF94A, 'M', '壘'), + (0xF94B, 'M', '屢'), + (0xF94C, 'M', '樓'), + (0xF94D, 'M', '淚'), + (0xF94E, 'M', '漏'), + (0xF94F, 'M', '累'), + (0xF950, 'M', '縷'), + (0xF951, 'M', '陋'), + (0xF952, 'M', '勒'), + (0xF953, 'M', '肋'), + (0xF954, 'M', '凜'), + (0xF955, 'M', '凌'), + (0xF956, 'M', '稜'), + (0xF957, 'M', '綾'), + (0xF958, 'M', '菱'), + (0xF959, 'M', '陵'), + (0xF95A, 'M', '讀'), + (0xF95B, 'M', '拏'), + (0xF95C, 'M', '樂'), + (0xF95D, 'M', '諾'), + (0xF95E, 'M', '丹'), + (0xF95F, 'M', '寧'), + (0xF960, 'M', '怒'), + (0xF961, 'M', '率'), + (0xF962, 'M', '異'), + (0xF963, 'M', '北'), + (0xF964, 'M', '磻'), + (0xF965, 'M', '便'), + (0xF966, 'M', '復'), + (0xF967, 'M', '不'), + (0xF968, 'M', '泌'), + (0xF969, 'M', '數'), + (0xF96A, 'M', '索'), + (0xF96B, 'M', '參'), + (0xF96C, 'M', '塞'), + (0xF96D, 'M', '省'), + (0xF96E, 'M', '葉'), + (0xF96F, 'M', '說'), + (0xF970, 'M', '殺'), + (0xF971, 'M', '辰'), + (0xF972, 'M', '沈'), + (0xF973, 'M', '拾'), + (0xF974, 'M', '若'), + (0xF975, 'M', '掠'), + (0xF976, 'M', '略'), + (0xF977, 'M', '亮'), + (0xF978, 'M', '兩'), + (0xF979, 'M', '凉'), + (0xF97A, 'M', '梁'), + (0xF97B, 'M', '糧'), + (0xF97C, 'M', '良'), + (0xF97D, 'M', '諒'), + (0xF97E, 'M', '量'), + (0xF97F, 'M', '勵'), + (0xF980, 'M', '呂'), + (0xF981, 'M', '女'), + (0xF982, 'M', '廬'), + (0xF983, 'M', '旅'), + (0xF984, 'M', '濾'), + (0xF985, 'M', '礪'), + (0xF986, 'M', '閭'), + (0xF987, 'M', '驪'), + (0xF988, 'M', '麗'), + (0xF989, 'M', '黎'), + (0xF98A, 'M', '力'), + (0xF98B, 'M', '曆'), + (0xF98C, 'M', '歷'), + (0xF98D, 'M', '轢'), + (0xF98E, 'M', '年'), + (0xF98F, 'M', '憐'), + (0xF990, 'M', '戀'), + (0xF991, 'M', '撚'), + (0xF992, 'M', '漣'), + (0xF993, 'M', '煉'), + (0xF994, 'M', '璉'), + (0xF995, 'M', '秊'), + (0xF996, 'M', '練'), + (0xF997, 'M', '聯'), + (0xF998, 'M', '輦'), + (0xF999, 'M', '蓮'), + (0xF99A, 'M', '連'), + (0xF99B, 'M', '鍊'), + (0xF99C, 'M', '列'), + (0xF99D, 'M', '劣'), + (0xF99E, 'M', '咽'), + (0xF99F, 'M', '烈'), + (0xF9A0, 'M', '裂'), + (0xF9A1, 'M', '說'), + (0xF9A2, 'M', '廉'), + (0xF9A3, 'M', '念'), + (0xF9A4, 'M', '捻'), + (0xF9A5, 'M', '殮'), + (0xF9A6, 'M', '簾'), + (0xF9A7, 'M', '獵'), + (0xF9A8, 'M', '令'), + (0xF9A9, 'M', '囹'), + (0xF9AA, 'M', '寧'), + (0xF9AB, 'M', '嶺'), + (0xF9AC, 'M', '怜'), + (0xF9AD, 'M', '玲'), + ] + +def _seg_41() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xF9AE, 'M', '瑩'), + (0xF9AF, 'M', '羚'), + (0xF9B0, 'M', '聆'), + (0xF9B1, 'M', '鈴'), + (0xF9B2, 'M', '零'), + (0xF9B3, 'M', '靈'), + (0xF9B4, 'M', '領'), + (0xF9B5, 'M', '例'), + (0xF9B6, 'M', '禮'), + (0xF9B7, 'M', '醴'), + (0xF9B8, 'M', '隸'), + (0xF9B9, 'M', '惡'), + (0xF9BA, 'M', '了'), + (0xF9BB, 'M', '僚'), + (0xF9BC, 'M', '寮'), + (0xF9BD, 'M', '尿'), + (0xF9BE, 'M', '料'), + (0xF9BF, 'M', '樂'), + (0xF9C0, 'M', '燎'), + (0xF9C1, 'M', '療'), + (0xF9C2, 'M', '蓼'), + (0xF9C3, 'M', '遼'), + (0xF9C4, 'M', '龍'), + (0xF9C5, 'M', '暈'), + (0xF9C6, 'M', '阮'), + (0xF9C7, 'M', '劉'), + (0xF9C8, 'M', '杻'), + (0xF9C9, 'M', '柳'), + (0xF9CA, 'M', '流'), + (0xF9CB, 'M', '溜'), + (0xF9CC, 'M', '琉'), + (0xF9CD, 'M', '留'), + (0xF9CE, 'M', '硫'), + (0xF9CF, 'M', '紐'), + (0xF9D0, 'M', '類'), + (0xF9D1, 'M', '六'), + (0xF9D2, 'M', '戮'), + (0xF9D3, 'M', '陸'), + (0xF9D4, 'M', '倫'), + (0xF9D5, 'M', '崙'), + (0xF9D6, 'M', '淪'), + (0xF9D7, 'M', '輪'), + (0xF9D8, 'M', '律'), + (0xF9D9, 'M', '慄'), + (0xF9DA, 'M', '栗'), + (0xF9DB, 'M', '率'), + (0xF9DC, 'M', '隆'), + (0xF9DD, 'M', '利'), + (0xF9DE, 'M', '吏'), + (0xF9DF, 'M', '履'), + (0xF9E0, 'M', '易'), + (0xF9E1, 'M', '李'), + (0xF9E2, 'M', '梨'), + (0xF9E3, 'M', '泥'), + (0xF9E4, 'M', '理'), + (0xF9E5, 'M', '痢'), + (0xF9E6, 'M', '罹'), + (0xF9E7, 'M', '裏'), + (0xF9E8, 'M', '裡'), + (0xF9E9, 'M', '里'), + (0xF9EA, 'M', '離'), + (0xF9EB, 'M', '匿'), + (0xF9EC, 'M', '溺'), + (0xF9ED, 'M', '吝'), + (0xF9EE, 'M', '燐'), + (0xF9EF, 'M', '璘'), + (0xF9F0, 'M', '藺'), + (0xF9F1, 'M', '隣'), + (0xF9F2, 'M', '鱗'), + (0xF9F3, 'M', '麟'), + (0xF9F4, 'M', '林'), + (0xF9F5, 'M', '淋'), + (0xF9F6, 'M', '臨'), + (0xF9F7, 'M', '立'), + (0xF9F8, 'M', '笠'), + (0xF9F9, 'M', '粒'), + (0xF9FA, 'M', '狀'), + (0xF9FB, 'M', '炙'), + (0xF9FC, 'M', '識'), + (0xF9FD, 'M', '什'), + (0xF9FE, 'M', '茶'), + (0xF9FF, 'M', '刺'), + (0xFA00, 'M', '切'), + (0xFA01, 'M', '度'), + (0xFA02, 'M', '拓'), + (0xFA03, 'M', '糖'), + (0xFA04, 'M', '宅'), + (0xFA05, 'M', '洞'), + (0xFA06, 'M', '暴'), + (0xFA07, 'M', '輻'), + (0xFA08, 'M', '行'), + (0xFA09, 'M', '降'), + (0xFA0A, 'M', '見'), + (0xFA0B, 'M', '廓'), + (0xFA0C, 'M', '兀'), + (0xFA0D, 'M', '嗀'), + (0xFA0E, 'V'), + (0xFA10, 'M', '塚'), + (0xFA11, 'V'), + (0xFA12, 'M', '晴'), + ] + +def _seg_42() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFA13, 'V'), + (0xFA15, 'M', '凞'), + (0xFA16, 'M', '猪'), + (0xFA17, 'M', '益'), + (0xFA18, 'M', '礼'), + (0xFA19, 'M', '神'), + (0xFA1A, 'M', '祥'), + (0xFA1B, 'M', '福'), + (0xFA1C, 'M', '靖'), + (0xFA1D, 'M', '精'), + (0xFA1E, 'M', '羽'), + (0xFA1F, 'V'), + (0xFA20, 'M', '蘒'), + (0xFA21, 'V'), + (0xFA22, 'M', '諸'), + (0xFA23, 'V'), + (0xFA25, 'M', '逸'), + (0xFA26, 'M', '都'), + (0xFA27, 'V'), + (0xFA2A, 'M', '飯'), + (0xFA2B, 'M', '飼'), + (0xFA2C, 'M', '館'), + (0xFA2D, 'M', '鶴'), + (0xFA2E, 'M', '郞'), + (0xFA2F, 'M', '隷'), + (0xFA30, 'M', '侮'), + (0xFA31, 'M', '僧'), + (0xFA32, 'M', '免'), + (0xFA33, 'M', '勉'), + (0xFA34, 'M', '勤'), + (0xFA35, 'M', '卑'), + (0xFA36, 'M', '喝'), + (0xFA37, 'M', '嘆'), + (0xFA38, 'M', '器'), + (0xFA39, 'M', '塀'), + (0xFA3A, 'M', '墨'), + (0xFA3B, 'M', '層'), + (0xFA3C, 'M', '屮'), + (0xFA3D, 'M', '悔'), + (0xFA3E, 'M', '慨'), + (0xFA3F, 'M', '憎'), + (0xFA40, 'M', '懲'), + (0xFA41, 'M', '敏'), + (0xFA42, 'M', '既'), + (0xFA43, 'M', '暑'), + (0xFA44, 'M', '梅'), + (0xFA45, 'M', '海'), + (0xFA46, 'M', '渚'), + (0xFA47, 'M', '漢'), + (0xFA48, 'M', '煮'), + (0xFA49, 'M', '爫'), + (0xFA4A, 'M', '琢'), + (0xFA4B, 'M', '碑'), + (0xFA4C, 'M', '社'), + (0xFA4D, 'M', '祉'), + (0xFA4E, 'M', '祈'), + (0xFA4F, 'M', '祐'), + (0xFA50, 'M', '祖'), + (0xFA51, 'M', '祝'), + (0xFA52, 'M', '禍'), + (0xFA53, 'M', '禎'), + (0xFA54, 'M', '穀'), + (0xFA55, 'M', '突'), + (0xFA56, 'M', '節'), + (0xFA57, 'M', '練'), + (0xFA58, 'M', '縉'), + (0xFA59, 'M', '繁'), + (0xFA5A, 'M', '署'), + (0xFA5B, 'M', '者'), + (0xFA5C, 'M', '臭'), + (0xFA5D, 'M', '艹'), + (0xFA5F, 'M', '著'), + (0xFA60, 'M', '褐'), + (0xFA61, 'M', '視'), + (0xFA62, 'M', '謁'), + (0xFA63, 'M', '謹'), + (0xFA64, 'M', '賓'), + (0xFA65, 'M', '贈'), + (0xFA66, 'M', '辶'), + (0xFA67, 'M', '逸'), + (0xFA68, 'M', '難'), + (0xFA69, 'M', '響'), + (0xFA6A, 'M', '頻'), + (0xFA6B, 'M', '恵'), + (0xFA6C, 'M', '𤋮'), + (0xFA6D, 'M', '舘'), + (0xFA6E, 'X'), + (0xFA70, 'M', '並'), + (0xFA71, 'M', '况'), + (0xFA72, 'M', '全'), + (0xFA73, 'M', '侀'), + (0xFA74, 'M', '充'), + (0xFA75, 'M', '冀'), + (0xFA76, 'M', '勇'), + (0xFA77, 'M', '勺'), + (0xFA78, 'M', '喝'), + (0xFA79, 'M', '啕'), + (0xFA7A, 'M', '喙'), + (0xFA7B, 'M', '嗢'), + (0xFA7C, 'M', '塚'), + ] + +def _seg_43() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFA7D, 'M', '墳'), + (0xFA7E, 'M', '奄'), + (0xFA7F, 'M', '奔'), + (0xFA80, 'M', '婢'), + (0xFA81, 'M', '嬨'), + (0xFA82, 'M', '廒'), + (0xFA83, 'M', '廙'), + (0xFA84, 'M', '彩'), + (0xFA85, 'M', '徭'), + (0xFA86, 'M', '惘'), + (0xFA87, 'M', '慎'), + (0xFA88, 'M', '愈'), + (0xFA89, 'M', '憎'), + (0xFA8A, 'M', '慠'), + (0xFA8B, 'M', '懲'), + (0xFA8C, 'M', '戴'), + (0xFA8D, 'M', '揄'), + (0xFA8E, 'M', '搜'), + (0xFA8F, 'M', '摒'), + (0xFA90, 'M', '敖'), + (0xFA91, 'M', '晴'), + (0xFA92, 'M', '朗'), + (0xFA93, 'M', '望'), + (0xFA94, 'M', '杖'), + (0xFA95, 'M', '歹'), + (0xFA96, 'M', '殺'), + (0xFA97, 'M', '流'), + (0xFA98, 'M', '滛'), + (0xFA99, 'M', '滋'), + (0xFA9A, 'M', '漢'), + (0xFA9B, 'M', '瀞'), + (0xFA9C, 'M', '煮'), + (0xFA9D, 'M', '瞧'), + (0xFA9E, 'M', '爵'), + (0xFA9F, 'M', '犯'), + (0xFAA0, 'M', '猪'), + (0xFAA1, 'M', '瑱'), + (0xFAA2, 'M', '甆'), + (0xFAA3, 'M', '画'), + (0xFAA4, 'M', '瘝'), + (0xFAA5, 'M', '瘟'), + (0xFAA6, 'M', '益'), + (0xFAA7, 'M', '盛'), + (0xFAA8, 'M', '直'), + (0xFAA9, 'M', '睊'), + (0xFAAA, 'M', '着'), + (0xFAAB, 'M', '磌'), + (0xFAAC, 'M', '窱'), + (0xFAAD, 'M', '節'), + (0xFAAE, 'M', '类'), + (0xFAAF, 'M', '絛'), + (0xFAB0, 'M', '練'), + (0xFAB1, 'M', '缾'), + (0xFAB2, 'M', '者'), + (0xFAB3, 'M', '荒'), + (0xFAB4, 'M', '華'), + (0xFAB5, 'M', '蝹'), + (0xFAB6, 'M', '襁'), + (0xFAB7, 'M', '覆'), + (0xFAB8, 'M', '視'), + (0xFAB9, 'M', '調'), + (0xFABA, 'M', '諸'), + (0xFABB, 'M', '請'), + (0xFABC, 'M', '謁'), + (0xFABD, 'M', '諾'), + (0xFABE, 'M', '諭'), + (0xFABF, 'M', '謹'), + (0xFAC0, 'M', '變'), + (0xFAC1, 'M', '贈'), + (0xFAC2, 'M', '輸'), + (0xFAC3, 'M', '遲'), + (0xFAC4, 'M', '醙'), + (0xFAC5, 'M', '鉶'), + (0xFAC6, 'M', '陼'), + (0xFAC7, 'M', '難'), + (0xFAC8, 'M', '靖'), + (0xFAC9, 'M', '韛'), + (0xFACA, 'M', '響'), + (0xFACB, 'M', '頋'), + (0xFACC, 'M', '頻'), + (0xFACD, 'M', '鬒'), + (0xFACE, 'M', '龜'), + (0xFACF, 'M', '𢡊'), + (0xFAD0, 'M', '𢡄'), + (0xFAD1, 'M', '𣏕'), + (0xFAD2, 'M', '㮝'), + (0xFAD3, 'M', '䀘'), + (0xFAD4, 'M', '䀹'), + (0xFAD5, 'M', '𥉉'), + (0xFAD6, 'M', '𥳐'), + (0xFAD7, 'M', '𧻓'), + (0xFAD8, 'M', '齃'), + (0xFAD9, 'M', '龎'), + (0xFADA, 'X'), + (0xFB00, 'M', 'ff'), + (0xFB01, 'M', 'fi'), + (0xFB02, 'M', 'fl'), + (0xFB03, 'M', 'ffi'), + (0xFB04, 'M', 'ffl'), + (0xFB05, 'M', 'st'), + ] + +def _seg_44() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFB07, 'X'), + (0xFB13, 'M', 'մն'), + (0xFB14, 'M', 'մե'), + (0xFB15, 'M', 'մի'), + (0xFB16, 'M', 'վն'), + (0xFB17, 'M', 'մխ'), + (0xFB18, 'X'), + (0xFB1D, 'M', 'יִ'), + (0xFB1E, 'V'), + (0xFB1F, 'M', 'ײַ'), + (0xFB20, 'M', 'ע'), + (0xFB21, 'M', 'א'), + (0xFB22, 'M', 'ד'), + (0xFB23, 'M', 'ה'), + (0xFB24, 'M', 'כ'), + (0xFB25, 'M', 'ל'), + (0xFB26, 'M', 'ם'), + (0xFB27, 'M', 'ר'), + (0xFB28, 'M', 'ת'), + (0xFB29, '3', '+'), + (0xFB2A, 'M', 'שׁ'), + (0xFB2B, 'M', 'שׂ'), + (0xFB2C, 'M', 'שּׁ'), + (0xFB2D, 'M', 'שּׂ'), + (0xFB2E, 'M', 'אַ'), + (0xFB2F, 'M', 'אָ'), + (0xFB30, 'M', 'אּ'), + (0xFB31, 'M', 'בּ'), + (0xFB32, 'M', 'גּ'), + (0xFB33, 'M', 'דּ'), + (0xFB34, 'M', 'הּ'), + (0xFB35, 'M', 'וּ'), + (0xFB36, 'M', 'זּ'), + (0xFB37, 'X'), + (0xFB38, 'M', 'טּ'), + (0xFB39, 'M', 'יּ'), + (0xFB3A, 'M', 'ךּ'), + (0xFB3B, 'M', 'כּ'), + (0xFB3C, 'M', 'לּ'), + (0xFB3D, 'X'), + (0xFB3E, 'M', 'מּ'), + (0xFB3F, 'X'), + (0xFB40, 'M', 'נּ'), + (0xFB41, 'M', 'סּ'), + (0xFB42, 'X'), + (0xFB43, 'M', 'ףּ'), + (0xFB44, 'M', 'פּ'), + (0xFB45, 'X'), + (0xFB46, 'M', 'צּ'), + (0xFB47, 'M', 'קּ'), + (0xFB48, 'M', 'רּ'), + (0xFB49, 'M', 'שּ'), + (0xFB4A, 'M', 'תּ'), + (0xFB4B, 'M', 'וֹ'), + (0xFB4C, 'M', 'בֿ'), + (0xFB4D, 'M', 'כֿ'), + (0xFB4E, 'M', 'פֿ'), + (0xFB4F, 'M', 'אל'), + (0xFB50, 'M', 'ٱ'), + (0xFB52, 'M', 'ٻ'), + (0xFB56, 'M', 'پ'), + (0xFB5A, 'M', 'ڀ'), + (0xFB5E, 'M', 'ٺ'), + (0xFB62, 'M', 'ٿ'), + (0xFB66, 'M', 'ٹ'), + (0xFB6A, 'M', 'ڤ'), + (0xFB6E, 'M', 'ڦ'), + (0xFB72, 'M', 'ڄ'), + (0xFB76, 'M', 'ڃ'), + (0xFB7A, 'M', 'چ'), + (0xFB7E, 'M', 'ڇ'), + (0xFB82, 'M', 'ڍ'), + (0xFB84, 'M', 'ڌ'), + (0xFB86, 'M', 'ڎ'), + (0xFB88, 'M', 'ڈ'), + (0xFB8A, 'M', 'ژ'), + (0xFB8C, 'M', 'ڑ'), + (0xFB8E, 'M', 'ک'), + (0xFB92, 'M', 'گ'), + (0xFB96, 'M', 'ڳ'), + (0xFB9A, 'M', 'ڱ'), + (0xFB9E, 'M', 'ں'), + (0xFBA0, 'M', 'ڻ'), + (0xFBA4, 'M', 'ۀ'), + (0xFBA6, 'M', 'ہ'), + (0xFBAA, 'M', 'ھ'), + (0xFBAE, 'M', 'ے'), + (0xFBB0, 'M', 'ۓ'), + (0xFBB2, 'V'), + (0xFBC3, 'X'), + (0xFBD3, 'M', 'ڭ'), + (0xFBD7, 'M', 'ۇ'), + (0xFBD9, 'M', 'ۆ'), + (0xFBDB, 'M', 'ۈ'), + (0xFBDD, 'M', 'ۇٴ'), + (0xFBDE, 'M', 'ۋ'), + (0xFBE0, 'M', 'ۅ'), + (0xFBE2, 'M', 'ۉ'), + (0xFBE4, 'M', 'ې'), + (0xFBE8, 'M', 'ى'), + ] + +def _seg_45() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFBEA, 'M', 'ئا'), + (0xFBEC, 'M', 'ئە'), + (0xFBEE, 'M', 'ئو'), + (0xFBF0, 'M', 'ئۇ'), + (0xFBF2, 'M', 'ئۆ'), + (0xFBF4, 'M', 'ئۈ'), + (0xFBF6, 'M', 'ئې'), + (0xFBF9, 'M', 'ئى'), + (0xFBFC, 'M', 'ی'), + (0xFC00, 'M', 'ئج'), + (0xFC01, 'M', 'ئح'), + (0xFC02, 'M', 'ئم'), + (0xFC03, 'M', 'ئى'), + (0xFC04, 'M', 'ئي'), + (0xFC05, 'M', 'بج'), + (0xFC06, 'M', 'بح'), + (0xFC07, 'M', 'بخ'), + (0xFC08, 'M', 'بم'), + (0xFC09, 'M', 'بى'), + (0xFC0A, 'M', 'بي'), + (0xFC0B, 'M', 'تج'), + (0xFC0C, 'M', 'تح'), + (0xFC0D, 'M', 'تخ'), + (0xFC0E, 'M', 'تم'), + (0xFC0F, 'M', 'تى'), + (0xFC10, 'M', 'تي'), + (0xFC11, 'M', 'ثج'), + (0xFC12, 'M', 'ثم'), + (0xFC13, 'M', 'ثى'), + (0xFC14, 'M', 'ثي'), + (0xFC15, 'M', 'جح'), + (0xFC16, 'M', 'جم'), + (0xFC17, 'M', 'حج'), + (0xFC18, 'M', 'حم'), + (0xFC19, 'M', 'خج'), + (0xFC1A, 'M', 'خح'), + (0xFC1B, 'M', 'خم'), + (0xFC1C, 'M', 'سج'), + (0xFC1D, 'M', 'سح'), + (0xFC1E, 'M', 'سخ'), + (0xFC1F, 'M', 'سم'), + (0xFC20, 'M', 'صح'), + (0xFC21, 'M', 'صم'), + (0xFC22, 'M', 'ضج'), + (0xFC23, 'M', 'ضح'), + (0xFC24, 'M', 'ضخ'), + (0xFC25, 'M', 'ضم'), + (0xFC26, 'M', 'طح'), + (0xFC27, 'M', 'طم'), + (0xFC28, 'M', 'ظم'), + (0xFC29, 'M', 'عج'), + (0xFC2A, 'M', 'عم'), + (0xFC2B, 'M', 'غج'), + (0xFC2C, 'M', 'غم'), + (0xFC2D, 'M', 'فج'), + (0xFC2E, 'M', 'فح'), + (0xFC2F, 'M', 'فخ'), + (0xFC30, 'M', 'فم'), + (0xFC31, 'M', 'فى'), + (0xFC32, 'M', 'في'), + (0xFC33, 'M', 'قح'), + (0xFC34, 'M', 'قم'), + (0xFC35, 'M', 'قى'), + (0xFC36, 'M', 'قي'), + (0xFC37, 'M', 'كا'), + (0xFC38, 'M', 'كج'), + (0xFC39, 'M', 'كح'), + (0xFC3A, 'M', 'كخ'), + (0xFC3B, 'M', 'كل'), + (0xFC3C, 'M', 'كم'), + (0xFC3D, 'M', 'كى'), + (0xFC3E, 'M', 'كي'), + (0xFC3F, 'M', 'لج'), + (0xFC40, 'M', 'لح'), + (0xFC41, 'M', 'لخ'), + (0xFC42, 'M', 'لم'), + (0xFC43, 'M', 'لى'), + (0xFC44, 'M', 'لي'), + (0xFC45, 'M', 'مج'), + (0xFC46, 'M', 'مح'), + (0xFC47, 'M', 'مخ'), + (0xFC48, 'M', 'مم'), + (0xFC49, 'M', 'مى'), + (0xFC4A, 'M', 'مي'), + (0xFC4B, 'M', 'نج'), + (0xFC4C, 'M', 'نح'), + (0xFC4D, 'M', 'نخ'), + (0xFC4E, 'M', 'نم'), + (0xFC4F, 'M', 'نى'), + (0xFC50, 'M', 'ني'), + (0xFC51, 'M', 'هج'), + (0xFC52, 'M', 'هم'), + (0xFC53, 'M', 'هى'), + (0xFC54, 'M', 'هي'), + (0xFC55, 'M', 'يج'), + (0xFC56, 'M', 'يح'), + (0xFC57, 'M', 'يخ'), + (0xFC58, 'M', 'يم'), + (0xFC59, 'M', 'يى'), + (0xFC5A, 'M', 'يي'), + ] + +def _seg_46() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFC5B, 'M', 'ذٰ'), + (0xFC5C, 'M', 'رٰ'), + (0xFC5D, 'M', 'ىٰ'), + (0xFC5E, '3', ' ٌّ'), + (0xFC5F, '3', ' ٍّ'), + (0xFC60, '3', ' َّ'), + (0xFC61, '3', ' ُّ'), + (0xFC62, '3', ' ِّ'), + (0xFC63, '3', ' ّٰ'), + (0xFC64, 'M', 'ئر'), + (0xFC65, 'M', 'ئز'), + (0xFC66, 'M', 'ئم'), + (0xFC67, 'M', 'ئن'), + (0xFC68, 'M', 'ئى'), + (0xFC69, 'M', 'ئي'), + (0xFC6A, 'M', 'بر'), + (0xFC6B, 'M', 'بز'), + (0xFC6C, 'M', 'بم'), + (0xFC6D, 'M', 'بن'), + (0xFC6E, 'M', 'بى'), + (0xFC6F, 'M', 'بي'), + (0xFC70, 'M', 'تر'), + (0xFC71, 'M', 'تز'), + (0xFC72, 'M', 'تم'), + (0xFC73, 'M', 'تن'), + (0xFC74, 'M', 'تى'), + (0xFC75, 'M', 'تي'), + (0xFC76, 'M', 'ثر'), + (0xFC77, 'M', 'ثز'), + (0xFC78, 'M', 'ثم'), + (0xFC79, 'M', 'ثن'), + (0xFC7A, 'M', 'ثى'), + (0xFC7B, 'M', 'ثي'), + (0xFC7C, 'M', 'فى'), + (0xFC7D, 'M', 'في'), + (0xFC7E, 'M', 'قى'), + (0xFC7F, 'M', 'قي'), + (0xFC80, 'M', 'كا'), + (0xFC81, 'M', 'كل'), + (0xFC82, 'M', 'كم'), + (0xFC83, 'M', 'كى'), + (0xFC84, 'M', 'كي'), + (0xFC85, 'M', 'لم'), + (0xFC86, 'M', 'لى'), + (0xFC87, 'M', 'لي'), + (0xFC88, 'M', 'ما'), + (0xFC89, 'M', 'مم'), + (0xFC8A, 'M', 'نر'), + (0xFC8B, 'M', 'نز'), + (0xFC8C, 'M', 'نم'), + (0xFC8D, 'M', 'نن'), + (0xFC8E, 'M', 'نى'), + (0xFC8F, 'M', 'ني'), + (0xFC90, 'M', 'ىٰ'), + (0xFC91, 'M', 'ير'), + (0xFC92, 'M', 'يز'), + (0xFC93, 'M', 'يم'), + (0xFC94, 'M', 'ين'), + (0xFC95, 'M', 'يى'), + (0xFC96, 'M', 'يي'), + (0xFC97, 'M', 'ئج'), + (0xFC98, 'M', 'ئح'), + (0xFC99, 'M', 'ئخ'), + (0xFC9A, 'M', 'ئم'), + (0xFC9B, 'M', 'ئه'), + (0xFC9C, 'M', 'بج'), + (0xFC9D, 'M', 'بح'), + (0xFC9E, 'M', 'بخ'), + (0xFC9F, 'M', 'بم'), + (0xFCA0, 'M', 'به'), + (0xFCA1, 'M', 'تج'), + (0xFCA2, 'M', 'تح'), + (0xFCA3, 'M', 'تخ'), + (0xFCA4, 'M', 'تم'), + (0xFCA5, 'M', 'ته'), + (0xFCA6, 'M', 'ثم'), + (0xFCA7, 'M', 'جح'), + (0xFCA8, 'M', 'جم'), + (0xFCA9, 'M', 'حج'), + (0xFCAA, 'M', 'حم'), + (0xFCAB, 'M', 'خج'), + (0xFCAC, 'M', 'خم'), + (0xFCAD, 'M', 'سج'), + (0xFCAE, 'M', 'سح'), + (0xFCAF, 'M', 'سخ'), + (0xFCB0, 'M', 'سم'), + (0xFCB1, 'M', 'صح'), + (0xFCB2, 'M', 'صخ'), + (0xFCB3, 'M', 'صم'), + (0xFCB4, 'M', 'ضج'), + (0xFCB5, 'M', 'ضح'), + (0xFCB6, 'M', 'ضخ'), + (0xFCB7, 'M', 'ضم'), + (0xFCB8, 'M', 'طح'), + (0xFCB9, 'M', 'ظم'), + (0xFCBA, 'M', 'عج'), + (0xFCBB, 'M', 'عم'), + (0xFCBC, 'M', 'غج'), + (0xFCBD, 'M', 'غم'), + (0xFCBE, 'M', 'فج'), + ] + +def _seg_47() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFCBF, 'M', 'فح'), + (0xFCC0, 'M', 'فخ'), + (0xFCC1, 'M', 'فم'), + (0xFCC2, 'M', 'قح'), + (0xFCC3, 'M', 'قم'), + (0xFCC4, 'M', 'كج'), + (0xFCC5, 'M', 'كح'), + (0xFCC6, 'M', 'كخ'), + (0xFCC7, 'M', 'كل'), + (0xFCC8, 'M', 'كم'), + (0xFCC9, 'M', 'لج'), + (0xFCCA, 'M', 'لح'), + (0xFCCB, 'M', 'لخ'), + (0xFCCC, 'M', 'لم'), + (0xFCCD, 'M', 'له'), + (0xFCCE, 'M', 'مج'), + (0xFCCF, 'M', 'مح'), + (0xFCD0, 'M', 'مخ'), + (0xFCD1, 'M', 'مم'), + (0xFCD2, 'M', 'نج'), + (0xFCD3, 'M', 'نح'), + (0xFCD4, 'M', 'نخ'), + (0xFCD5, 'M', 'نم'), + (0xFCD6, 'M', 'نه'), + (0xFCD7, 'M', 'هج'), + (0xFCD8, 'M', 'هم'), + (0xFCD9, 'M', 'هٰ'), + (0xFCDA, 'M', 'يج'), + (0xFCDB, 'M', 'يح'), + (0xFCDC, 'M', 'يخ'), + (0xFCDD, 'M', 'يم'), + (0xFCDE, 'M', 'يه'), + (0xFCDF, 'M', 'ئم'), + (0xFCE0, 'M', 'ئه'), + (0xFCE1, 'M', 'بم'), + (0xFCE2, 'M', 'به'), + (0xFCE3, 'M', 'تم'), + (0xFCE4, 'M', 'ته'), + (0xFCE5, 'M', 'ثم'), + (0xFCE6, 'M', 'ثه'), + (0xFCE7, 'M', 'سم'), + (0xFCE8, 'M', 'سه'), + (0xFCE9, 'M', 'شم'), + (0xFCEA, 'M', 'شه'), + (0xFCEB, 'M', 'كل'), + (0xFCEC, 'M', 'كم'), + (0xFCED, 'M', 'لم'), + (0xFCEE, 'M', 'نم'), + (0xFCEF, 'M', 'نه'), + (0xFCF0, 'M', 'يم'), + (0xFCF1, 'M', 'يه'), + (0xFCF2, 'M', 'ـَّ'), + (0xFCF3, 'M', 'ـُّ'), + (0xFCF4, 'M', 'ـِّ'), + (0xFCF5, 'M', 'طى'), + (0xFCF6, 'M', 'طي'), + (0xFCF7, 'M', 'عى'), + (0xFCF8, 'M', 'عي'), + (0xFCF9, 'M', 'غى'), + (0xFCFA, 'M', 'غي'), + (0xFCFB, 'M', 'سى'), + (0xFCFC, 'M', 'سي'), + (0xFCFD, 'M', 'شى'), + (0xFCFE, 'M', 'شي'), + (0xFCFF, 'M', 'حى'), + (0xFD00, 'M', 'حي'), + (0xFD01, 'M', 'جى'), + (0xFD02, 'M', 'جي'), + (0xFD03, 'M', 'خى'), + (0xFD04, 'M', 'خي'), + (0xFD05, 'M', 'صى'), + (0xFD06, 'M', 'صي'), + (0xFD07, 'M', 'ضى'), + (0xFD08, 'M', 'ضي'), + (0xFD09, 'M', 'شج'), + (0xFD0A, 'M', 'شح'), + (0xFD0B, 'M', 'شخ'), + (0xFD0C, 'M', 'شم'), + (0xFD0D, 'M', 'شر'), + (0xFD0E, 'M', 'سر'), + (0xFD0F, 'M', 'صر'), + (0xFD10, 'M', 'ضر'), + (0xFD11, 'M', 'طى'), + (0xFD12, 'M', 'طي'), + (0xFD13, 'M', 'عى'), + (0xFD14, 'M', 'عي'), + (0xFD15, 'M', 'غى'), + (0xFD16, 'M', 'غي'), + (0xFD17, 'M', 'سى'), + (0xFD18, 'M', 'سي'), + (0xFD19, 'M', 'شى'), + (0xFD1A, 'M', 'شي'), + (0xFD1B, 'M', 'حى'), + (0xFD1C, 'M', 'حي'), + (0xFD1D, 'M', 'جى'), + (0xFD1E, 'M', 'جي'), + (0xFD1F, 'M', 'خى'), + (0xFD20, 'M', 'خي'), + (0xFD21, 'M', 'صى'), + (0xFD22, 'M', 'صي'), + ] + +def _seg_48() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFD23, 'M', 'ضى'), + (0xFD24, 'M', 'ضي'), + (0xFD25, 'M', 'شج'), + (0xFD26, 'M', 'شح'), + (0xFD27, 'M', 'شخ'), + (0xFD28, 'M', 'شم'), + (0xFD29, 'M', 'شر'), + (0xFD2A, 'M', 'سر'), + (0xFD2B, 'M', 'صر'), + (0xFD2C, 'M', 'ضر'), + (0xFD2D, 'M', 'شج'), + (0xFD2E, 'M', 'شح'), + (0xFD2F, 'M', 'شخ'), + (0xFD30, 'M', 'شم'), + (0xFD31, 'M', 'سه'), + (0xFD32, 'M', 'شه'), + (0xFD33, 'M', 'طم'), + (0xFD34, 'M', 'سج'), + (0xFD35, 'M', 'سح'), + (0xFD36, 'M', 'سخ'), + (0xFD37, 'M', 'شج'), + (0xFD38, 'M', 'شح'), + (0xFD39, 'M', 'شخ'), + (0xFD3A, 'M', 'طم'), + (0xFD3B, 'M', 'ظم'), + (0xFD3C, 'M', 'اً'), + (0xFD3E, 'V'), + (0xFD50, 'M', 'تجم'), + (0xFD51, 'M', 'تحج'), + (0xFD53, 'M', 'تحم'), + (0xFD54, 'M', 'تخم'), + (0xFD55, 'M', 'تمج'), + (0xFD56, 'M', 'تمح'), + (0xFD57, 'M', 'تمخ'), + (0xFD58, 'M', 'جمح'), + (0xFD5A, 'M', 'حمي'), + (0xFD5B, 'M', 'حمى'), + (0xFD5C, 'M', 'سحج'), + (0xFD5D, 'M', 'سجح'), + (0xFD5E, 'M', 'سجى'), + (0xFD5F, 'M', 'سمح'), + (0xFD61, 'M', 'سمج'), + (0xFD62, 'M', 'سمم'), + (0xFD64, 'M', 'صحح'), + (0xFD66, 'M', 'صمم'), + (0xFD67, 'M', 'شحم'), + (0xFD69, 'M', 'شجي'), + (0xFD6A, 'M', 'شمخ'), + (0xFD6C, 'M', 'شمم'), + (0xFD6E, 'M', 'ضحى'), + (0xFD6F, 'M', 'ضخم'), + (0xFD71, 'M', 'طمح'), + (0xFD73, 'M', 'طمم'), + (0xFD74, 'M', 'طمي'), + (0xFD75, 'M', 'عجم'), + (0xFD76, 'M', 'عمم'), + (0xFD78, 'M', 'عمى'), + (0xFD79, 'M', 'غمم'), + (0xFD7A, 'M', 'غمي'), + (0xFD7B, 'M', 'غمى'), + (0xFD7C, 'M', 'فخم'), + (0xFD7E, 'M', 'قمح'), + (0xFD7F, 'M', 'قمم'), + (0xFD80, 'M', 'لحم'), + (0xFD81, 'M', 'لحي'), + (0xFD82, 'M', 'لحى'), + (0xFD83, 'M', 'لجج'), + (0xFD85, 'M', 'لخم'), + (0xFD87, 'M', 'لمح'), + (0xFD89, 'M', 'محج'), + (0xFD8A, 'M', 'محم'), + (0xFD8B, 'M', 'محي'), + (0xFD8C, 'M', 'مجح'), + (0xFD8D, 'M', 'مجم'), + (0xFD8E, 'M', 'مخج'), + (0xFD8F, 'M', 'مخم'), + (0xFD90, 'X'), + (0xFD92, 'M', 'مجخ'), + (0xFD93, 'M', 'همج'), + (0xFD94, 'M', 'همم'), + (0xFD95, 'M', 'نحم'), + (0xFD96, 'M', 'نحى'), + (0xFD97, 'M', 'نجم'), + (0xFD99, 'M', 'نجى'), + (0xFD9A, 'M', 'نمي'), + (0xFD9B, 'M', 'نمى'), + (0xFD9C, 'M', 'يمم'), + (0xFD9E, 'M', 'بخي'), + (0xFD9F, 'M', 'تجي'), + (0xFDA0, 'M', 'تجى'), + (0xFDA1, 'M', 'تخي'), + (0xFDA2, 'M', 'تخى'), + (0xFDA3, 'M', 'تمي'), + (0xFDA4, 'M', 'تمى'), + (0xFDA5, 'M', 'جمي'), + (0xFDA6, 'M', 'جحى'), + (0xFDA7, 'M', 'جمى'), + (0xFDA8, 'M', 'سخى'), + (0xFDA9, 'M', 'صحي'), + (0xFDAA, 'M', 'شحي'), + ] + +def _seg_49() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFDAB, 'M', 'ضحي'), + (0xFDAC, 'M', 'لجي'), + (0xFDAD, 'M', 'لمي'), + (0xFDAE, 'M', 'يحي'), + (0xFDAF, 'M', 'يجي'), + (0xFDB0, 'M', 'يمي'), + (0xFDB1, 'M', 'ممي'), + (0xFDB2, 'M', 'قمي'), + (0xFDB3, 'M', 'نحي'), + (0xFDB4, 'M', 'قمح'), + (0xFDB5, 'M', 'لحم'), + (0xFDB6, 'M', 'عمي'), + (0xFDB7, 'M', 'كمي'), + (0xFDB8, 'M', 'نجح'), + (0xFDB9, 'M', 'مخي'), + (0xFDBA, 'M', 'لجم'), + (0xFDBB, 'M', 'كمم'), + (0xFDBC, 'M', 'لجم'), + (0xFDBD, 'M', 'نجح'), + (0xFDBE, 'M', 'جحي'), + (0xFDBF, 'M', 'حجي'), + (0xFDC0, 'M', 'مجي'), + (0xFDC1, 'M', 'فمي'), + (0xFDC2, 'M', 'بحي'), + (0xFDC3, 'M', 'كمم'), + (0xFDC4, 'M', 'عجم'), + (0xFDC5, 'M', 'صمم'), + (0xFDC6, 'M', 'سخي'), + (0xFDC7, 'M', 'نجي'), + (0xFDC8, 'X'), + (0xFDCF, 'V'), + (0xFDD0, 'X'), + (0xFDF0, 'M', 'صلے'), + (0xFDF1, 'M', 'قلے'), + (0xFDF2, 'M', 'الله'), + (0xFDF3, 'M', 'اكبر'), + (0xFDF4, 'M', 'محمد'), + (0xFDF5, 'M', 'صلعم'), + (0xFDF6, 'M', 'رسول'), + (0xFDF7, 'M', 'عليه'), + (0xFDF8, 'M', 'وسلم'), + (0xFDF9, 'M', 'صلى'), + (0xFDFA, '3', 'صلى الله عليه وسلم'), + (0xFDFB, '3', 'جل جلاله'), + (0xFDFC, 'M', 'ریال'), + (0xFDFD, 'V'), + (0xFE00, 'I'), + (0xFE10, '3', ','), + (0xFE11, 'M', '、'), + (0xFE12, 'X'), + (0xFE13, '3', ':'), + (0xFE14, '3', ';'), + (0xFE15, '3', '!'), + (0xFE16, '3', '?'), + (0xFE17, 'M', '〖'), + (0xFE18, 'M', '〗'), + (0xFE19, 'X'), + (0xFE20, 'V'), + (0xFE30, 'X'), + (0xFE31, 'M', '—'), + (0xFE32, 'M', '–'), + (0xFE33, '3', '_'), + (0xFE35, '3', '('), + (0xFE36, '3', ')'), + (0xFE37, '3', '{'), + (0xFE38, '3', '}'), + (0xFE39, 'M', '〔'), + (0xFE3A, 'M', '〕'), + (0xFE3B, 'M', '【'), + (0xFE3C, 'M', '】'), + (0xFE3D, 'M', '《'), + (0xFE3E, 'M', '》'), + (0xFE3F, 'M', '〈'), + (0xFE40, 'M', '〉'), + (0xFE41, 'M', '「'), + (0xFE42, 'M', '」'), + (0xFE43, 'M', '『'), + (0xFE44, 'M', '』'), + (0xFE45, 'V'), + (0xFE47, '3', '['), + (0xFE48, '3', ']'), + (0xFE49, '3', ' ̅'), + (0xFE4D, '3', '_'), + (0xFE50, '3', ','), + (0xFE51, 'M', '、'), + (0xFE52, 'X'), + (0xFE54, '3', ';'), + (0xFE55, '3', ':'), + (0xFE56, '3', '?'), + (0xFE57, '3', '!'), + (0xFE58, 'M', '—'), + (0xFE59, '3', '('), + (0xFE5A, '3', ')'), + (0xFE5B, '3', '{'), + (0xFE5C, '3', '}'), + (0xFE5D, 'M', '〔'), + (0xFE5E, 'M', '〕'), + (0xFE5F, '3', '#'), + (0xFE60, '3', '&'), + (0xFE61, '3', '*'), + ] + +def _seg_50() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFE62, '3', '+'), + (0xFE63, 'M', '-'), + (0xFE64, '3', '<'), + (0xFE65, '3', '>'), + (0xFE66, '3', '='), + (0xFE67, 'X'), + (0xFE68, '3', '\\'), + (0xFE69, '3', '$'), + (0xFE6A, '3', '%'), + (0xFE6B, '3', '@'), + (0xFE6C, 'X'), + (0xFE70, '3', ' ً'), + (0xFE71, 'M', 'ـً'), + (0xFE72, '3', ' ٌ'), + (0xFE73, 'V'), + (0xFE74, '3', ' ٍ'), + (0xFE75, 'X'), + (0xFE76, '3', ' َ'), + (0xFE77, 'M', 'ـَ'), + (0xFE78, '3', ' ُ'), + (0xFE79, 'M', 'ـُ'), + (0xFE7A, '3', ' ِ'), + (0xFE7B, 'M', 'ـِ'), + (0xFE7C, '3', ' ّ'), + (0xFE7D, 'M', 'ـّ'), + (0xFE7E, '3', ' ْ'), + (0xFE7F, 'M', 'ـْ'), + (0xFE80, 'M', 'ء'), + (0xFE81, 'M', 'آ'), + (0xFE83, 'M', 'أ'), + (0xFE85, 'M', 'ؤ'), + (0xFE87, 'M', 'إ'), + (0xFE89, 'M', 'ئ'), + (0xFE8D, 'M', 'ا'), + (0xFE8F, 'M', 'ب'), + (0xFE93, 'M', 'ة'), + (0xFE95, 'M', 'ت'), + (0xFE99, 'M', 'ث'), + (0xFE9D, 'M', 'ج'), + (0xFEA1, 'M', 'ح'), + (0xFEA5, 'M', 'خ'), + (0xFEA9, 'M', 'د'), + (0xFEAB, 'M', 'ذ'), + (0xFEAD, 'M', 'ر'), + (0xFEAF, 'M', 'ز'), + (0xFEB1, 'M', 'س'), + (0xFEB5, 'M', 'ش'), + (0xFEB9, 'M', 'ص'), + (0xFEBD, 'M', 'ض'), + (0xFEC1, 'M', 'ط'), + (0xFEC5, 'M', 'ظ'), + (0xFEC9, 'M', 'ع'), + (0xFECD, 'M', 'غ'), + (0xFED1, 'M', 'ف'), + (0xFED5, 'M', 'ق'), + (0xFED9, 'M', 'ك'), + (0xFEDD, 'M', 'ل'), + (0xFEE1, 'M', 'م'), + (0xFEE5, 'M', 'ن'), + (0xFEE9, 'M', 'ه'), + (0xFEED, 'M', 'و'), + (0xFEEF, 'M', 'ى'), + (0xFEF1, 'M', 'ي'), + (0xFEF5, 'M', 'لآ'), + (0xFEF7, 'M', 'لأ'), + (0xFEF9, 'M', 'لإ'), + (0xFEFB, 'M', 'لا'), + (0xFEFD, 'X'), + (0xFEFF, 'I'), + (0xFF00, 'X'), + (0xFF01, '3', '!'), + (0xFF02, '3', '"'), + (0xFF03, '3', '#'), + (0xFF04, '3', '$'), + (0xFF05, '3', '%'), + (0xFF06, '3', '&'), + (0xFF07, '3', '\''), + (0xFF08, '3', '('), + (0xFF09, '3', ')'), + (0xFF0A, '3', '*'), + (0xFF0B, '3', '+'), + (0xFF0C, '3', ','), + (0xFF0D, 'M', '-'), + (0xFF0E, 'M', '.'), + (0xFF0F, '3', '/'), + (0xFF10, 'M', '0'), + (0xFF11, 'M', '1'), + (0xFF12, 'M', '2'), + (0xFF13, 'M', '3'), + (0xFF14, 'M', '4'), + (0xFF15, 'M', '5'), + (0xFF16, 'M', '6'), + (0xFF17, 'M', '7'), + (0xFF18, 'M', '8'), + (0xFF19, 'M', '9'), + (0xFF1A, '3', ':'), + (0xFF1B, '3', ';'), + (0xFF1C, '3', '<'), + (0xFF1D, '3', '='), + (0xFF1E, '3', '>'), + ] + +def _seg_51() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFF1F, '3', '?'), + (0xFF20, '3', '@'), + (0xFF21, 'M', 'a'), + (0xFF22, 'M', 'b'), + (0xFF23, 'M', 'c'), + (0xFF24, 'M', 'd'), + (0xFF25, 'M', 'e'), + (0xFF26, 'M', 'f'), + (0xFF27, 'M', 'g'), + (0xFF28, 'M', 'h'), + (0xFF29, 'M', 'i'), + (0xFF2A, 'M', 'j'), + (0xFF2B, 'M', 'k'), + (0xFF2C, 'M', 'l'), + (0xFF2D, 'M', 'm'), + (0xFF2E, 'M', 'n'), + (0xFF2F, 'M', 'o'), + (0xFF30, 'M', 'p'), + (0xFF31, 'M', 'q'), + (0xFF32, 'M', 'r'), + (0xFF33, 'M', 's'), + (0xFF34, 'M', 't'), + (0xFF35, 'M', 'u'), + (0xFF36, 'M', 'v'), + (0xFF37, 'M', 'w'), + (0xFF38, 'M', 'x'), + (0xFF39, 'M', 'y'), + (0xFF3A, 'M', 'z'), + (0xFF3B, '3', '['), + (0xFF3C, '3', '\\'), + (0xFF3D, '3', ']'), + (0xFF3E, '3', '^'), + (0xFF3F, '3', '_'), + (0xFF40, '3', '`'), + (0xFF41, 'M', 'a'), + (0xFF42, 'M', 'b'), + (0xFF43, 'M', 'c'), + (0xFF44, 'M', 'd'), + (0xFF45, 'M', 'e'), + (0xFF46, 'M', 'f'), + (0xFF47, 'M', 'g'), + (0xFF48, 'M', 'h'), + (0xFF49, 'M', 'i'), + (0xFF4A, 'M', 'j'), + (0xFF4B, 'M', 'k'), + (0xFF4C, 'M', 'l'), + (0xFF4D, 'M', 'm'), + (0xFF4E, 'M', 'n'), + (0xFF4F, 'M', 'o'), + (0xFF50, 'M', 'p'), + (0xFF51, 'M', 'q'), + (0xFF52, 'M', 'r'), + (0xFF53, 'M', 's'), + (0xFF54, 'M', 't'), + (0xFF55, 'M', 'u'), + (0xFF56, 'M', 'v'), + (0xFF57, 'M', 'w'), + (0xFF58, 'M', 'x'), + (0xFF59, 'M', 'y'), + (0xFF5A, 'M', 'z'), + (0xFF5B, '3', '{'), + (0xFF5C, '3', '|'), + (0xFF5D, '3', '}'), + (0xFF5E, '3', '~'), + (0xFF5F, 'M', '⦅'), + (0xFF60, 'M', '⦆'), + (0xFF61, 'M', '.'), + (0xFF62, 'M', '「'), + (0xFF63, 'M', '」'), + (0xFF64, 'M', '、'), + (0xFF65, 'M', '・'), + (0xFF66, 'M', 'ヲ'), + (0xFF67, 'M', 'ァ'), + (0xFF68, 'M', 'ィ'), + (0xFF69, 'M', 'ゥ'), + (0xFF6A, 'M', 'ェ'), + (0xFF6B, 'M', 'ォ'), + (0xFF6C, 'M', 'ャ'), + (0xFF6D, 'M', 'ュ'), + (0xFF6E, 'M', 'ョ'), + (0xFF6F, 'M', 'ッ'), + (0xFF70, 'M', 'ー'), + (0xFF71, 'M', 'ア'), + (0xFF72, 'M', 'イ'), + (0xFF73, 'M', 'ウ'), + (0xFF74, 'M', 'エ'), + (0xFF75, 'M', 'オ'), + (0xFF76, 'M', 'カ'), + (0xFF77, 'M', 'キ'), + (0xFF78, 'M', 'ク'), + (0xFF79, 'M', 'ケ'), + (0xFF7A, 'M', 'コ'), + (0xFF7B, 'M', 'サ'), + (0xFF7C, 'M', 'シ'), + (0xFF7D, 'M', 'ス'), + (0xFF7E, 'M', 'セ'), + (0xFF7F, 'M', 'ソ'), + (0xFF80, 'M', 'タ'), + (0xFF81, 'M', 'チ'), + (0xFF82, 'M', 'ツ'), + ] + +def _seg_52() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFF83, 'M', 'テ'), + (0xFF84, 'M', 'ト'), + (0xFF85, 'M', 'ナ'), + (0xFF86, 'M', 'ニ'), + (0xFF87, 'M', 'ヌ'), + (0xFF88, 'M', 'ネ'), + (0xFF89, 'M', 'ノ'), + (0xFF8A, 'M', 'ハ'), + (0xFF8B, 'M', 'ヒ'), + (0xFF8C, 'M', 'フ'), + (0xFF8D, 'M', 'ヘ'), + (0xFF8E, 'M', 'ホ'), + (0xFF8F, 'M', 'マ'), + (0xFF90, 'M', 'ミ'), + (0xFF91, 'M', 'ム'), + (0xFF92, 'M', 'メ'), + (0xFF93, 'M', 'モ'), + (0xFF94, 'M', 'ヤ'), + (0xFF95, 'M', 'ユ'), + (0xFF96, 'M', 'ヨ'), + (0xFF97, 'M', 'ラ'), + (0xFF98, 'M', 'リ'), + (0xFF99, 'M', 'ル'), + (0xFF9A, 'M', 'レ'), + (0xFF9B, 'M', 'ロ'), + (0xFF9C, 'M', 'ワ'), + (0xFF9D, 'M', 'ン'), + (0xFF9E, 'M', '゙'), + (0xFF9F, 'M', '゚'), + (0xFFA0, 'X'), + (0xFFA1, 'M', 'ᄀ'), + (0xFFA2, 'M', 'ᄁ'), + (0xFFA3, 'M', 'ᆪ'), + (0xFFA4, 'M', 'ᄂ'), + (0xFFA5, 'M', 'ᆬ'), + (0xFFA6, 'M', 'ᆭ'), + (0xFFA7, 'M', 'ᄃ'), + (0xFFA8, 'M', 'ᄄ'), + (0xFFA9, 'M', 'ᄅ'), + (0xFFAA, 'M', 'ᆰ'), + (0xFFAB, 'M', 'ᆱ'), + (0xFFAC, 'M', 'ᆲ'), + (0xFFAD, 'M', 'ᆳ'), + (0xFFAE, 'M', 'ᆴ'), + (0xFFAF, 'M', 'ᆵ'), + (0xFFB0, 'M', 'ᄚ'), + (0xFFB1, 'M', 'ᄆ'), + (0xFFB2, 'M', 'ᄇ'), + (0xFFB3, 'M', 'ᄈ'), + (0xFFB4, 'M', 'ᄡ'), + (0xFFB5, 'M', 'ᄉ'), + (0xFFB6, 'M', 'ᄊ'), + (0xFFB7, 'M', 'ᄋ'), + (0xFFB8, 'M', 'ᄌ'), + (0xFFB9, 'M', 'ᄍ'), + (0xFFBA, 'M', 'ᄎ'), + (0xFFBB, 'M', 'ᄏ'), + (0xFFBC, 'M', 'ᄐ'), + (0xFFBD, 'M', 'ᄑ'), + (0xFFBE, 'M', 'ᄒ'), + (0xFFBF, 'X'), + (0xFFC2, 'M', 'ᅡ'), + (0xFFC3, 'M', 'ᅢ'), + (0xFFC4, 'M', 'ᅣ'), + (0xFFC5, 'M', 'ᅤ'), + (0xFFC6, 'M', 'ᅥ'), + (0xFFC7, 'M', 'ᅦ'), + (0xFFC8, 'X'), + (0xFFCA, 'M', 'ᅧ'), + (0xFFCB, 'M', 'ᅨ'), + (0xFFCC, 'M', 'ᅩ'), + (0xFFCD, 'M', 'ᅪ'), + (0xFFCE, 'M', 'ᅫ'), + (0xFFCF, 'M', 'ᅬ'), + (0xFFD0, 'X'), + (0xFFD2, 'M', 'ᅭ'), + (0xFFD3, 'M', 'ᅮ'), + (0xFFD4, 'M', 'ᅯ'), + (0xFFD5, 'M', 'ᅰ'), + (0xFFD6, 'M', 'ᅱ'), + (0xFFD7, 'M', 'ᅲ'), + (0xFFD8, 'X'), + (0xFFDA, 'M', 'ᅳ'), + (0xFFDB, 'M', 'ᅴ'), + (0xFFDC, 'M', 'ᅵ'), + (0xFFDD, 'X'), + (0xFFE0, 'M', '¢'), + (0xFFE1, 'M', '£'), + (0xFFE2, 'M', '¬'), + (0xFFE3, '3', ' ̄'), + (0xFFE4, 'M', '¦'), + (0xFFE5, 'M', '¥'), + (0xFFE6, 'M', '₩'), + (0xFFE7, 'X'), + (0xFFE8, 'M', '│'), + (0xFFE9, 'M', '←'), + (0xFFEA, 'M', '↑'), + (0xFFEB, 'M', '→'), + (0xFFEC, 'M', '↓'), + (0xFFED, 'M', '■'), + ] + +def _seg_53() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0xFFEE, 'M', '○'), + (0xFFEF, 'X'), + (0x10000, 'V'), + (0x1000C, 'X'), + (0x1000D, 'V'), + (0x10027, 'X'), + (0x10028, 'V'), + (0x1003B, 'X'), + (0x1003C, 'V'), + (0x1003E, 'X'), + (0x1003F, 'V'), + (0x1004E, 'X'), + (0x10050, 'V'), + (0x1005E, 'X'), + (0x10080, 'V'), + (0x100FB, 'X'), + (0x10100, 'V'), + (0x10103, 'X'), + (0x10107, 'V'), + (0x10134, 'X'), + (0x10137, 'V'), + (0x1018F, 'X'), + (0x10190, 'V'), + (0x1019D, 'X'), + (0x101A0, 'V'), + (0x101A1, 'X'), + (0x101D0, 'V'), + (0x101FE, 'X'), + (0x10280, 'V'), + (0x1029D, 'X'), + (0x102A0, 'V'), + (0x102D1, 'X'), + (0x102E0, 'V'), + (0x102FC, 'X'), + (0x10300, 'V'), + (0x10324, 'X'), + (0x1032D, 'V'), + (0x1034B, 'X'), + (0x10350, 'V'), + (0x1037B, 'X'), + (0x10380, 'V'), + (0x1039E, 'X'), + (0x1039F, 'V'), + (0x103C4, 'X'), + (0x103C8, 'V'), + (0x103D6, 'X'), + (0x10400, 'M', '𐐨'), + (0x10401, 'M', '𐐩'), + (0x10402, 'M', '𐐪'), + (0x10403, 'M', '𐐫'), + (0x10404, 'M', '𐐬'), + (0x10405, 'M', '𐐭'), + (0x10406, 'M', '𐐮'), + (0x10407, 'M', '𐐯'), + (0x10408, 'M', '𐐰'), + (0x10409, 'M', '𐐱'), + (0x1040A, 'M', '𐐲'), + (0x1040B, 'M', '𐐳'), + (0x1040C, 'M', '𐐴'), + (0x1040D, 'M', '𐐵'), + (0x1040E, 'M', '𐐶'), + (0x1040F, 'M', '𐐷'), + (0x10410, 'M', '𐐸'), + (0x10411, 'M', '𐐹'), + (0x10412, 'M', '𐐺'), + (0x10413, 'M', '𐐻'), + (0x10414, 'M', '𐐼'), + (0x10415, 'M', '𐐽'), + (0x10416, 'M', '𐐾'), + (0x10417, 'M', '𐐿'), + (0x10418, 'M', '𐑀'), + (0x10419, 'M', '𐑁'), + (0x1041A, 'M', '𐑂'), + (0x1041B, 'M', '𐑃'), + (0x1041C, 'M', '𐑄'), + (0x1041D, 'M', '𐑅'), + (0x1041E, 'M', '𐑆'), + (0x1041F, 'M', '𐑇'), + (0x10420, 'M', '𐑈'), + (0x10421, 'M', '𐑉'), + (0x10422, 'M', '𐑊'), + (0x10423, 'M', '𐑋'), + (0x10424, 'M', '𐑌'), + (0x10425, 'M', '𐑍'), + (0x10426, 'M', '𐑎'), + (0x10427, 'M', '𐑏'), + (0x10428, 'V'), + (0x1049E, 'X'), + (0x104A0, 'V'), + (0x104AA, 'X'), + (0x104B0, 'M', '𐓘'), + (0x104B1, 'M', '𐓙'), + (0x104B2, 'M', '𐓚'), + (0x104B3, 'M', '𐓛'), + (0x104B4, 'M', '𐓜'), + (0x104B5, 'M', '𐓝'), + (0x104B6, 'M', '𐓞'), + (0x104B7, 'M', '𐓟'), + (0x104B8, 'M', '𐓠'), + (0x104B9, 'M', '𐓡'), + ] + +def _seg_54() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x104BA, 'M', '𐓢'), + (0x104BB, 'M', '𐓣'), + (0x104BC, 'M', '𐓤'), + (0x104BD, 'M', '𐓥'), + (0x104BE, 'M', '𐓦'), + (0x104BF, 'M', '𐓧'), + (0x104C0, 'M', '𐓨'), + (0x104C1, 'M', '𐓩'), + (0x104C2, 'M', '𐓪'), + (0x104C3, 'M', '𐓫'), + (0x104C4, 'M', '𐓬'), + (0x104C5, 'M', '𐓭'), + (0x104C6, 'M', '𐓮'), + (0x104C7, 'M', '𐓯'), + (0x104C8, 'M', '𐓰'), + (0x104C9, 'M', '𐓱'), + (0x104CA, 'M', '𐓲'), + (0x104CB, 'M', '𐓳'), + (0x104CC, 'M', '𐓴'), + (0x104CD, 'M', '𐓵'), + (0x104CE, 'M', '𐓶'), + (0x104CF, 'M', '𐓷'), + (0x104D0, 'M', '𐓸'), + (0x104D1, 'M', '𐓹'), + (0x104D2, 'M', '𐓺'), + (0x104D3, 'M', '𐓻'), + (0x104D4, 'X'), + (0x104D8, 'V'), + (0x104FC, 'X'), + (0x10500, 'V'), + (0x10528, 'X'), + (0x10530, 'V'), + (0x10564, 'X'), + (0x1056F, 'V'), + (0x10570, 'M', '𐖗'), + (0x10571, 'M', '𐖘'), + (0x10572, 'M', '𐖙'), + (0x10573, 'M', '𐖚'), + (0x10574, 'M', '𐖛'), + (0x10575, 'M', '𐖜'), + (0x10576, 'M', '𐖝'), + (0x10577, 'M', '𐖞'), + (0x10578, 'M', '𐖟'), + (0x10579, 'M', '𐖠'), + (0x1057A, 'M', '𐖡'), + (0x1057B, 'X'), + (0x1057C, 'M', '𐖣'), + (0x1057D, 'M', '𐖤'), + (0x1057E, 'M', '𐖥'), + (0x1057F, 'M', '𐖦'), + (0x10580, 'M', '𐖧'), + (0x10581, 'M', '𐖨'), + (0x10582, 'M', '𐖩'), + (0x10583, 'M', '𐖪'), + (0x10584, 'M', '𐖫'), + (0x10585, 'M', '𐖬'), + (0x10586, 'M', '𐖭'), + (0x10587, 'M', '𐖮'), + (0x10588, 'M', '𐖯'), + (0x10589, 'M', '𐖰'), + (0x1058A, 'M', '𐖱'), + (0x1058B, 'X'), + (0x1058C, 'M', '𐖳'), + (0x1058D, 'M', '𐖴'), + (0x1058E, 'M', '𐖵'), + (0x1058F, 'M', '𐖶'), + (0x10590, 'M', '𐖷'), + (0x10591, 'M', '𐖸'), + (0x10592, 'M', '𐖹'), + (0x10593, 'X'), + (0x10594, 'M', '𐖻'), + (0x10595, 'M', '𐖼'), + (0x10596, 'X'), + (0x10597, 'V'), + (0x105A2, 'X'), + (0x105A3, 'V'), + (0x105B2, 'X'), + (0x105B3, 'V'), + (0x105BA, 'X'), + (0x105BB, 'V'), + (0x105BD, 'X'), + (0x10600, 'V'), + (0x10737, 'X'), + (0x10740, 'V'), + (0x10756, 'X'), + (0x10760, 'V'), + (0x10768, 'X'), + (0x10780, 'V'), + (0x10781, 'M', 'ː'), + (0x10782, 'M', 'ˑ'), + (0x10783, 'M', 'æ'), + (0x10784, 'M', 'ʙ'), + (0x10785, 'M', 'ɓ'), + (0x10786, 'X'), + (0x10787, 'M', 'ʣ'), + (0x10788, 'M', 'ꭦ'), + (0x10789, 'M', 'ʥ'), + (0x1078A, 'M', 'ʤ'), + (0x1078B, 'M', 'ɖ'), + (0x1078C, 'M', 'ɗ'), + ] + +def _seg_55() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1078D, 'M', 'ᶑ'), + (0x1078E, 'M', 'ɘ'), + (0x1078F, 'M', 'ɞ'), + (0x10790, 'M', 'ʩ'), + (0x10791, 'M', 'ɤ'), + (0x10792, 'M', 'ɢ'), + (0x10793, 'M', 'ɠ'), + (0x10794, 'M', 'ʛ'), + (0x10795, 'M', 'ħ'), + (0x10796, 'M', 'ʜ'), + (0x10797, 'M', 'ɧ'), + (0x10798, 'M', 'ʄ'), + (0x10799, 'M', 'ʪ'), + (0x1079A, 'M', 'ʫ'), + (0x1079B, 'M', 'ɬ'), + (0x1079C, 'M', '𝼄'), + (0x1079D, 'M', 'ꞎ'), + (0x1079E, 'M', 'ɮ'), + (0x1079F, 'M', '𝼅'), + (0x107A0, 'M', 'ʎ'), + (0x107A1, 'M', '𝼆'), + (0x107A2, 'M', 'ø'), + (0x107A3, 'M', 'ɶ'), + (0x107A4, 'M', 'ɷ'), + (0x107A5, 'M', 'q'), + (0x107A6, 'M', 'ɺ'), + (0x107A7, 'M', '𝼈'), + (0x107A8, 'M', 'ɽ'), + (0x107A9, 'M', 'ɾ'), + (0x107AA, 'M', 'ʀ'), + (0x107AB, 'M', 'ʨ'), + (0x107AC, 'M', 'ʦ'), + (0x107AD, 'M', 'ꭧ'), + (0x107AE, 'M', 'ʧ'), + (0x107AF, 'M', 'ʈ'), + (0x107B0, 'M', 'ⱱ'), + (0x107B1, 'X'), + (0x107B2, 'M', 'ʏ'), + (0x107B3, 'M', 'ʡ'), + (0x107B4, 'M', 'ʢ'), + (0x107B5, 'M', 'ʘ'), + (0x107B6, 'M', 'ǀ'), + (0x107B7, 'M', 'ǁ'), + (0x107B8, 'M', 'ǂ'), + (0x107B9, 'M', '𝼊'), + (0x107BA, 'M', '𝼞'), + (0x107BB, 'X'), + (0x10800, 'V'), + (0x10806, 'X'), + (0x10808, 'V'), + (0x10809, 'X'), + (0x1080A, 'V'), + (0x10836, 'X'), + (0x10837, 'V'), + (0x10839, 'X'), + (0x1083C, 'V'), + (0x1083D, 'X'), + (0x1083F, 'V'), + (0x10856, 'X'), + (0x10857, 'V'), + (0x1089F, 'X'), + (0x108A7, 'V'), + (0x108B0, 'X'), + (0x108E0, 'V'), + (0x108F3, 'X'), + (0x108F4, 'V'), + (0x108F6, 'X'), + (0x108FB, 'V'), + (0x1091C, 'X'), + (0x1091F, 'V'), + (0x1093A, 'X'), + (0x1093F, 'V'), + (0x10940, 'X'), + (0x10980, 'V'), + (0x109B8, 'X'), + (0x109BC, 'V'), + (0x109D0, 'X'), + (0x109D2, 'V'), + (0x10A04, 'X'), + (0x10A05, 'V'), + (0x10A07, 'X'), + (0x10A0C, 'V'), + (0x10A14, 'X'), + (0x10A15, 'V'), + (0x10A18, 'X'), + (0x10A19, 'V'), + (0x10A36, 'X'), + (0x10A38, 'V'), + (0x10A3B, 'X'), + (0x10A3F, 'V'), + (0x10A49, 'X'), + (0x10A50, 'V'), + (0x10A59, 'X'), + (0x10A60, 'V'), + (0x10AA0, 'X'), + (0x10AC0, 'V'), + (0x10AE7, 'X'), + (0x10AEB, 'V'), + (0x10AF7, 'X'), + (0x10B00, 'V'), + ] + +def _seg_56() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x10B36, 'X'), + (0x10B39, 'V'), + (0x10B56, 'X'), + (0x10B58, 'V'), + (0x10B73, 'X'), + (0x10B78, 'V'), + (0x10B92, 'X'), + (0x10B99, 'V'), + (0x10B9D, 'X'), + (0x10BA9, 'V'), + (0x10BB0, 'X'), + (0x10C00, 'V'), + (0x10C49, 'X'), + (0x10C80, 'M', '𐳀'), + (0x10C81, 'M', '𐳁'), + (0x10C82, 'M', '𐳂'), + (0x10C83, 'M', '𐳃'), + (0x10C84, 'M', '𐳄'), + (0x10C85, 'M', '𐳅'), + (0x10C86, 'M', '𐳆'), + (0x10C87, 'M', '𐳇'), + (0x10C88, 'M', '𐳈'), + (0x10C89, 'M', '𐳉'), + (0x10C8A, 'M', '𐳊'), + (0x10C8B, 'M', '𐳋'), + (0x10C8C, 'M', '𐳌'), + (0x10C8D, 'M', '𐳍'), + (0x10C8E, 'M', '𐳎'), + (0x10C8F, 'M', '𐳏'), + (0x10C90, 'M', '𐳐'), + (0x10C91, 'M', '𐳑'), + (0x10C92, 'M', '𐳒'), + (0x10C93, 'M', '𐳓'), + (0x10C94, 'M', '𐳔'), + (0x10C95, 'M', '𐳕'), + (0x10C96, 'M', '𐳖'), + (0x10C97, 'M', '𐳗'), + (0x10C98, 'M', '𐳘'), + (0x10C99, 'M', '𐳙'), + (0x10C9A, 'M', '𐳚'), + (0x10C9B, 'M', '𐳛'), + (0x10C9C, 'M', '𐳜'), + (0x10C9D, 'M', '𐳝'), + (0x10C9E, 'M', '𐳞'), + (0x10C9F, 'M', '𐳟'), + (0x10CA0, 'M', '𐳠'), + (0x10CA1, 'M', '𐳡'), + (0x10CA2, 'M', '𐳢'), + (0x10CA3, 'M', '𐳣'), + (0x10CA4, 'M', '𐳤'), + (0x10CA5, 'M', '𐳥'), + (0x10CA6, 'M', '𐳦'), + (0x10CA7, 'M', '𐳧'), + (0x10CA8, 'M', '𐳨'), + (0x10CA9, 'M', '𐳩'), + (0x10CAA, 'M', '𐳪'), + (0x10CAB, 'M', '𐳫'), + (0x10CAC, 'M', '𐳬'), + (0x10CAD, 'M', '𐳭'), + (0x10CAE, 'M', '𐳮'), + (0x10CAF, 'M', '𐳯'), + (0x10CB0, 'M', '𐳰'), + (0x10CB1, 'M', '𐳱'), + (0x10CB2, 'M', '𐳲'), + (0x10CB3, 'X'), + (0x10CC0, 'V'), + (0x10CF3, 'X'), + (0x10CFA, 'V'), + (0x10D28, 'X'), + (0x10D30, 'V'), + (0x10D3A, 'X'), + (0x10E60, 'V'), + (0x10E7F, 'X'), + (0x10E80, 'V'), + (0x10EAA, 'X'), + (0x10EAB, 'V'), + (0x10EAE, 'X'), + (0x10EB0, 'V'), + (0x10EB2, 'X'), + (0x10EFD, 'V'), + (0x10F28, 'X'), + (0x10F30, 'V'), + (0x10F5A, 'X'), + (0x10F70, 'V'), + (0x10F8A, 'X'), + (0x10FB0, 'V'), + (0x10FCC, 'X'), + (0x10FE0, 'V'), + (0x10FF7, 'X'), + (0x11000, 'V'), + (0x1104E, 'X'), + (0x11052, 'V'), + (0x11076, 'X'), + (0x1107F, 'V'), + (0x110BD, 'X'), + (0x110BE, 'V'), + (0x110C3, 'X'), + (0x110D0, 'V'), + (0x110E9, 'X'), + (0x110F0, 'V'), + ] + +def _seg_57() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x110FA, 'X'), + (0x11100, 'V'), + (0x11135, 'X'), + (0x11136, 'V'), + (0x11148, 'X'), + (0x11150, 'V'), + (0x11177, 'X'), + (0x11180, 'V'), + (0x111E0, 'X'), + (0x111E1, 'V'), + (0x111F5, 'X'), + (0x11200, 'V'), + (0x11212, 'X'), + (0x11213, 'V'), + (0x11242, 'X'), + (0x11280, 'V'), + (0x11287, 'X'), + (0x11288, 'V'), + (0x11289, 'X'), + (0x1128A, 'V'), + (0x1128E, 'X'), + (0x1128F, 'V'), + (0x1129E, 'X'), + (0x1129F, 'V'), + (0x112AA, 'X'), + (0x112B0, 'V'), + (0x112EB, 'X'), + (0x112F0, 'V'), + (0x112FA, 'X'), + (0x11300, 'V'), + (0x11304, 'X'), + (0x11305, 'V'), + (0x1130D, 'X'), + (0x1130F, 'V'), + (0x11311, 'X'), + (0x11313, 'V'), + (0x11329, 'X'), + (0x1132A, 'V'), + (0x11331, 'X'), + (0x11332, 'V'), + (0x11334, 'X'), + (0x11335, 'V'), + (0x1133A, 'X'), + (0x1133B, 'V'), + (0x11345, 'X'), + (0x11347, 'V'), + (0x11349, 'X'), + (0x1134B, 'V'), + (0x1134E, 'X'), + (0x11350, 'V'), + (0x11351, 'X'), + (0x11357, 'V'), + (0x11358, 'X'), + (0x1135D, 'V'), + (0x11364, 'X'), + (0x11366, 'V'), + (0x1136D, 'X'), + (0x11370, 'V'), + (0x11375, 'X'), + (0x11400, 'V'), + (0x1145C, 'X'), + (0x1145D, 'V'), + (0x11462, 'X'), + (0x11480, 'V'), + (0x114C8, 'X'), + (0x114D0, 'V'), + (0x114DA, 'X'), + (0x11580, 'V'), + (0x115B6, 'X'), + (0x115B8, 'V'), + (0x115DE, 'X'), + (0x11600, 'V'), + (0x11645, 'X'), + (0x11650, 'V'), + (0x1165A, 'X'), + (0x11660, 'V'), + (0x1166D, 'X'), + (0x11680, 'V'), + (0x116BA, 'X'), + (0x116C0, 'V'), + (0x116CA, 'X'), + (0x11700, 'V'), + (0x1171B, 'X'), + (0x1171D, 'V'), + (0x1172C, 'X'), + (0x11730, 'V'), + (0x11747, 'X'), + (0x11800, 'V'), + (0x1183C, 'X'), + (0x118A0, 'M', '𑣀'), + (0x118A1, 'M', '𑣁'), + (0x118A2, 'M', '𑣂'), + (0x118A3, 'M', '𑣃'), + (0x118A4, 'M', '𑣄'), + (0x118A5, 'M', '𑣅'), + (0x118A6, 'M', '𑣆'), + (0x118A7, 'M', '𑣇'), + (0x118A8, 'M', '𑣈'), + (0x118A9, 'M', '𑣉'), + (0x118AA, 'M', '𑣊'), + ] + +def _seg_58() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x118AB, 'M', '𑣋'), + (0x118AC, 'M', '𑣌'), + (0x118AD, 'M', '𑣍'), + (0x118AE, 'M', '𑣎'), + (0x118AF, 'M', '𑣏'), + (0x118B0, 'M', '𑣐'), + (0x118B1, 'M', '𑣑'), + (0x118B2, 'M', '𑣒'), + (0x118B3, 'M', '𑣓'), + (0x118B4, 'M', '𑣔'), + (0x118B5, 'M', '𑣕'), + (0x118B6, 'M', '𑣖'), + (0x118B7, 'M', '𑣗'), + (0x118B8, 'M', '𑣘'), + (0x118B9, 'M', '𑣙'), + (0x118BA, 'M', '𑣚'), + (0x118BB, 'M', '𑣛'), + (0x118BC, 'M', '𑣜'), + (0x118BD, 'M', '𑣝'), + (0x118BE, 'M', '𑣞'), + (0x118BF, 'M', '𑣟'), + (0x118C0, 'V'), + (0x118F3, 'X'), + (0x118FF, 'V'), + (0x11907, 'X'), + (0x11909, 'V'), + (0x1190A, 'X'), + (0x1190C, 'V'), + (0x11914, 'X'), + (0x11915, 'V'), + (0x11917, 'X'), + (0x11918, 'V'), + (0x11936, 'X'), + (0x11937, 'V'), + (0x11939, 'X'), + (0x1193B, 'V'), + (0x11947, 'X'), + (0x11950, 'V'), + (0x1195A, 'X'), + (0x119A0, 'V'), + (0x119A8, 'X'), + (0x119AA, 'V'), + (0x119D8, 'X'), + (0x119DA, 'V'), + (0x119E5, 'X'), + (0x11A00, 'V'), + (0x11A48, 'X'), + (0x11A50, 'V'), + (0x11AA3, 'X'), + (0x11AB0, 'V'), + (0x11AF9, 'X'), + (0x11B00, 'V'), + (0x11B0A, 'X'), + (0x11C00, 'V'), + (0x11C09, 'X'), + (0x11C0A, 'V'), + (0x11C37, 'X'), + (0x11C38, 'V'), + (0x11C46, 'X'), + (0x11C50, 'V'), + (0x11C6D, 'X'), + (0x11C70, 'V'), + (0x11C90, 'X'), + (0x11C92, 'V'), + (0x11CA8, 'X'), + (0x11CA9, 'V'), + (0x11CB7, 'X'), + (0x11D00, 'V'), + (0x11D07, 'X'), + (0x11D08, 'V'), + (0x11D0A, 'X'), + (0x11D0B, 'V'), + (0x11D37, 'X'), + (0x11D3A, 'V'), + (0x11D3B, 'X'), + (0x11D3C, 'V'), + (0x11D3E, 'X'), + (0x11D3F, 'V'), + (0x11D48, 'X'), + (0x11D50, 'V'), + (0x11D5A, 'X'), + (0x11D60, 'V'), + (0x11D66, 'X'), + (0x11D67, 'V'), + (0x11D69, 'X'), + (0x11D6A, 'V'), + (0x11D8F, 'X'), + (0x11D90, 'V'), + (0x11D92, 'X'), + (0x11D93, 'V'), + (0x11D99, 'X'), + (0x11DA0, 'V'), + (0x11DAA, 'X'), + (0x11EE0, 'V'), + (0x11EF9, 'X'), + (0x11F00, 'V'), + (0x11F11, 'X'), + (0x11F12, 'V'), + (0x11F3B, 'X'), + (0x11F3E, 'V'), + ] + +def _seg_59() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x11F5A, 'X'), + (0x11FB0, 'V'), + (0x11FB1, 'X'), + (0x11FC0, 'V'), + (0x11FF2, 'X'), + (0x11FFF, 'V'), + (0x1239A, 'X'), + (0x12400, 'V'), + (0x1246F, 'X'), + (0x12470, 'V'), + (0x12475, 'X'), + (0x12480, 'V'), + (0x12544, 'X'), + (0x12F90, 'V'), + (0x12FF3, 'X'), + (0x13000, 'V'), + (0x13430, 'X'), + (0x13440, 'V'), + (0x13456, 'X'), + (0x14400, 'V'), + (0x14647, 'X'), + (0x16800, 'V'), + (0x16A39, 'X'), + (0x16A40, 'V'), + (0x16A5F, 'X'), + (0x16A60, 'V'), + (0x16A6A, 'X'), + (0x16A6E, 'V'), + (0x16ABF, 'X'), + (0x16AC0, 'V'), + (0x16ACA, 'X'), + (0x16AD0, 'V'), + (0x16AEE, 'X'), + (0x16AF0, 'V'), + (0x16AF6, 'X'), + (0x16B00, 'V'), + (0x16B46, 'X'), + (0x16B50, 'V'), + (0x16B5A, 'X'), + (0x16B5B, 'V'), + (0x16B62, 'X'), + (0x16B63, 'V'), + (0x16B78, 'X'), + (0x16B7D, 'V'), + (0x16B90, 'X'), + (0x16E40, 'M', '𖹠'), + (0x16E41, 'M', '𖹡'), + (0x16E42, 'M', '𖹢'), + (0x16E43, 'M', '𖹣'), + (0x16E44, 'M', '𖹤'), + (0x16E45, 'M', '𖹥'), + (0x16E46, 'M', '𖹦'), + (0x16E47, 'M', '𖹧'), + (0x16E48, 'M', '𖹨'), + (0x16E49, 'M', '𖹩'), + (0x16E4A, 'M', '𖹪'), + (0x16E4B, 'M', '𖹫'), + (0x16E4C, 'M', '𖹬'), + (0x16E4D, 'M', '𖹭'), + (0x16E4E, 'M', '𖹮'), + (0x16E4F, 'M', '𖹯'), + (0x16E50, 'M', '𖹰'), + (0x16E51, 'M', '𖹱'), + (0x16E52, 'M', '𖹲'), + (0x16E53, 'M', '𖹳'), + (0x16E54, 'M', '𖹴'), + (0x16E55, 'M', '𖹵'), + (0x16E56, 'M', '𖹶'), + (0x16E57, 'M', '𖹷'), + (0x16E58, 'M', '𖹸'), + (0x16E59, 'M', '𖹹'), + (0x16E5A, 'M', '𖹺'), + (0x16E5B, 'M', '𖹻'), + (0x16E5C, 'M', '𖹼'), + (0x16E5D, 'M', '𖹽'), + (0x16E5E, 'M', '𖹾'), + (0x16E5F, 'M', '𖹿'), + (0x16E60, 'V'), + (0x16E9B, 'X'), + (0x16F00, 'V'), + (0x16F4B, 'X'), + (0x16F4F, 'V'), + (0x16F88, 'X'), + (0x16F8F, 'V'), + (0x16FA0, 'X'), + (0x16FE0, 'V'), + (0x16FE5, 'X'), + (0x16FF0, 'V'), + (0x16FF2, 'X'), + (0x17000, 'V'), + (0x187F8, 'X'), + (0x18800, 'V'), + (0x18CD6, 'X'), + (0x18D00, 'V'), + (0x18D09, 'X'), + (0x1AFF0, 'V'), + (0x1AFF4, 'X'), + (0x1AFF5, 'V'), + (0x1AFFC, 'X'), + (0x1AFFD, 'V'), + ] + +def _seg_60() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1AFFF, 'X'), + (0x1B000, 'V'), + (0x1B123, 'X'), + (0x1B132, 'V'), + (0x1B133, 'X'), + (0x1B150, 'V'), + (0x1B153, 'X'), + (0x1B155, 'V'), + (0x1B156, 'X'), + (0x1B164, 'V'), + (0x1B168, 'X'), + (0x1B170, 'V'), + (0x1B2FC, 'X'), + (0x1BC00, 'V'), + (0x1BC6B, 'X'), + (0x1BC70, 'V'), + (0x1BC7D, 'X'), + (0x1BC80, 'V'), + (0x1BC89, 'X'), + (0x1BC90, 'V'), + (0x1BC9A, 'X'), + (0x1BC9C, 'V'), + (0x1BCA0, 'I'), + (0x1BCA4, 'X'), + (0x1CF00, 'V'), + (0x1CF2E, 'X'), + (0x1CF30, 'V'), + (0x1CF47, 'X'), + (0x1CF50, 'V'), + (0x1CFC4, 'X'), + (0x1D000, 'V'), + (0x1D0F6, 'X'), + (0x1D100, 'V'), + (0x1D127, 'X'), + (0x1D129, 'V'), + (0x1D15E, 'M', '𝅗𝅥'), + (0x1D15F, 'M', '𝅘𝅥'), + (0x1D160, 'M', '𝅘𝅥𝅮'), + (0x1D161, 'M', '𝅘𝅥𝅯'), + (0x1D162, 'M', '𝅘𝅥𝅰'), + (0x1D163, 'M', '𝅘𝅥𝅱'), + (0x1D164, 'M', '𝅘𝅥𝅲'), + (0x1D165, 'V'), + (0x1D173, 'X'), + (0x1D17B, 'V'), + (0x1D1BB, 'M', '𝆹𝅥'), + (0x1D1BC, 'M', '𝆺𝅥'), + (0x1D1BD, 'M', '𝆹𝅥𝅮'), + (0x1D1BE, 'M', '𝆺𝅥𝅮'), + (0x1D1BF, 'M', '𝆹𝅥𝅯'), + (0x1D1C0, 'M', '𝆺𝅥𝅯'), + (0x1D1C1, 'V'), + (0x1D1EB, 'X'), + (0x1D200, 'V'), + (0x1D246, 'X'), + (0x1D2C0, 'V'), + (0x1D2D4, 'X'), + (0x1D2E0, 'V'), + (0x1D2F4, 'X'), + (0x1D300, 'V'), + (0x1D357, 'X'), + (0x1D360, 'V'), + (0x1D379, 'X'), + (0x1D400, 'M', 'a'), + (0x1D401, 'M', 'b'), + (0x1D402, 'M', 'c'), + (0x1D403, 'M', 'd'), + (0x1D404, 'M', 'e'), + (0x1D405, 'M', 'f'), + (0x1D406, 'M', 'g'), + (0x1D407, 'M', 'h'), + (0x1D408, 'M', 'i'), + (0x1D409, 'M', 'j'), + (0x1D40A, 'M', 'k'), + (0x1D40B, 'M', 'l'), + (0x1D40C, 'M', 'm'), + (0x1D40D, 'M', 'n'), + (0x1D40E, 'M', 'o'), + (0x1D40F, 'M', 'p'), + (0x1D410, 'M', 'q'), + (0x1D411, 'M', 'r'), + (0x1D412, 'M', 's'), + (0x1D413, 'M', 't'), + (0x1D414, 'M', 'u'), + (0x1D415, 'M', 'v'), + (0x1D416, 'M', 'w'), + (0x1D417, 'M', 'x'), + (0x1D418, 'M', 'y'), + (0x1D419, 'M', 'z'), + (0x1D41A, 'M', 'a'), + (0x1D41B, 'M', 'b'), + (0x1D41C, 'M', 'c'), + (0x1D41D, 'M', 'd'), + (0x1D41E, 'M', 'e'), + (0x1D41F, 'M', 'f'), + (0x1D420, 'M', 'g'), + (0x1D421, 'M', 'h'), + (0x1D422, 'M', 'i'), + (0x1D423, 'M', 'j'), + (0x1D424, 'M', 'k'), + ] + +def _seg_61() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D425, 'M', 'l'), + (0x1D426, 'M', 'm'), + (0x1D427, 'M', 'n'), + (0x1D428, 'M', 'o'), + (0x1D429, 'M', 'p'), + (0x1D42A, 'M', 'q'), + (0x1D42B, 'M', 'r'), + (0x1D42C, 'M', 's'), + (0x1D42D, 'M', 't'), + (0x1D42E, 'M', 'u'), + (0x1D42F, 'M', 'v'), + (0x1D430, 'M', 'w'), + (0x1D431, 'M', 'x'), + (0x1D432, 'M', 'y'), + (0x1D433, 'M', 'z'), + (0x1D434, 'M', 'a'), + (0x1D435, 'M', 'b'), + (0x1D436, 'M', 'c'), + (0x1D437, 'M', 'd'), + (0x1D438, 'M', 'e'), + (0x1D439, 'M', 'f'), + (0x1D43A, 'M', 'g'), + (0x1D43B, 'M', 'h'), + (0x1D43C, 'M', 'i'), + (0x1D43D, 'M', 'j'), + (0x1D43E, 'M', 'k'), + (0x1D43F, 'M', 'l'), + (0x1D440, 'M', 'm'), + (0x1D441, 'M', 'n'), + (0x1D442, 'M', 'o'), + (0x1D443, 'M', 'p'), + (0x1D444, 'M', 'q'), + (0x1D445, 'M', 'r'), + (0x1D446, 'M', 's'), + (0x1D447, 'M', 't'), + (0x1D448, 'M', 'u'), + (0x1D449, 'M', 'v'), + (0x1D44A, 'M', 'w'), + (0x1D44B, 'M', 'x'), + (0x1D44C, 'M', 'y'), + (0x1D44D, 'M', 'z'), + (0x1D44E, 'M', 'a'), + (0x1D44F, 'M', 'b'), + (0x1D450, 'M', 'c'), + (0x1D451, 'M', 'd'), + (0x1D452, 'M', 'e'), + (0x1D453, 'M', 'f'), + (0x1D454, 'M', 'g'), + (0x1D455, 'X'), + (0x1D456, 'M', 'i'), + (0x1D457, 'M', 'j'), + (0x1D458, 'M', 'k'), + (0x1D459, 'M', 'l'), + (0x1D45A, 'M', 'm'), + (0x1D45B, 'M', 'n'), + (0x1D45C, 'M', 'o'), + (0x1D45D, 'M', 'p'), + (0x1D45E, 'M', 'q'), + (0x1D45F, 'M', 'r'), + (0x1D460, 'M', 's'), + (0x1D461, 'M', 't'), + (0x1D462, 'M', 'u'), + (0x1D463, 'M', 'v'), + (0x1D464, 'M', 'w'), + (0x1D465, 'M', 'x'), + (0x1D466, 'M', 'y'), + (0x1D467, 'M', 'z'), + (0x1D468, 'M', 'a'), + (0x1D469, 'M', 'b'), + (0x1D46A, 'M', 'c'), + (0x1D46B, 'M', 'd'), + (0x1D46C, 'M', 'e'), + (0x1D46D, 'M', 'f'), + (0x1D46E, 'M', 'g'), + (0x1D46F, 'M', 'h'), + (0x1D470, 'M', 'i'), + (0x1D471, 'M', 'j'), + (0x1D472, 'M', 'k'), + (0x1D473, 'M', 'l'), + (0x1D474, 'M', 'm'), + (0x1D475, 'M', 'n'), + (0x1D476, 'M', 'o'), + (0x1D477, 'M', 'p'), + (0x1D478, 'M', 'q'), + (0x1D479, 'M', 'r'), + (0x1D47A, 'M', 's'), + (0x1D47B, 'M', 't'), + (0x1D47C, 'M', 'u'), + (0x1D47D, 'M', 'v'), + (0x1D47E, 'M', 'w'), + (0x1D47F, 'M', 'x'), + (0x1D480, 'M', 'y'), + (0x1D481, 'M', 'z'), + (0x1D482, 'M', 'a'), + (0x1D483, 'M', 'b'), + (0x1D484, 'M', 'c'), + (0x1D485, 'M', 'd'), + (0x1D486, 'M', 'e'), + (0x1D487, 'M', 'f'), + (0x1D488, 'M', 'g'), + ] + +def _seg_62() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D489, 'M', 'h'), + (0x1D48A, 'M', 'i'), + (0x1D48B, 'M', 'j'), + (0x1D48C, 'M', 'k'), + (0x1D48D, 'M', 'l'), + (0x1D48E, 'M', 'm'), + (0x1D48F, 'M', 'n'), + (0x1D490, 'M', 'o'), + (0x1D491, 'M', 'p'), + (0x1D492, 'M', 'q'), + (0x1D493, 'M', 'r'), + (0x1D494, 'M', 's'), + (0x1D495, 'M', 't'), + (0x1D496, 'M', 'u'), + (0x1D497, 'M', 'v'), + (0x1D498, 'M', 'w'), + (0x1D499, 'M', 'x'), + (0x1D49A, 'M', 'y'), + (0x1D49B, 'M', 'z'), + (0x1D49C, 'M', 'a'), + (0x1D49D, 'X'), + (0x1D49E, 'M', 'c'), + (0x1D49F, 'M', 'd'), + (0x1D4A0, 'X'), + (0x1D4A2, 'M', 'g'), + (0x1D4A3, 'X'), + (0x1D4A5, 'M', 'j'), + (0x1D4A6, 'M', 'k'), + (0x1D4A7, 'X'), + (0x1D4A9, 'M', 'n'), + (0x1D4AA, 'M', 'o'), + (0x1D4AB, 'M', 'p'), + (0x1D4AC, 'M', 'q'), + (0x1D4AD, 'X'), + (0x1D4AE, 'M', 's'), + (0x1D4AF, 'M', 't'), + (0x1D4B0, 'M', 'u'), + (0x1D4B1, 'M', 'v'), + (0x1D4B2, 'M', 'w'), + (0x1D4B3, 'M', 'x'), + (0x1D4B4, 'M', 'y'), + (0x1D4B5, 'M', 'z'), + (0x1D4B6, 'M', 'a'), + (0x1D4B7, 'M', 'b'), + (0x1D4B8, 'M', 'c'), + (0x1D4B9, 'M', 'd'), + (0x1D4BA, 'X'), + (0x1D4BB, 'M', 'f'), + (0x1D4BC, 'X'), + (0x1D4BD, 'M', 'h'), + (0x1D4BE, 'M', 'i'), + (0x1D4BF, 'M', 'j'), + (0x1D4C0, 'M', 'k'), + (0x1D4C1, 'M', 'l'), + (0x1D4C2, 'M', 'm'), + (0x1D4C3, 'M', 'n'), + (0x1D4C4, 'X'), + (0x1D4C5, 'M', 'p'), + (0x1D4C6, 'M', 'q'), + (0x1D4C7, 'M', 'r'), + (0x1D4C8, 'M', 's'), + (0x1D4C9, 'M', 't'), + (0x1D4CA, 'M', 'u'), + (0x1D4CB, 'M', 'v'), + (0x1D4CC, 'M', 'w'), + (0x1D4CD, 'M', 'x'), + (0x1D4CE, 'M', 'y'), + (0x1D4CF, 'M', 'z'), + (0x1D4D0, 'M', 'a'), + (0x1D4D1, 'M', 'b'), + (0x1D4D2, 'M', 'c'), + (0x1D4D3, 'M', 'd'), + (0x1D4D4, 'M', 'e'), + (0x1D4D5, 'M', 'f'), + (0x1D4D6, 'M', 'g'), + (0x1D4D7, 'M', 'h'), + (0x1D4D8, 'M', 'i'), + (0x1D4D9, 'M', 'j'), + (0x1D4DA, 'M', 'k'), + (0x1D4DB, 'M', 'l'), + (0x1D4DC, 'M', 'm'), + (0x1D4DD, 'M', 'n'), + (0x1D4DE, 'M', 'o'), + (0x1D4DF, 'M', 'p'), + (0x1D4E0, 'M', 'q'), + (0x1D4E1, 'M', 'r'), + (0x1D4E2, 'M', 's'), + (0x1D4E3, 'M', 't'), + (0x1D4E4, 'M', 'u'), + (0x1D4E5, 'M', 'v'), + (0x1D4E6, 'M', 'w'), + (0x1D4E7, 'M', 'x'), + (0x1D4E8, 'M', 'y'), + (0x1D4E9, 'M', 'z'), + (0x1D4EA, 'M', 'a'), + (0x1D4EB, 'M', 'b'), + (0x1D4EC, 'M', 'c'), + (0x1D4ED, 'M', 'd'), + (0x1D4EE, 'M', 'e'), + (0x1D4EF, 'M', 'f'), + ] + +def _seg_63() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D4F0, 'M', 'g'), + (0x1D4F1, 'M', 'h'), + (0x1D4F2, 'M', 'i'), + (0x1D4F3, 'M', 'j'), + (0x1D4F4, 'M', 'k'), + (0x1D4F5, 'M', 'l'), + (0x1D4F6, 'M', 'm'), + (0x1D4F7, 'M', 'n'), + (0x1D4F8, 'M', 'o'), + (0x1D4F9, 'M', 'p'), + (0x1D4FA, 'M', 'q'), + (0x1D4FB, 'M', 'r'), + (0x1D4FC, 'M', 's'), + (0x1D4FD, 'M', 't'), + (0x1D4FE, 'M', 'u'), + (0x1D4FF, 'M', 'v'), + (0x1D500, 'M', 'w'), + (0x1D501, 'M', 'x'), + (0x1D502, 'M', 'y'), + (0x1D503, 'M', 'z'), + (0x1D504, 'M', 'a'), + (0x1D505, 'M', 'b'), + (0x1D506, 'X'), + (0x1D507, 'M', 'd'), + (0x1D508, 'M', 'e'), + (0x1D509, 'M', 'f'), + (0x1D50A, 'M', 'g'), + (0x1D50B, 'X'), + (0x1D50D, 'M', 'j'), + (0x1D50E, 'M', 'k'), + (0x1D50F, 'M', 'l'), + (0x1D510, 'M', 'm'), + (0x1D511, 'M', 'n'), + (0x1D512, 'M', 'o'), + (0x1D513, 'M', 'p'), + (0x1D514, 'M', 'q'), + (0x1D515, 'X'), + (0x1D516, 'M', 's'), + (0x1D517, 'M', 't'), + (0x1D518, 'M', 'u'), + (0x1D519, 'M', 'v'), + (0x1D51A, 'M', 'w'), + (0x1D51B, 'M', 'x'), + (0x1D51C, 'M', 'y'), + (0x1D51D, 'X'), + (0x1D51E, 'M', 'a'), + (0x1D51F, 'M', 'b'), + (0x1D520, 'M', 'c'), + (0x1D521, 'M', 'd'), + (0x1D522, 'M', 'e'), + (0x1D523, 'M', 'f'), + (0x1D524, 'M', 'g'), + (0x1D525, 'M', 'h'), + (0x1D526, 'M', 'i'), + (0x1D527, 'M', 'j'), + (0x1D528, 'M', 'k'), + (0x1D529, 'M', 'l'), + (0x1D52A, 'M', 'm'), + (0x1D52B, 'M', 'n'), + (0x1D52C, 'M', 'o'), + (0x1D52D, 'M', 'p'), + (0x1D52E, 'M', 'q'), + (0x1D52F, 'M', 'r'), + (0x1D530, 'M', 's'), + (0x1D531, 'M', 't'), + (0x1D532, 'M', 'u'), + (0x1D533, 'M', 'v'), + (0x1D534, 'M', 'w'), + (0x1D535, 'M', 'x'), + (0x1D536, 'M', 'y'), + (0x1D537, 'M', 'z'), + (0x1D538, 'M', 'a'), + (0x1D539, 'M', 'b'), + (0x1D53A, 'X'), + (0x1D53B, 'M', 'd'), + (0x1D53C, 'M', 'e'), + (0x1D53D, 'M', 'f'), + (0x1D53E, 'M', 'g'), + (0x1D53F, 'X'), + (0x1D540, 'M', 'i'), + (0x1D541, 'M', 'j'), + (0x1D542, 'M', 'k'), + (0x1D543, 'M', 'l'), + (0x1D544, 'M', 'm'), + (0x1D545, 'X'), + (0x1D546, 'M', 'o'), + (0x1D547, 'X'), + (0x1D54A, 'M', 's'), + (0x1D54B, 'M', 't'), + (0x1D54C, 'M', 'u'), + (0x1D54D, 'M', 'v'), + (0x1D54E, 'M', 'w'), + (0x1D54F, 'M', 'x'), + (0x1D550, 'M', 'y'), + (0x1D551, 'X'), + (0x1D552, 'M', 'a'), + (0x1D553, 'M', 'b'), + (0x1D554, 'M', 'c'), + (0x1D555, 'M', 'd'), + (0x1D556, 'M', 'e'), + ] + +def _seg_64() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D557, 'M', 'f'), + (0x1D558, 'M', 'g'), + (0x1D559, 'M', 'h'), + (0x1D55A, 'M', 'i'), + (0x1D55B, 'M', 'j'), + (0x1D55C, 'M', 'k'), + (0x1D55D, 'M', 'l'), + (0x1D55E, 'M', 'm'), + (0x1D55F, 'M', 'n'), + (0x1D560, 'M', 'o'), + (0x1D561, 'M', 'p'), + (0x1D562, 'M', 'q'), + (0x1D563, 'M', 'r'), + (0x1D564, 'M', 's'), + (0x1D565, 'M', 't'), + (0x1D566, 'M', 'u'), + (0x1D567, 'M', 'v'), + (0x1D568, 'M', 'w'), + (0x1D569, 'M', 'x'), + (0x1D56A, 'M', 'y'), + (0x1D56B, 'M', 'z'), + (0x1D56C, 'M', 'a'), + (0x1D56D, 'M', 'b'), + (0x1D56E, 'M', 'c'), + (0x1D56F, 'M', 'd'), + (0x1D570, 'M', 'e'), + (0x1D571, 'M', 'f'), + (0x1D572, 'M', 'g'), + (0x1D573, 'M', 'h'), + (0x1D574, 'M', 'i'), + (0x1D575, 'M', 'j'), + (0x1D576, 'M', 'k'), + (0x1D577, 'M', 'l'), + (0x1D578, 'M', 'm'), + (0x1D579, 'M', 'n'), + (0x1D57A, 'M', 'o'), + (0x1D57B, 'M', 'p'), + (0x1D57C, 'M', 'q'), + (0x1D57D, 'M', 'r'), + (0x1D57E, 'M', 's'), + (0x1D57F, 'M', 't'), + (0x1D580, 'M', 'u'), + (0x1D581, 'M', 'v'), + (0x1D582, 'M', 'w'), + (0x1D583, 'M', 'x'), + (0x1D584, 'M', 'y'), + (0x1D585, 'M', 'z'), + (0x1D586, 'M', 'a'), + (0x1D587, 'M', 'b'), + (0x1D588, 'M', 'c'), + (0x1D589, 'M', 'd'), + (0x1D58A, 'M', 'e'), + (0x1D58B, 'M', 'f'), + (0x1D58C, 'M', 'g'), + (0x1D58D, 'M', 'h'), + (0x1D58E, 'M', 'i'), + (0x1D58F, 'M', 'j'), + (0x1D590, 'M', 'k'), + (0x1D591, 'M', 'l'), + (0x1D592, 'M', 'm'), + (0x1D593, 'M', 'n'), + (0x1D594, 'M', 'o'), + (0x1D595, 'M', 'p'), + (0x1D596, 'M', 'q'), + (0x1D597, 'M', 'r'), + (0x1D598, 'M', 's'), + (0x1D599, 'M', 't'), + (0x1D59A, 'M', 'u'), + (0x1D59B, 'M', 'v'), + (0x1D59C, 'M', 'w'), + (0x1D59D, 'M', 'x'), + (0x1D59E, 'M', 'y'), + (0x1D59F, 'M', 'z'), + (0x1D5A0, 'M', 'a'), + (0x1D5A1, 'M', 'b'), + (0x1D5A2, 'M', 'c'), + (0x1D5A3, 'M', 'd'), + (0x1D5A4, 'M', 'e'), + (0x1D5A5, 'M', 'f'), + (0x1D5A6, 'M', 'g'), + (0x1D5A7, 'M', 'h'), + (0x1D5A8, 'M', 'i'), + (0x1D5A9, 'M', 'j'), + (0x1D5AA, 'M', 'k'), + (0x1D5AB, 'M', 'l'), + (0x1D5AC, 'M', 'm'), + (0x1D5AD, 'M', 'n'), + (0x1D5AE, 'M', 'o'), + (0x1D5AF, 'M', 'p'), + (0x1D5B0, 'M', 'q'), + (0x1D5B1, 'M', 'r'), + (0x1D5B2, 'M', 's'), + (0x1D5B3, 'M', 't'), + (0x1D5B4, 'M', 'u'), + (0x1D5B5, 'M', 'v'), + (0x1D5B6, 'M', 'w'), + (0x1D5B7, 'M', 'x'), + (0x1D5B8, 'M', 'y'), + (0x1D5B9, 'M', 'z'), + (0x1D5BA, 'M', 'a'), + ] + +def _seg_65() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D5BB, 'M', 'b'), + (0x1D5BC, 'M', 'c'), + (0x1D5BD, 'M', 'd'), + (0x1D5BE, 'M', 'e'), + (0x1D5BF, 'M', 'f'), + (0x1D5C0, 'M', 'g'), + (0x1D5C1, 'M', 'h'), + (0x1D5C2, 'M', 'i'), + (0x1D5C3, 'M', 'j'), + (0x1D5C4, 'M', 'k'), + (0x1D5C5, 'M', 'l'), + (0x1D5C6, 'M', 'm'), + (0x1D5C7, 'M', 'n'), + (0x1D5C8, 'M', 'o'), + (0x1D5C9, 'M', 'p'), + (0x1D5CA, 'M', 'q'), + (0x1D5CB, 'M', 'r'), + (0x1D5CC, 'M', 's'), + (0x1D5CD, 'M', 't'), + (0x1D5CE, 'M', 'u'), + (0x1D5CF, 'M', 'v'), + (0x1D5D0, 'M', 'w'), + (0x1D5D1, 'M', 'x'), + (0x1D5D2, 'M', 'y'), + (0x1D5D3, 'M', 'z'), + (0x1D5D4, 'M', 'a'), + (0x1D5D5, 'M', 'b'), + (0x1D5D6, 'M', 'c'), + (0x1D5D7, 'M', 'd'), + (0x1D5D8, 'M', 'e'), + (0x1D5D9, 'M', 'f'), + (0x1D5DA, 'M', 'g'), + (0x1D5DB, 'M', 'h'), + (0x1D5DC, 'M', 'i'), + (0x1D5DD, 'M', 'j'), + (0x1D5DE, 'M', 'k'), + (0x1D5DF, 'M', 'l'), + (0x1D5E0, 'M', 'm'), + (0x1D5E1, 'M', 'n'), + (0x1D5E2, 'M', 'o'), + (0x1D5E3, 'M', 'p'), + (0x1D5E4, 'M', 'q'), + (0x1D5E5, 'M', 'r'), + (0x1D5E6, 'M', 's'), + (0x1D5E7, 'M', 't'), + (0x1D5E8, 'M', 'u'), + (0x1D5E9, 'M', 'v'), + (0x1D5EA, 'M', 'w'), + (0x1D5EB, 'M', 'x'), + (0x1D5EC, 'M', 'y'), + (0x1D5ED, 'M', 'z'), + (0x1D5EE, 'M', 'a'), + (0x1D5EF, 'M', 'b'), + (0x1D5F0, 'M', 'c'), + (0x1D5F1, 'M', 'd'), + (0x1D5F2, 'M', 'e'), + (0x1D5F3, 'M', 'f'), + (0x1D5F4, 'M', 'g'), + (0x1D5F5, 'M', 'h'), + (0x1D5F6, 'M', 'i'), + (0x1D5F7, 'M', 'j'), + (0x1D5F8, 'M', 'k'), + (0x1D5F9, 'M', 'l'), + (0x1D5FA, 'M', 'm'), + (0x1D5FB, 'M', 'n'), + (0x1D5FC, 'M', 'o'), + (0x1D5FD, 'M', 'p'), + (0x1D5FE, 'M', 'q'), + (0x1D5FF, 'M', 'r'), + (0x1D600, 'M', 's'), + (0x1D601, 'M', 't'), + (0x1D602, 'M', 'u'), + (0x1D603, 'M', 'v'), + (0x1D604, 'M', 'w'), + (0x1D605, 'M', 'x'), + (0x1D606, 'M', 'y'), + (0x1D607, 'M', 'z'), + (0x1D608, 'M', 'a'), + (0x1D609, 'M', 'b'), + (0x1D60A, 'M', 'c'), + (0x1D60B, 'M', 'd'), + (0x1D60C, 'M', 'e'), + (0x1D60D, 'M', 'f'), + (0x1D60E, 'M', 'g'), + (0x1D60F, 'M', 'h'), + (0x1D610, 'M', 'i'), + (0x1D611, 'M', 'j'), + (0x1D612, 'M', 'k'), + (0x1D613, 'M', 'l'), + (0x1D614, 'M', 'm'), + (0x1D615, 'M', 'n'), + (0x1D616, 'M', 'o'), + (0x1D617, 'M', 'p'), + (0x1D618, 'M', 'q'), + (0x1D619, 'M', 'r'), + (0x1D61A, 'M', 's'), + (0x1D61B, 'M', 't'), + (0x1D61C, 'M', 'u'), + (0x1D61D, 'M', 'v'), + (0x1D61E, 'M', 'w'), + ] + +def _seg_66() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D61F, 'M', 'x'), + (0x1D620, 'M', 'y'), + (0x1D621, 'M', 'z'), + (0x1D622, 'M', 'a'), + (0x1D623, 'M', 'b'), + (0x1D624, 'M', 'c'), + (0x1D625, 'M', 'd'), + (0x1D626, 'M', 'e'), + (0x1D627, 'M', 'f'), + (0x1D628, 'M', 'g'), + (0x1D629, 'M', 'h'), + (0x1D62A, 'M', 'i'), + (0x1D62B, 'M', 'j'), + (0x1D62C, 'M', 'k'), + (0x1D62D, 'M', 'l'), + (0x1D62E, 'M', 'm'), + (0x1D62F, 'M', 'n'), + (0x1D630, 'M', 'o'), + (0x1D631, 'M', 'p'), + (0x1D632, 'M', 'q'), + (0x1D633, 'M', 'r'), + (0x1D634, 'M', 's'), + (0x1D635, 'M', 't'), + (0x1D636, 'M', 'u'), + (0x1D637, 'M', 'v'), + (0x1D638, 'M', 'w'), + (0x1D639, 'M', 'x'), + (0x1D63A, 'M', 'y'), + (0x1D63B, 'M', 'z'), + (0x1D63C, 'M', 'a'), + (0x1D63D, 'M', 'b'), + (0x1D63E, 'M', 'c'), + (0x1D63F, 'M', 'd'), + (0x1D640, 'M', 'e'), + (0x1D641, 'M', 'f'), + (0x1D642, 'M', 'g'), + (0x1D643, 'M', 'h'), + (0x1D644, 'M', 'i'), + (0x1D645, 'M', 'j'), + (0x1D646, 'M', 'k'), + (0x1D647, 'M', 'l'), + (0x1D648, 'M', 'm'), + (0x1D649, 'M', 'n'), + (0x1D64A, 'M', 'o'), + (0x1D64B, 'M', 'p'), + (0x1D64C, 'M', 'q'), + (0x1D64D, 'M', 'r'), + (0x1D64E, 'M', 's'), + (0x1D64F, 'M', 't'), + (0x1D650, 'M', 'u'), + (0x1D651, 'M', 'v'), + (0x1D652, 'M', 'w'), + (0x1D653, 'M', 'x'), + (0x1D654, 'M', 'y'), + (0x1D655, 'M', 'z'), + (0x1D656, 'M', 'a'), + (0x1D657, 'M', 'b'), + (0x1D658, 'M', 'c'), + (0x1D659, 'M', 'd'), + (0x1D65A, 'M', 'e'), + (0x1D65B, 'M', 'f'), + (0x1D65C, 'M', 'g'), + (0x1D65D, 'M', 'h'), + (0x1D65E, 'M', 'i'), + (0x1D65F, 'M', 'j'), + (0x1D660, 'M', 'k'), + (0x1D661, 'M', 'l'), + (0x1D662, 'M', 'm'), + (0x1D663, 'M', 'n'), + (0x1D664, 'M', 'o'), + (0x1D665, 'M', 'p'), + (0x1D666, 'M', 'q'), + (0x1D667, 'M', 'r'), + (0x1D668, 'M', 's'), + (0x1D669, 'M', 't'), + (0x1D66A, 'M', 'u'), + (0x1D66B, 'M', 'v'), + (0x1D66C, 'M', 'w'), + (0x1D66D, 'M', 'x'), + (0x1D66E, 'M', 'y'), + (0x1D66F, 'M', 'z'), + (0x1D670, 'M', 'a'), + (0x1D671, 'M', 'b'), + (0x1D672, 'M', 'c'), + (0x1D673, 'M', 'd'), + (0x1D674, 'M', 'e'), + (0x1D675, 'M', 'f'), + (0x1D676, 'M', 'g'), + (0x1D677, 'M', 'h'), + (0x1D678, 'M', 'i'), + (0x1D679, 'M', 'j'), + (0x1D67A, 'M', 'k'), + (0x1D67B, 'M', 'l'), + (0x1D67C, 'M', 'm'), + (0x1D67D, 'M', 'n'), + (0x1D67E, 'M', 'o'), + (0x1D67F, 'M', 'p'), + (0x1D680, 'M', 'q'), + (0x1D681, 'M', 'r'), + (0x1D682, 'M', 's'), + ] + +def _seg_67() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D683, 'M', 't'), + (0x1D684, 'M', 'u'), + (0x1D685, 'M', 'v'), + (0x1D686, 'M', 'w'), + (0x1D687, 'M', 'x'), + (0x1D688, 'M', 'y'), + (0x1D689, 'M', 'z'), + (0x1D68A, 'M', 'a'), + (0x1D68B, 'M', 'b'), + (0x1D68C, 'M', 'c'), + (0x1D68D, 'M', 'd'), + (0x1D68E, 'M', 'e'), + (0x1D68F, 'M', 'f'), + (0x1D690, 'M', 'g'), + (0x1D691, 'M', 'h'), + (0x1D692, 'M', 'i'), + (0x1D693, 'M', 'j'), + (0x1D694, 'M', 'k'), + (0x1D695, 'M', 'l'), + (0x1D696, 'M', 'm'), + (0x1D697, 'M', 'n'), + (0x1D698, 'M', 'o'), + (0x1D699, 'M', 'p'), + (0x1D69A, 'M', 'q'), + (0x1D69B, 'M', 'r'), + (0x1D69C, 'M', 's'), + (0x1D69D, 'M', 't'), + (0x1D69E, 'M', 'u'), + (0x1D69F, 'M', 'v'), + (0x1D6A0, 'M', 'w'), + (0x1D6A1, 'M', 'x'), + (0x1D6A2, 'M', 'y'), + (0x1D6A3, 'M', 'z'), + (0x1D6A4, 'M', 'ı'), + (0x1D6A5, 'M', 'ȷ'), + (0x1D6A6, 'X'), + (0x1D6A8, 'M', 'α'), + (0x1D6A9, 'M', 'β'), + (0x1D6AA, 'M', 'γ'), + (0x1D6AB, 'M', 'δ'), + (0x1D6AC, 'M', 'ε'), + (0x1D6AD, 'M', 'ζ'), + (0x1D6AE, 'M', 'η'), + (0x1D6AF, 'M', 'θ'), + (0x1D6B0, 'M', 'ι'), + (0x1D6B1, 'M', 'κ'), + (0x1D6B2, 'M', 'λ'), + (0x1D6B3, 'M', 'μ'), + (0x1D6B4, 'M', 'ν'), + (0x1D6B5, 'M', 'ξ'), + (0x1D6B6, 'M', 'ο'), + (0x1D6B7, 'M', 'π'), + (0x1D6B8, 'M', 'ρ'), + (0x1D6B9, 'M', 'θ'), + (0x1D6BA, 'M', 'σ'), + (0x1D6BB, 'M', 'τ'), + (0x1D6BC, 'M', 'υ'), + (0x1D6BD, 'M', 'φ'), + (0x1D6BE, 'M', 'χ'), + (0x1D6BF, 'M', 'ψ'), + (0x1D6C0, 'M', 'ω'), + (0x1D6C1, 'M', '∇'), + (0x1D6C2, 'M', 'α'), + (0x1D6C3, 'M', 'β'), + (0x1D6C4, 'M', 'γ'), + (0x1D6C5, 'M', 'δ'), + (0x1D6C6, 'M', 'ε'), + (0x1D6C7, 'M', 'ζ'), + (0x1D6C8, 'M', 'η'), + (0x1D6C9, 'M', 'θ'), + (0x1D6CA, 'M', 'ι'), + (0x1D6CB, 'M', 'κ'), + (0x1D6CC, 'M', 'λ'), + (0x1D6CD, 'M', 'μ'), + (0x1D6CE, 'M', 'ν'), + (0x1D6CF, 'M', 'ξ'), + (0x1D6D0, 'M', 'ο'), + (0x1D6D1, 'M', 'π'), + (0x1D6D2, 'M', 'ρ'), + (0x1D6D3, 'M', 'σ'), + (0x1D6D5, 'M', 'τ'), + (0x1D6D6, 'M', 'υ'), + (0x1D6D7, 'M', 'φ'), + (0x1D6D8, 'M', 'χ'), + (0x1D6D9, 'M', 'ψ'), + (0x1D6DA, 'M', 'ω'), + (0x1D6DB, 'M', '∂'), + (0x1D6DC, 'M', 'ε'), + (0x1D6DD, 'M', 'θ'), + (0x1D6DE, 'M', 'κ'), + (0x1D6DF, 'M', 'φ'), + (0x1D6E0, 'M', 'ρ'), + (0x1D6E1, 'M', 'π'), + (0x1D6E2, 'M', 'α'), + (0x1D6E3, 'M', 'β'), + (0x1D6E4, 'M', 'γ'), + (0x1D6E5, 'M', 'δ'), + (0x1D6E6, 'M', 'ε'), + (0x1D6E7, 'M', 'ζ'), + (0x1D6E8, 'M', 'η'), + ] + +def _seg_68() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D6E9, 'M', 'θ'), + (0x1D6EA, 'M', 'ι'), + (0x1D6EB, 'M', 'κ'), + (0x1D6EC, 'M', 'λ'), + (0x1D6ED, 'M', 'μ'), + (0x1D6EE, 'M', 'ν'), + (0x1D6EF, 'M', 'ξ'), + (0x1D6F0, 'M', 'ο'), + (0x1D6F1, 'M', 'π'), + (0x1D6F2, 'M', 'ρ'), + (0x1D6F3, 'M', 'θ'), + (0x1D6F4, 'M', 'σ'), + (0x1D6F5, 'M', 'τ'), + (0x1D6F6, 'M', 'υ'), + (0x1D6F7, 'M', 'φ'), + (0x1D6F8, 'M', 'χ'), + (0x1D6F9, 'M', 'ψ'), + (0x1D6FA, 'M', 'ω'), + (0x1D6FB, 'M', '∇'), + (0x1D6FC, 'M', 'α'), + (0x1D6FD, 'M', 'β'), + (0x1D6FE, 'M', 'γ'), + (0x1D6FF, 'M', 'δ'), + (0x1D700, 'M', 'ε'), + (0x1D701, 'M', 'ζ'), + (0x1D702, 'M', 'η'), + (0x1D703, 'M', 'θ'), + (0x1D704, 'M', 'ι'), + (0x1D705, 'M', 'κ'), + (0x1D706, 'M', 'λ'), + (0x1D707, 'M', 'μ'), + (0x1D708, 'M', 'ν'), + (0x1D709, 'M', 'ξ'), + (0x1D70A, 'M', 'ο'), + (0x1D70B, 'M', 'π'), + (0x1D70C, 'M', 'ρ'), + (0x1D70D, 'M', 'σ'), + (0x1D70F, 'M', 'τ'), + (0x1D710, 'M', 'υ'), + (0x1D711, 'M', 'φ'), + (0x1D712, 'M', 'χ'), + (0x1D713, 'M', 'ψ'), + (0x1D714, 'M', 'ω'), + (0x1D715, 'M', '∂'), + (0x1D716, 'M', 'ε'), + (0x1D717, 'M', 'θ'), + (0x1D718, 'M', 'κ'), + (0x1D719, 'M', 'φ'), + (0x1D71A, 'M', 'ρ'), + (0x1D71B, 'M', 'π'), + (0x1D71C, 'M', 'α'), + (0x1D71D, 'M', 'β'), + (0x1D71E, 'M', 'γ'), + (0x1D71F, 'M', 'δ'), + (0x1D720, 'M', 'ε'), + (0x1D721, 'M', 'ζ'), + (0x1D722, 'M', 'η'), + (0x1D723, 'M', 'θ'), + (0x1D724, 'M', 'ι'), + (0x1D725, 'M', 'κ'), + (0x1D726, 'M', 'λ'), + (0x1D727, 'M', 'μ'), + (0x1D728, 'M', 'ν'), + (0x1D729, 'M', 'ξ'), + (0x1D72A, 'M', 'ο'), + (0x1D72B, 'M', 'π'), + (0x1D72C, 'M', 'ρ'), + (0x1D72D, 'M', 'θ'), + (0x1D72E, 'M', 'σ'), + (0x1D72F, 'M', 'τ'), + (0x1D730, 'M', 'υ'), + (0x1D731, 'M', 'φ'), + (0x1D732, 'M', 'χ'), + (0x1D733, 'M', 'ψ'), + (0x1D734, 'M', 'ω'), + (0x1D735, 'M', '∇'), + (0x1D736, 'M', 'α'), + (0x1D737, 'M', 'β'), + (0x1D738, 'M', 'γ'), + (0x1D739, 'M', 'δ'), + (0x1D73A, 'M', 'ε'), + (0x1D73B, 'M', 'ζ'), + (0x1D73C, 'M', 'η'), + (0x1D73D, 'M', 'θ'), + (0x1D73E, 'M', 'ι'), + (0x1D73F, 'M', 'κ'), + (0x1D740, 'M', 'λ'), + (0x1D741, 'M', 'μ'), + (0x1D742, 'M', 'ν'), + (0x1D743, 'M', 'ξ'), + (0x1D744, 'M', 'ο'), + (0x1D745, 'M', 'π'), + (0x1D746, 'M', 'ρ'), + (0x1D747, 'M', 'σ'), + (0x1D749, 'M', 'τ'), + (0x1D74A, 'M', 'υ'), + (0x1D74B, 'M', 'φ'), + (0x1D74C, 'M', 'χ'), + (0x1D74D, 'M', 'ψ'), + (0x1D74E, 'M', 'ω'), + ] + +def _seg_69() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D74F, 'M', '∂'), + (0x1D750, 'M', 'ε'), + (0x1D751, 'M', 'θ'), + (0x1D752, 'M', 'κ'), + (0x1D753, 'M', 'φ'), + (0x1D754, 'M', 'ρ'), + (0x1D755, 'M', 'π'), + (0x1D756, 'M', 'α'), + (0x1D757, 'M', 'β'), + (0x1D758, 'M', 'γ'), + (0x1D759, 'M', 'δ'), + (0x1D75A, 'M', 'ε'), + (0x1D75B, 'M', 'ζ'), + (0x1D75C, 'M', 'η'), + (0x1D75D, 'M', 'θ'), + (0x1D75E, 'M', 'ι'), + (0x1D75F, 'M', 'κ'), + (0x1D760, 'M', 'λ'), + (0x1D761, 'M', 'μ'), + (0x1D762, 'M', 'ν'), + (0x1D763, 'M', 'ξ'), + (0x1D764, 'M', 'ο'), + (0x1D765, 'M', 'π'), + (0x1D766, 'M', 'ρ'), + (0x1D767, 'M', 'θ'), + (0x1D768, 'M', 'σ'), + (0x1D769, 'M', 'τ'), + (0x1D76A, 'M', 'υ'), + (0x1D76B, 'M', 'φ'), + (0x1D76C, 'M', 'χ'), + (0x1D76D, 'M', 'ψ'), + (0x1D76E, 'M', 'ω'), + (0x1D76F, 'M', '∇'), + (0x1D770, 'M', 'α'), + (0x1D771, 'M', 'β'), + (0x1D772, 'M', 'γ'), + (0x1D773, 'M', 'δ'), + (0x1D774, 'M', 'ε'), + (0x1D775, 'M', 'ζ'), + (0x1D776, 'M', 'η'), + (0x1D777, 'M', 'θ'), + (0x1D778, 'M', 'ι'), + (0x1D779, 'M', 'κ'), + (0x1D77A, 'M', 'λ'), + (0x1D77B, 'M', 'μ'), + (0x1D77C, 'M', 'ν'), + (0x1D77D, 'M', 'ξ'), + (0x1D77E, 'M', 'ο'), + (0x1D77F, 'M', 'π'), + (0x1D780, 'M', 'ρ'), + (0x1D781, 'M', 'σ'), + (0x1D783, 'M', 'τ'), + (0x1D784, 'M', 'υ'), + (0x1D785, 'M', 'φ'), + (0x1D786, 'M', 'χ'), + (0x1D787, 'M', 'ψ'), + (0x1D788, 'M', 'ω'), + (0x1D789, 'M', '∂'), + (0x1D78A, 'M', 'ε'), + (0x1D78B, 'M', 'θ'), + (0x1D78C, 'M', 'κ'), + (0x1D78D, 'M', 'φ'), + (0x1D78E, 'M', 'ρ'), + (0x1D78F, 'M', 'π'), + (0x1D790, 'M', 'α'), + (0x1D791, 'M', 'β'), + (0x1D792, 'M', 'γ'), + (0x1D793, 'M', 'δ'), + (0x1D794, 'M', 'ε'), + (0x1D795, 'M', 'ζ'), + (0x1D796, 'M', 'η'), + (0x1D797, 'M', 'θ'), + (0x1D798, 'M', 'ι'), + (0x1D799, 'M', 'κ'), + (0x1D79A, 'M', 'λ'), + (0x1D79B, 'M', 'μ'), + (0x1D79C, 'M', 'ν'), + (0x1D79D, 'M', 'ξ'), + (0x1D79E, 'M', 'ο'), + (0x1D79F, 'M', 'π'), + (0x1D7A0, 'M', 'ρ'), + (0x1D7A1, 'M', 'θ'), + (0x1D7A2, 'M', 'σ'), + (0x1D7A3, 'M', 'τ'), + (0x1D7A4, 'M', 'υ'), + (0x1D7A5, 'M', 'φ'), + (0x1D7A6, 'M', 'χ'), + (0x1D7A7, 'M', 'ψ'), + (0x1D7A8, 'M', 'ω'), + (0x1D7A9, 'M', '∇'), + (0x1D7AA, 'M', 'α'), + (0x1D7AB, 'M', 'β'), + (0x1D7AC, 'M', 'γ'), + (0x1D7AD, 'M', 'δ'), + (0x1D7AE, 'M', 'ε'), + (0x1D7AF, 'M', 'ζ'), + (0x1D7B0, 'M', 'η'), + (0x1D7B1, 'M', 'θ'), + (0x1D7B2, 'M', 'ι'), + (0x1D7B3, 'M', 'κ'), + ] + +def _seg_70() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1D7B4, 'M', 'λ'), + (0x1D7B5, 'M', 'μ'), + (0x1D7B6, 'M', 'ν'), + (0x1D7B7, 'M', 'ξ'), + (0x1D7B8, 'M', 'ο'), + (0x1D7B9, 'M', 'π'), + (0x1D7BA, 'M', 'ρ'), + (0x1D7BB, 'M', 'σ'), + (0x1D7BD, 'M', 'τ'), + (0x1D7BE, 'M', 'υ'), + (0x1D7BF, 'M', 'φ'), + (0x1D7C0, 'M', 'χ'), + (0x1D7C1, 'M', 'ψ'), + (0x1D7C2, 'M', 'ω'), + (0x1D7C3, 'M', '∂'), + (0x1D7C4, 'M', 'ε'), + (0x1D7C5, 'M', 'θ'), + (0x1D7C6, 'M', 'κ'), + (0x1D7C7, 'M', 'φ'), + (0x1D7C8, 'M', 'ρ'), + (0x1D7C9, 'M', 'π'), + (0x1D7CA, 'M', 'ϝ'), + (0x1D7CC, 'X'), + (0x1D7CE, 'M', '0'), + (0x1D7CF, 'M', '1'), + (0x1D7D0, 'M', '2'), + (0x1D7D1, 'M', '3'), + (0x1D7D2, 'M', '4'), + (0x1D7D3, 'M', '5'), + (0x1D7D4, 'M', '6'), + (0x1D7D5, 'M', '7'), + (0x1D7D6, 'M', '8'), + (0x1D7D7, 'M', '9'), + (0x1D7D8, 'M', '0'), + (0x1D7D9, 'M', '1'), + (0x1D7DA, 'M', '2'), + (0x1D7DB, 'M', '3'), + (0x1D7DC, 'M', '4'), + (0x1D7DD, 'M', '5'), + (0x1D7DE, 'M', '6'), + (0x1D7DF, 'M', '7'), + (0x1D7E0, 'M', '8'), + (0x1D7E1, 'M', '9'), + (0x1D7E2, 'M', '0'), + (0x1D7E3, 'M', '1'), + (0x1D7E4, 'M', '2'), + (0x1D7E5, 'M', '3'), + (0x1D7E6, 'M', '4'), + (0x1D7E7, 'M', '5'), + (0x1D7E8, 'M', '6'), + (0x1D7E9, 'M', '7'), + (0x1D7EA, 'M', '8'), + (0x1D7EB, 'M', '9'), + (0x1D7EC, 'M', '0'), + (0x1D7ED, 'M', '1'), + (0x1D7EE, 'M', '2'), + (0x1D7EF, 'M', '3'), + (0x1D7F0, 'M', '4'), + (0x1D7F1, 'M', '5'), + (0x1D7F2, 'M', '6'), + (0x1D7F3, 'M', '7'), + (0x1D7F4, 'M', '8'), + (0x1D7F5, 'M', '9'), + (0x1D7F6, 'M', '0'), + (0x1D7F7, 'M', '1'), + (0x1D7F8, 'M', '2'), + (0x1D7F9, 'M', '3'), + (0x1D7FA, 'M', '4'), + (0x1D7FB, 'M', '5'), + (0x1D7FC, 'M', '6'), + (0x1D7FD, 'M', '7'), + (0x1D7FE, 'M', '8'), + (0x1D7FF, 'M', '9'), + (0x1D800, 'V'), + (0x1DA8C, 'X'), + (0x1DA9B, 'V'), + (0x1DAA0, 'X'), + (0x1DAA1, 'V'), + (0x1DAB0, 'X'), + (0x1DF00, 'V'), + (0x1DF1F, 'X'), + (0x1DF25, 'V'), + (0x1DF2B, 'X'), + (0x1E000, 'V'), + (0x1E007, 'X'), + (0x1E008, 'V'), + (0x1E019, 'X'), + (0x1E01B, 'V'), + (0x1E022, 'X'), + (0x1E023, 'V'), + (0x1E025, 'X'), + (0x1E026, 'V'), + (0x1E02B, 'X'), + (0x1E030, 'M', 'а'), + (0x1E031, 'M', 'б'), + (0x1E032, 'M', 'в'), + (0x1E033, 'M', 'г'), + (0x1E034, 'M', 'д'), + (0x1E035, 'M', 'е'), + (0x1E036, 'M', 'ж'), + ] + +def _seg_71() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E037, 'M', 'з'), + (0x1E038, 'M', 'и'), + (0x1E039, 'M', 'к'), + (0x1E03A, 'M', 'л'), + (0x1E03B, 'M', 'м'), + (0x1E03C, 'M', 'о'), + (0x1E03D, 'M', 'п'), + (0x1E03E, 'M', 'р'), + (0x1E03F, 'M', 'с'), + (0x1E040, 'M', 'т'), + (0x1E041, 'M', 'у'), + (0x1E042, 'M', 'ф'), + (0x1E043, 'M', 'х'), + (0x1E044, 'M', 'ц'), + (0x1E045, 'M', 'ч'), + (0x1E046, 'M', 'ш'), + (0x1E047, 'M', 'ы'), + (0x1E048, 'M', 'э'), + (0x1E049, 'M', 'ю'), + (0x1E04A, 'M', 'ꚉ'), + (0x1E04B, 'M', 'ә'), + (0x1E04C, 'M', 'і'), + (0x1E04D, 'M', 'ј'), + (0x1E04E, 'M', 'ө'), + (0x1E04F, 'M', 'ү'), + (0x1E050, 'M', 'ӏ'), + (0x1E051, 'M', 'а'), + (0x1E052, 'M', 'б'), + (0x1E053, 'M', 'в'), + (0x1E054, 'M', 'г'), + (0x1E055, 'M', 'д'), + (0x1E056, 'M', 'е'), + (0x1E057, 'M', 'ж'), + (0x1E058, 'M', 'з'), + (0x1E059, 'M', 'и'), + (0x1E05A, 'M', 'к'), + (0x1E05B, 'M', 'л'), + (0x1E05C, 'M', 'о'), + (0x1E05D, 'M', 'п'), + (0x1E05E, 'M', 'с'), + (0x1E05F, 'M', 'у'), + (0x1E060, 'M', 'ф'), + (0x1E061, 'M', 'х'), + (0x1E062, 'M', 'ц'), + (0x1E063, 'M', 'ч'), + (0x1E064, 'M', 'ш'), + (0x1E065, 'M', 'ъ'), + (0x1E066, 'M', 'ы'), + (0x1E067, 'M', 'ґ'), + (0x1E068, 'M', 'і'), + (0x1E069, 'M', 'ѕ'), + (0x1E06A, 'M', 'џ'), + (0x1E06B, 'M', 'ҫ'), + (0x1E06C, 'M', 'ꙑ'), + (0x1E06D, 'M', 'ұ'), + (0x1E06E, 'X'), + (0x1E08F, 'V'), + (0x1E090, 'X'), + (0x1E100, 'V'), + (0x1E12D, 'X'), + (0x1E130, 'V'), + (0x1E13E, 'X'), + (0x1E140, 'V'), + (0x1E14A, 'X'), + (0x1E14E, 'V'), + (0x1E150, 'X'), + (0x1E290, 'V'), + (0x1E2AF, 'X'), + (0x1E2C0, 'V'), + (0x1E2FA, 'X'), + (0x1E2FF, 'V'), + (0x1E300, 'X'), + (0x1E4D0, 'V'), + (0x1E4FA, 'X'), + (0x1E7E0, 'V'), + (0x1E7E7, 'X'), + (0x1E7E8, 'V'), + (0x1E7EC, 'X'), + (0x1E7ED, 'V'), + (0x1E7EF, 'X'), + (0x1E7F0, 'V'), + (0x1E7FF, 'X'), + (0x1E800, 'V'), + (0x1E8C5, 'X'), + (0x1E8C7, 'V'), + (0x1E8D7, 'X'), + (0x1E900, 'M', '𞤢'), + (0x1E901, 'M', '𞤣'), + (0x1E902, 'M', '𞤤'), + (0x1E903, 'M', '𞤥'), + (0x1E904, 'M', '𞤦'), + (0x1E905, 'M', '𞤧'), + (0x1E906, 'M', '𞤨'), + (0x1E907, 'M', '𞤩'), + (0x1E908, 'M', '𞤪'), + (0x1E909, 'M', '𞤫'), + (0x1E90A, 'M', '𞤬'), + (0x1E90B, 'M', '𞤭'), + (0x1E90C, 'M', '𞤮'), + (0x1E90D, 'M', '𞤯'), + ] + +def _seg_72() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1E90E, 'M', '𞤰'), + (0x1E90F, 'M', '𞤱'), + (0x1E910, 'M', '𞤲'), + (0x1E911, 'M', '𞤳'), + (0x1E912, 'M', '𞤴'), + (0x1E913, 'M', '𞤵'), + (0x1E914, 'M', '𞤶'), + (0x1E915, 'M', '𞤷'), + (0x1E916, 'M', '𞤸'), + (0x1E917, 'M', '𞤹'), + (0x1E918, 'M', '𞤺'), + (0x1E919, 'M', '𞤻'), + (0x1E91A, 'M', '𞤼'), + (0x1E91B, 'M', '𞤽'), + (0x1E91C, 'M', '𞤾'), + (0x1E91D, 'M', '𞤿'), + (0x1E91E, 'M', '𞥀'), + (0x1E91F, 'M', '𞥁'), + (0x1E920, 'M', '𞥂'), + (0x1E921, 'M', '𞥃'), + (0x1E922, 'V'), + (0x1E94C, 'X'), + (0x1E950, 'V'), + (0x1E95A, 'X'), + (0x1E95E, 'V'), + (0x1E960, 'X'), + (0x1EC71, 'V'), + (0x1ECB5, 'X'), + (0x1ED01, 'V'), + (0x1ED3E, 'X'), + (0x1EE00, 'M', 'ا'), + (0x1EE01, 'M', 'ب'), + (0x1EE02, 'M', 'ج'), + (0x1EE03, 'M', 'د'), + (0x1EE04, 'X'), + (0x1EE05, 'M', 'و'), + (0x1EE06, 'M', 'ز'), + (0x1EE07, 'M', 'ح'), + (0x1EE08, 'M', 'ط'), + (0x1EE09, 'M', 'ي'), + (0x1EE0A, 'M', 'ك'), + (0x1EE0B, 'M', 'ل'), + (0x1EE0C, 'M', 'م'), + (0x1EE0D, 'M', 'ن'), + (0x1EE0E, 'M', 'س'), + (0x1EE0F, 'M', 'ع'), + (0x1EE10, 'M', 'ف'), + (0x1EE11, 'M', 'ص'), + (0x1EE12, 'M', 'ق'), + (0x1EE13, 'M', 'ر'), + (0x1EE14, 'M', 'ش'), + (0x1EE15, 'M', 'ت'), + (0x1EE16, 'M', 'ث'), + (0x1EE17, 'M', 'خ'), + (0x1EE18, 'M', 'ذ'), + (0x1EE19, 'M', 'ض'), + (0x1EE1A, 'M', 'ظ'), + (0x1EE1B, 'M', 'غ'), + (0x1EE1C, 'M', 'ٮ'), + (0x1EE1D, 'M', 'ں'), + (0x1EE1E, 'M', 'ڡ'), + (0x1EE1F, 'M', 'ٯ'), + (0x1EE20, 'X'), + (0x1EE21, 'M', 'ب'), + (0x1EE22, 'M', 'ج'), + (0x1EE23, 'X'), + (0x1EE24, 'M', 'ه'), + (0x1EE25, 'X'), + (0x1EE27, 'M', 'ح'), + (0x1EE28, 'X'), + (0x1EE29, 'M', 'ي'), + (0x1EE2A, 'M', 'ك'), + (0x1EE2B, 'M', 'ل'), + (0x1EE2C, 'M', 'م'), + (0x1EE2D, 'M', 'ن'), + (0x1EE2E, 'M', 'س'), + (0x1EE2F, 'M', 'ع'), + (0x1EE30, 'M', 'ف'), + (0x1EE31, 'M', 'ص'), + (0x1EE32, 'M', 'ق'), + (0x1EE33, 'X'), + (0x1EE34, 'M', 'ش'), + (0x1EE35, 'M', 'ت'), + (0x1EE36, 'M', 'ث'), + (0x1EE37, 'M', 'خ'), + (0x1EE38, 'X'), + (0x1EE39, 'M', 'ض'), + (0x1EE3A, 'X'), + (0x1EE3B, 'M', 'غ'), + (0x1EE3C, 'X'), + (0x1EE42, 'M', 'ج'), + (0x1EE43, 'X'), + (0x1EE47, 'M', 'ح'), + (0x1EE48, 'X'), + (0x1EE49, 'M', 'ي'), + (0x1EE4A, 'X'), + (0x1EE4B, 'M', 'ل'), + (0x1EE4C, 'X'), + (0x1EE4D, 'M', 'ن'), + (0x1EE4E, 'M', 'س'), + ] + +def _seg_73() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EE4F, 'M', 'ع'), + (0x1EE50, 'X'), + (0x1EE51, 'M', 'ص'), + (0x1EE52, 'M', 'ق'), + (0x1EE53, 'X'), + (0x1EE54, 'M', 'ش'), + (0x1EE55, 'X'), + (0x1EE57, 'M', 'خ'), + (0x1EE58, 'X'), + (0x1EE59, 'M', 'ض'), + (0x1EE5A, 'X'), + (0x1EE5B, 'M', 'غ'), + (0x1EE5C, 'X'), + (0x1EE5D, 'M', 'ں'), + (0x1EE5E, 'X'), + (0x1EE5F, 'M', 'ٯ'), + (0x1EE60, 'X'), + (0x1EE61, 'M', 'ب'), + (0x1EE62, 'M', 'ج'), + (0x1EE63, 'X'), + (0x1EE64, 'M', 'ه'), + (0x1EE65, 'X'), + (0x1EE67, 'M', 'ح'), + (0x1EE68, 'M', 'ط'), + (0x1EE69, 'M', 'ي'), + (0x1EE6A, 'M', 'ك'), + (0x1EE6B, 'X'), + (0x1EE6C, 'M', 'م'), + (0x1EE6D, 'M', 'ن'), + (0x1EE6E, 'M', 'س'), + (0x1EE6F, 'M', 'ع'), + (0x1EE70, 'M', 'ف'), + (0x1EE71, 'M', 'ص'), + (0x1EE72, 'M', 'ق'), + (0x1EE73, 'X'), + (0x1EE74, 'M', 'ش'), + (0x1EE75, 'M', 'ت'), + (0x1EE76, 'M', 'ث'), + (0x1EE77, 'M', 'خ'), + (0x1EE78, 'X'), + (0x1EE79, 'M', 'ض'), + (0x1EE7A, 'M', 'ظ'), + (0x1EE7B, 'M', 'غ'), + (0x1EE7C, 'M', 'ٮ'), + (0x1EE7D, 'X'), + (0x1EE7E, 'M', 'ڡ'), + (0x1EE7F, 'X'), + (0x1EE80, 'M', 'ا'), + (0x1EE81, 'M', 'ب'), + (0x1EE82, 'M', 'ج'), + (0x1EE83, 'M', 'د'), + (0x1EE84, 'M', 'ه'), + (0x1EE85, 'M', 'و'), + (0x1EE86, 'M', 'ز'), + (0x1EE87, 'M', 'ح'), + (0x1EE88, 'M', 'ط'), + (0x1EE89, 'M', 'ي'), + (0x1EE8A, 'X'), + (0x1EE8B, 'M', 'ل'), + (0x1EE8C, 'M', 'م'), + (0x1EE8D, 'M', 'ن'), + (0x1EE8E, 'M', 'س'), + (0x1EE8F, 'M', 'ع'), + (0x1EE90, 'M', 'ف'), + (0x1EE91, 'M', 'ص'), + (0x1EE92, 'M', 'ق'), + (0x1EE93, 'M', 'ر'), + (0x1EE94, 'M', 'ش'), + (0x1EE95, 'M', 'ت'), + (0x1EE96, 'M', 'ث'), + (0x1EE97, 'M', 'خ'), + (0x1EE98, 'M', 'ذ'), + (0x1EE99, 'M', 'ض'), + (0x1EE9A, 'M', 'ظ'), + (0x1EE9B, 'M', 'غ'), + (0x1EE9C, 'X'), + (0x1EEA1, 'M', 'ب'), + (0x1EEA2, 'M', 'ج'), + (0x1EEA3, 'M', 'د'), + (0x1EEA4, 'X'), + (0x1EEA5, 'M', 'و'), + (0x1EEA6, 'M', 'ز'), + (0x1EEA7, 'M', 'ح'), + (0x1EEA8, 'M', 'ط'), + (0x1EEA9, 'M', 'ي'), + (0x1EEAA, 'X'), + (0x1EEAB, 'M', 'ل'), + (0x1EEAC, 'M', 'م'), + (0x1EEAD, 'M', 'ن'), + (0x1EEAE, 'M', 'س'), + (0x1EEAF, 'M', 'ع'), + (0x1EEB0, 'M', 'ف'), + (0x1EEB1, 'M', 'ص'), + (0x1EEB2, 'M', 'ق'), + (0x1EEB3, 'M', 'ر'), + (0x1EEB4, 'M', 'ش'), + (0x1EEB5, 'M', 'ت'), + (0x1EEB6, 'M', 'ث'), + (0x1EEB7, 'M', 'خ'), + (0x1EEB8, 'M', 'ذ'), + ] + +def _seg_74() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1EEB9, 'M', 'ض'), + (0x1EEBA, 'M', 'ظ'), + (0x1EEBB, 'M', 'غ'), + (0x1EEBC, 'X'), + (0x1EEF0, 'V'), + (0x1EEF2, 'X'), + (0x1F000, 'V'), + (0x1F02C, 'X'), + (0x1F030, 'V'), + (0x1F094, 'X'), + (0x1F0A0, 'V'), + (0x1F0AF, 'X'), + (0x1F0B1, 'V'), + (0x1F0C0, 'X'), + (0x1F0C1, 'V'), + (0x1F0D0, 'X'), + (0x1F0D1, 'V'), + (0x1F0F6, 'X'), + (0x1F101, '3', '0,'), + (0x1F102, '3', '1,'), + (0x1F103, '3', '2,'), + (0x1F104, '3', '3,'), + (0x1F105, '3', '4,'), + (0x1F106, '3', '5,'), + (0x1F107, '3', '6,'), + (0x1F108, '3', '7,'), + (0x1F109, '3', '8,'), + (0x1F10A, '3', '9,'), + (0x1F10B, 'V'), + (0x1F110, '3', '(a)'), + (0x1F111, '3', '(b)'), + (0x1F112, '3', '(c)'), + (0x1F113, '3', '(d)'), + (0x1F114, '3', '(e)'), + (0x1F115, '3', '(f)'), + (0x1F116, '3', '(g)'), + (0x1F117, '3', '(h)'), + (0x1F118, '3', '(i)'), + (0x1F119, '3', '(j)'), + (0x1F11A, '3', '(k)'), + (0x1F11B, '3', '(l)'), + (0x1F11C, '3', '(m)'), + (0x1F11D, '3', '(n)'), + (0x1F11E, '3', '(o)'), + (0x1F11F, '3', '(p)'), + (0x1F120, '3', '(q)'), + (0x1F121, '3', '(r)'), + (0x1F122, '3', '(s)'), + (0x1F123, '3', '(t)'), + (0x1F124, '3', '(u)'), + (0x1F125, '3', '(v)'), + (0x1F126, '3', '(w)'), + (0x1F127, '3', '(x)'), + (0x1F128, '3', '(y)'), + (0x1F129, '3', '(z)'), + (0x1F12A, 'M', '〔s〕'), + (0x1F12B, 'M', 'c'), + (0x1F12C, 'M', 'r'), + (0x1F12D, 'M', 'cd'), + (0x1F12E, 'M', 'wz'), + (0x1F12F, 'V'), + (0x1F130, 'M', 'a'), + (0x1F131, 'M', 'b'), + (0x1F132, 'M', 'c'), + (0x1F133, 'M', 'd'), + (0x1F134, 'M', 'e'), + (0x1F135, 'M', 'f'), + (0x1F136, 'M', 'g'), + (0x1F137, 'M', 'h'), + (0x1F138, 'M', 'i'), + (0x1F139, 'M', 'j'), + (0x1F13A, 'M', 'k'), + (0x1F13B, 'M', 'l'), + (0x1F13C, 'M', 'm'), + (0x1F13D, 'M', 'n'), + (0x1F13E, 'M', 'o'), + (0x1F13F, 'M', 'p'), + (0x1F140, 'M', 'q'), + (0x1F141, 'M', 'r'), + (0x1F142, 'M', 's'), + (0x1F143, 'M', 't'), + (0x1F144, 'M', 'u'), + (0x1F145, 'M', 'v'), + (0x1F146, 'M', 'w'), + (0x1F147, 'M', 'x'), + (0x1F148, 'M', 'y'), + (0x1F149, 'M', 'z'), + (0x1F14A, 'M', 'hv'), + (0x1F14B, 'M', 'mv'), + (0x1F14C, 'M', 'sd'), + (0x1F14D, 'M', 'ss'), + (0x1F14E, 'M', 'ppv'), + (0x1F14F, 'M', 'wc'), + (0x1F150, 'V'), + (0x1F16A, 'M', 'mc'), + (0x1F16B, 'M', 'md'), + (0x1F16C, 'M', 'mr'), + (0x1F16D, 'V'), + (0x1F190, 'M', 'dj'), + (0x1F191, 'V'), + ] + +def _seg_75() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1F1AE, 'X'), + (0x1F1E6, 'V'), + (0x1F200, 'M', 'ほか'), + (0x1F201, 'M', 'ココ'), + (0x1F202, 'M', 'サ'), + (0x1F203, 'X'), + (0x1F210, 'M', '手'), + (0x1F211, 'M', '字'), + (0x1F212, 'M', '双'), + (0x1F213, 'M', 'デ'), + (0x1F214, 'M', '二'), + (0x1F215, 'M', '多'), + (0x1F216, 'M', '解'), + (0x1F217, 'M', '天'), + (0x1F218, 'M', '交'), + (0x1F219, 'M', '映'), + (0x1F21A, 'M', '無'), + (0x1F21B, 'M', '料'), + (0x1F21C, 'M', '前'), + (0x1F21D, 'M', '後'), + (0x1F21E, 'M', '再'), + (0x1F21F, 'M', '新'), + (0x1F220, 'M', '初'), + (0x1F221, 'M', '終'), + (0x1F222, 'M', '生'), + (0x1F223, 'M', '販'), + (0x1F224, 'M', '声'), + (0x1F225, 'M', '吹'), + (0x1F226, 'M', '演'), + (0x1F227, 'M', '投'), + (0x1F228, 'M', '捕'), + (0x1F229, 'M', '一'), + (0x1F22A, 'M', '三'), + (0x1F22B, 'M', '遊'), + (0x1F22C, 'M', '左'), + (0x1F22D, 'M', '中'), + (0x1F22E, 'M', '右'), + (0x1F22F, 'M', '指'), + (0x1F230, 'M', '走'), + (0x1F231, 'M', '打'), + (0x1F232, 'M', '禁'), + (0x1F233, 'M', '空'), + (0x1F234, 'M', '合'), + (0x1F235, 'M', '満'), + (0x1F236, 'M', '有'), + (0x1F237, 'M', '月'), + (0x1F238, 'M', '申'), + (0x1F239, 'M', '割'), + (0x1F23A, 'M', '営'), + (0x1F23B, 'M', '配'), + (0x1F23C, 'X'), + (0x1F240, 'M', '〔本〕'), + (0x1F241, 'M', '〔三〕'), + (0x1F242, 'M', '〔二〕'), + (0x1F243, 'M', '〔安〕'), + (0x1F244, 'M', '〔点〕'), + (0x1F245, 'M', '〔打〕'), + (0x1F246, 'M', '〔盗〕'), + (0x1F247, 'M', '〔勝〕'), + (0x1F248, 'M', '〔敗〕'), + (0x1F249, 'X'), + (0x1F250, 'M', '得'), + (0x1F251, 'M', '可'), + (0x1F252, 'X'), + (0x1F260, 'V'), + (0x1F266, 'X'), + (0x1F300, 'V'), + (0x1F6D8, 'X'), + (0x1F6DC, 'V'), + (0x1F6ED, 'X'), + (0x1F6F0, 'V'), + (0x1F6FD, 'X'), + (0x1F700, 'V'), + (0x1F777, 'X'), + (0x1F77B, 'V'), + (0x1F7DA, 'X'), + (0x1F7E0, 'V'), + (0x1F7EC, 'X'), + (0x1F7F0, 'V'), + (0x1F7F1, 'X'), + (0x1F800, 'V'), + (0x1F80C, 'X'), + (0x1F810, 'V'), + (0x1F848, 'X'), + (0x1F850, 'V'), + (0x1F85A, 'X'), + (0x1F860, 'V'), + (0x1F888, 'X'), + (0x1F890, 'V'), + (0x1F8AE, 'X'), + (0x1F8B0, 'V'), + (0x1F8B2, 'X'), + (0x1F900, 'V'), + (0x1FA54, 'X'), + (0x1FA60, 'V'), + (0x1FA6E, 'X'), + (0x1FA70, 'V'), + (0x1FA7D, 'X'), + (0x1FA80, 'V'), + (0x1FA89, 'X'), + ] + +def _seg_76() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x1FA90, 'V'), + (0x1FABE, 'X'), + (0x1FABF, 'V'), + (0x1FAC6, 'X'), + (0x1FACE, 'V'), + (0x1FADC, 'X'), + (0x1FAE0, 'V'), + (0x1FAE9, 'X'), + (0x1FAF0, 'V'), + (0x1FAF9, 'X'), + (0x1FB00, 'V'), + (0x1FB93, 'X'), + (0x1FB94, 'V'), + (0x1FBCB, 'X'), + (0x1FBF0, 'M', '0'), + (0x1FBF1, 'M', '1'), + (0x1FBF2, 'M', '2'), + (0x1FBF3, 'M', '3'), + (0x1FBF4, 'M', '4'), + (0x1FBF5, 'M', '5'), + (0x1FBF6, 'M', '6'), + (0x1FBF7, 'M', '7'), + (0x1FBF8, 'M', '8'), + (0x1FBF9, 'M', '9'), + (0x1FBFA, 'X'), + (0x20000, 'V'), + (0x2A6E0, 'X'), + (0x2A700, 'V'), + (0x2B73A, 'X'), + (0x2B740, 'V'), + (0x2B81E, 'X'), + (0x2B820, 'V'), + (0x2CEA2, 'X'), + (0x2CEB0, 'V'), + (0x2EBE1, 'X'), + (0x2EBF0, 'V'), + (0x2EE5E, 'X'), + (0x2F800, 'M', '丽'), + (0x2F801, 'M', '丸'), + (0x2F802, 'M', '乁'), + (0x2F803, 'M', '𠄢'), + (0x2F804, 'M', '你'), + (0x2F805, 'M', '侮'), + (0x2F806, 'M', '侻'), + (0x2F807, 'M', '倂'), + (0x2F808, 'M', '偺'), + (0x2F809, 'M', '備'), + (0x2F80A, 'M', '僧'), + (0x2F80B, 'M', '像'), + (0x2F80C, 'M', '㒞'), + (0x2F80D, 'M', '𠘺'), + (0x2F80E, 'M', '免'), + (0x2F80F, 'M', '兔'), + (0x2F810, 'M', '兤'), + (0x2F811, 'M', '具'), + (0x2F812, 'M', '𠔜'), + (0x2F813, 'M', '㒹'), + (0x2F814, 'M', '內'), + (0x2F815, 'M', '再'), + (0x2F816, 'M', '𠕋'), + (0x2F817, 'M', '冗'), + (0x2F818, 'M', '冤'), + (0x2F819, 'M', '仌'), + (0x2F81A, 'M', '冬'), + (0x2F81B, 'M', '况'), + (0x2F81C, 'M', '𩇟'), + (0x2F81D, 'M', '凵'), + (0x2F81E, 'M', '刃'), + (0x2F81F, 'M', '㓟'), + (0x2F820, 'M', '刻'), + (0x2F821, 'M', '剆'), + (0x2F822, 'M', '割'), + (0x2F823, 'M', '剷'), + (0x2F824, 'M', '㔕'), + (0x2F825, 'M', '勇'), + (0x2F826, 'M', '勉'), + (0x2F827, 'M', '勤'), + (0x2F828, 'M', '勺'), + (0x2F829, 'M', '包'), + (0x2F82A, 'M', '匆'), + (0x2F82B, 'M', '北'), + (0x2F82C, 'M', '卉'), + (0x2F82D, 'M', '卑'), + (0x2F82E, 'M', '博'), + (0x2F82F, 'M', '即'), + (0x2F830, 'M', '卽'), + (0x2F831, 'M', '卿'), + (0x2F834, 'M', '𠨬'), + (0x2F835, 'M', '灰'), + (0x2F836, 'M', '及'), + (0x2F837, 'M', '叟'), + (0x2F838, 'M', '𠭣'), + (0x2F839, 'M', '叫'), + (0x2F83A, 'M', '叱'), + (0x2F83B, 'M', '吆'), + (0x2F83C, 'M', '咞'), + (0x2F83D, 'M', '吸'), + (0x2F83E, 'M', '呈'), + (0x2F83F, 'M', '周'), + (0x2F840, 'M', '咢'), + ] + +def _seg_77() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F841, 'M', '哶'), + (0x2F842, 'M', '唐'), + (0x2F843, 'M', '啓'), + (0x2F844, 'M', '啣'), + (0x2F845, 'M', '善'), + (0x2F847, 'M', '喙'), + (0x2F848, 'M', '喫'), + (0x2F849, 'M', '喳'), + (0x2F84A, 'M', '嗂'), + (0x2F84B, 'M', '圖'), + (0x2F84C, 'M', '嘆'), + (0x2F84D, 'M', '圗'), + (0x2F84E, 'M', '噑'), + (0x2F84F, 'M', '噴'), + (0x2F850, 'M', '切'), + (0x2F851, 'M', '壮'), + (0x2F852, 'M', '城'), + (0x2F853, 'M', '埴'), + (0x2F854, 'M', '堍'), + (0x2F855, 'M', '型'), + (0x2F856, 'M', '堲'), + (0x2F857, 'M', '報'), + (0x2F858, 'M', '墬'), + (0x2F859, 'M', '𡓤'), + (0x2F85A, 'M', '売'), + (0x2F85B, 'M', '壷'), + (0x2F85C, 'M', '夆'), + (0x2F85D, 'M', '多'), + (0x2F85E, 'M', '夢'), + (0x2F85F, 'M', '奢'), + (0x2F860, 'M', '𡚨'), + (0x2F861, 'M', '𡛪'), + (0x2F862, 'M', '姬'), + (0x2F863, 'M', '娛'), + (0x2F864, 'M', '娧'), + (0x2F865, 'M', '姘'), + (0x2F866, 'M', '婦'), + (0x2F867, 'M', '㛮'), + (0x2F868, 'X'), + (0x2F869, 'M', '嬈'), + (0x2F86A, 'M', '嬾'), + (0x2F86C, 'M', '𡧈'), + (0x2F86D, 'M', '寃'), + (0x2F86E, 'M', '寘'), + (0x2F86F, 'M', '寧'), + (0x2F870, 'M', '寳'), + (0x2F871, 'M', '𡬘'), + (0x2F872, 'M', '寿'), + (0x2F873, 'M', '将'), + (0x2F874, 'X'), + (0x2F875, 'M', '尢'), + (0x2F876, 'M', '㞁'), + (0x2F877, 'M', '屠'), + (0x2F878, 'M', '屮'), + (0x2F879, 'M', '峀'), + (0x2F87A, 'M', '岍'), + (0x2F87B, 'M', '𡷤'), + (0x2F87C, 'M', '嵃'), + (0x2F87D, 'M', '𡷦'), + (0x2F87E, 'M', '嵮'), + (0x2F87F, 'M', '嵫'), + (0x2F880, 'M', '嵼'), + (0x2F881, 'M', '巡'), + (0x2F882, 'M', '巢'), + (0x2F883, 'M', '㠯'), + (0x2F884, 'M', '巽'), + (0x2F885, 'M', '帨'), + (0x2F886, 'M', '帽'), + (0x2F887, 'M', '幩'), + (0x2F888, 'M', '㡢'), + (0x2F889, 'M', '𢆃'), + (0x2F88A, 'M', '㡼'), + (0x2F88B, 'M', '庰'), + (0x2F88C, 'M', '庳'), + (0x2F88D, 'M', '庶'), + (0x2F88E, 'M', '廊'), + (0x2F88F, 'M', '𪎒'), + (0x2F890, 'M', '廾'), + (0x2F891, 'M', '𢌱'), + (0x2F893, 'M', '舁'), + (0x2F894, 'M', '弢'), + (0x2F896, 'M', '㣇'), + (0x2F897, 'M', '𣊸'), + (0x2F898, 'M', '𦇚'), + (0x2F899, 'M', '形'), + (0x2F89A, 'M', '彫'), + (0x2F89B, 'M', '㣣'), + (0x2F89C, 'M', '徚'), + (0x2F89D, 'M', '忍'), + (0x2F89E, 'M', '志'), + (0x2F89F, 'M', '忹'), + (0x2F8A0, 'M', '悁'), + (0x2F8A1, 'M', '㤺'), + (0x2F8A2, 'M', '㤜'), + (0x2F8A3, 'M', '悔'), + (0x2F8A4, 'M', '𢛔'), + (0x2F8A5, 'M', '惇'), + (0x2F8A6, 'M', '慈'), + (0x2F8A7, 'M', '慌'), + (0x2F8A8, 'M', '慎'), + ] + +def _seg_78() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F8A9, 'M', '慌'), + (0x2F8AA, 'M', '慺'), + (0x2F8AB, 'M', '憎'), + (0x2F8AC, 'M', '憲'), + (0x2F8AD, 'M', '憤'), + (0x2F8AE, 'M', '憯'), + (0x2F8AF, 'M', '懞'), + (0x2F8B0, 'M', '懲'), + (0x2F8B1, 'M', '懶'), + (0x2F8B2, 'M', '成'), + (0x2F8B3, 'M', '戛'), + (0x2F8B4, 'M', '扝'), + (0x2F8B5, 'M', '抱'), + (0x2F8B6, 'M', '拔'), + (0x2F8B7, 'M', '捐'), + (0x2F8B8, 'M', '𢬌'), + (0x2F8B9, 'M', '挽'), + (0x2F8BA, 'M', '拼'), + (0x2F8BB, 'M', '捨'), + (0x2F8BC, 'M', '掃'), + (0x2F8BD, 'M', '揤'), + (0x2F8BE, 'M', '𢯱'), + (0x2F8BF, 'M', '搢'), + (0x2F8C0, 'M', '揅'), + (0x2F8C1, 'M', '掩'), + (0x2F8C2, 'M', '㨮'), + (0x2F8C3, 'M', '摩'), + (0x2F8C4, 'M', '摾'), + (0x2F8C5, 'M', '撝'), + (0x2F8C6, 'M', '摷'), + (0x2F8C7, 'M', '㩬'), + (0x2F8C8, 'M', '敏'), + (0x2F8C9, 'M', '敬'), + (0x2F8CA, 'M', '𣀊'), + (0x2F8CB, 'M', '旣'), + (0x2F8CC, 'M', '書'), + (0x2F8CD, 'M', '晉'), + (0x2F8CE, 'M', '㬙'), + (0x2F8CF, 'M', '暑'), + (0x2F8D0, 'M', '㬈'), + (0x2F8D1, 'M', '㫤'), + (0x2F8D2, 'M', '冒'), + (0x2F8D3, 'M', '冕'), + (0x2F8D4, 'M', '最'), + (0x2F8D5, 'M', '暜'), + (0x2F8D6, 'M', '肭'), + (0x2F8D7, 'M', '䏙'), + (0x2F8D8, 'M', '朗'), + (0x2F8D9, 'M', '望'), + (0x2F8DA, 'M', '朡'), + (0x2F8DB, 'M', '杞'), + (0x2F8DC, 'M', '杓'), + (0x2F8DD, 'M', '𣏃'), + (0x2F8DE, 'M', '㭉'), + (0x2F8DF, 'M', '柺'), + (0x2F8E0, 'M', '枅'), + (0x2F8E1, 'M', '桒'), + (0x2F8E2, 'M', '梅'), + (0x2F8E3, 'M', '𣑭'), + (0x2F8E4, 'M', '梎'), + (0x2F8E5, 'M', '栟'), + (0x2F8E6, 'M', '椔'), + (0x2F8E7, 'M', '㮝'), + (0x2F8E8, 'M', '楂'), + (0x2F8E9, 'M', '榣'), + (0x2F8EA, 'M', '槪'), + (0x2F8EB, 'M', '檨'), + (0x2F8EC, 'M', '𣚣'), + (0x2F8ED, 'M', '櫛'), + (0x2F8EE, 'M', '㰘'), + (0x2F8EF, 'M', '次'), + (0x2F8F0, 'M', '𣢧'), + (0x2F8F1, 'M', '歔'), + (0x2F8F2, 'M', '㱎'), + (0x2F8F3, 'M', '歲'), + (0x2F8F4, 'M', '殟'), + (0x2F8F5, 'M', '殺'), + (0x2F8F6, 'M', '殻'), + (0x2F8F7, 'M', '𣪍'), + (0x2F8F8, 'M', '𡴋'), + (0x2F8F9, 'M', '𣫺'), + (0x2F8FA, 'M', '汎'), + (0x2F8FB, 'M', '𣲼'), + (0x2F8FC, 'M', '沿'), + (0x2F8FD, 'M', '泍'), + (0x2F8FE, 'M', '汧'), + (0x2F8FF, 'M', '洖'), + (0x2F900, 'M', '派'), + (0x2F901, 'M', '海'), + (0x2F902, 'M', '流'), + (0x2F903, 'M', '浩'), + (0x2F904, 'M', '浸'), + (0x2F905, 'M', '涅'), + (0x2F906, 'M', '𣴞'), + (0x2F907, 'M', '洴'), + (0x2F908, 'M', '港'), + (0x2F909, 'M', '湮'), + (0x2F90A, 'M', '㴳'), + (0x2F90B, 'M', '滋'), + (0x2F90C, 'M', '滇'), + ] + +def _seg_79() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F90D, 'M', '𣻑'), + (0x2F90E, 'M', '淹'), + (0x2F90F, 'M', '潮'), + (0x2F910, 'M', '𣽞'), + (0x2F911, 'M', '𣾎'), + (0x2F912, 'M', '濆'), + (0x2F913, 'M', '瀹'), + (0x2F914, 'M', '瀞'), + (0x2F915, 'M', '瀛'), + (0x2F916, 'M', '㶖'), + (0x2F917, 'M', '灊'), + (0x2F918, 'M', '災'), + (0x2F919, 'M', '灷'), + (0x2F91A, 'M', '炭'), + (0x2F91B, 'M', '𠔥'), + (0x2F91C, 'M', '煅'), + (0x2F91D, 'M', '𤉣'), + (0x2F91E, 'M', '熜'), + (0x2F91F, 'X'), + (0x2F920, 'M', '爨'), + (0x2F921, 'M', '爵'), + (0x2F922, 'M', '牐'), + (0x2F923, 'M', '𤘈'), + (0x2F924, 'M', '犀'), + (0x2F925, 'M', '犕'), + (0x2F926, 'M', '𤜵'), + (0x2F927, 'M', '𤠔'), + (0x2F928, 'M', '獺'), + (0x2F929, 'M', '王'), + (0x2F92A, 'M', '㺬'), + (0x2F92B, 'M', '玥'), + (0x2F92C, 'M', '㺸'), + (0x2F92E, 'M', '瑇'), + (0x2F92F, 'M', '瑜'), + (0x2F930, 'M', '瑱'), + (0x2F931, 'M', '璅'), + (0x2F932, 'M', '瓊'), + (0x2F933, 'M', '㼛'), + (0x2F934, 'M', '甤'), + (0x2F935, 'M', '𤰶'), + (0x2F936, 'M', '甾'), + (0x2F937, 'M', '𤲒'), + (0x2F938, 'M', '異'), + (0x2F939, 'M', '𢆟'), + (0x2F93A, 'M', '瘐'), + (0x2F93B, 'M', '𤾡'), + (0x2F93C, 'M', '𤾸'), + (0x2F93D, 'M', '𥁄'), + (0x2F93E, 'M', '㿼'), + (0x2F93F, 'M', '䀈'), + (0x2F940, 'M', '直'), + (0x2F941, 'M', '𥃳'), + (0x2F942, 'M', '𥃲'), + (0x2F943, 'M', '𥄙'), + (0x2F944, 'M', '𥄳'), + (0x2F945, 'M', '眞'), + (0x2F946, 'M', '真'), + (0x2F948, 'M', '睊'), + (0x2F949, 'M', '䀹'), + (0x2F94A, 'M', '瞋'), + (0x2F94B, 'M', '䁆'), + (0x2F94C, 'M', '䂖'), + (0x2F94D, 'M', '𥐝'), + (0x2F94E, 'M', '硎'), + (0x2F94F, 'M', '碌'), + (0x2F950, 'M', '磌'), + (0x2F951, 'M', '䃣'), + (0x2F952, 'M', '𥘦'), + (0x2F953, 'M', '祖'), + (0x2F954, 'M', '𥚚'), + (0x2F955, 'M', '𥛅'), + (0x2F956, 'M', '福'), + (0x2F957, 'M', '秫'), + (0x2F958, 'M', '䄯'), + (0x2F959, 'M', '穀'), + (0x2F95A, 'M', '穊'), + (0x2F95B, 'M', '穏'), + (0x2F95C, 'M', '𥥼'), + (0x2F95D, 'M', '𥪧'), + (0x2F95F, 'X'), + (0x2F960, 'M', '䈂'), + (0x2F961, 'M', '𥮫'), + (0x2F962, 'M', '篆'), + (0x2F963, 'M', '築'), + (0x2F964, 'M', '䈧'), + (0x2F965, 'M', '𥲀'), + (0x2F966, 'M', '糒'), + (0x2F967, 'M', '䊠'), + (0x2F968, 'M', '糨'), + (0x2F969, 'M', '糣'), + (0x2F96A, 'M', '紀'), + (0x2F96B, 'M', '𥾆'), + (0x2F96C, 'M', '絣'), + (0x2F96D, 'M', '䌁'), + (0x2F96E, 'M', '緇'), + (0x2F96F, 'M', '縂'), + (0x2F970, 'M', '繅'), + (0x2F971, 'M', '䌴'), + (0x2F972, 'M', '𦈨'), + (0x2F973, 'M', '𦉇'), + ] + +def _seg_80() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F974, 'M', '䍙'), + (0x2F975, 'M', '𦋙'), + (0x2F976, 'M', '罺'), + (0x2F977, 'M', '𦌾'), + (0x2F978, 'M', '羕'), + (0x2F979, 'M', '翺'), + (0x2F97A, 'M', '者'), + (0x2F97B, 'M', '𦓚'), + (0x2F97C, 'M', '𦔣'), + (0x2F97D, 'M', '聠'), + (0x2F97E, 'M', '𦖨'), + (0x2F97F, 'M', '聰'), + (0x2F980, 'M', '𣍟'), + (0x2F981, 'M', '䏕'), + (0x2F982, 'M', '育'), + (0x2F983, 'M', '脃'), + (0x2F984, 'M', '䐋'), + (0x2F985, 'M', '脾'), + (0x2F986, 'M', '媵'), + (0x2F987, 'M', '𦞧'), + (0x2F988, 'M', '𦞵'), + (0x2F989, 'M', '𣎓'), + (0x2F98A, 'M', '𣎜'), + (0x2F98B, 'M', '舁'), + (0x2F98C, 'M', '舄'), + (0x2F98D, 'M', '辞'), + (0x2F98E, 'M', '䑫'), + (0x2F98F, 'M', '芑'), + (0x2F990, 'M', '芋'), + (0x2F991, 'M', '芝'), + (0x2F992, 'M', '劳'), + (0x2F993, 'M', '花'), + (0x2F994, 'M', '芳'), + (0x2F995, 'M', '芽'), + (0x2F996, 'M', '苦'), + (0x2F997, 'M', '𦬼'), + (0x2F998, 'M', '若'), + (0x2F999, 'M', '茝'), + (0x2F99A, 'M', '荣'), + (0x2F99B, 'M', '莭'), + (0x2F99C, 'M', '茣'), + (0x2F99D, 'M', '莽'), + (0x2F99E, 'M', '菧'), + (0x2F99F, 'M', '著'), + (0x2F9A0, 'M', '荓'), + (0x2F9A1, 'M', '菊'), + (0x2F9A2, 'M', '菌'), + (0x2F9A3, 'M', '菜'), + (0x2F9A4, 'M', '𦰶'), + (0x2F9A5, 'M', '𦵫'), + (0x2F9A6, 'M', '𦳕'), + (0x2F9A7, 'M', '䔫'), + (0x2F9A8, 'M', '蓱'), + (0x2F9A9, 'M', '蓳'), + (0x2F9AA, 'M', '蔖'), + (0x2F9AB, 'M', '𧏊'), + (0x2F9AC, 'M', '蕤'), + (0x2F9AD, 'M', '𦼬'), + (0x2F9AE, 'M', '䕝'), + (0x2F9AF, 'M', '䕡'), + (0x2F9B0, 'M', '𦾱'), + (0x2F9B1, 'M', '𧃒'), + (0x2F9B2, 'M', '䕫'), + (0x2F9B3, 'M', '虐'), + (0x2F9B4, 'M', '虜'), + (0x2F9B5, 'M', '虧'), + (0x2F9B6, 'M', '虩'), + (0x2F9B7, 'M', '蚩'), + (0x2F9B8, 'M', '蚈'), + (0x2F9B9, 'M', '蜎'), + (0x2F9BA, 'M', '蛢'), + (0x2F9BB, 'M', '蝹'), + (0x2F9BC, 'M', '蜨'), + (0x2F9BD, 'M', '蝫'), + (0x2F9BE, 'M', '螆'), + (0x2F9BF, 'X'), + (0x2F9C0, 'M', '蟡'), + (0x2F9C1, 'M', '蠁'), + (0x2F9C2, 'M', '䗹'), + (0x2F9C3, 'M', '衠'), + (0x2F9C4, 'M', '衣'), + (0x2F9C5, 'M', '𧙧'), + (0x2F9C6, 'M', '裗'), + (0x2F9C7, 'M', '裞'), + (0x2F9C8, 'M', '䘵'), + (0x2F9C9, 'M', '裺'), + (0x2F9CA, 'M', '㒻'), + (0x2F9CB, 'M', '𧢮'), + (0x2F9CC, 'M', '𧥦'), + (0x2F9CD, 'M', '䚾'), + (0x2F9CE, 'M', '䛇'), + (0x2F9CF, 'M', '誠'), + (0x2F9D0, 'M', '諭'), + (0x2F9D1, 'M', '變'), + (0x2F9D2, 'M', '豕'), + (0x2F9D3, 'M', '𧲨'), + (0x2F9D4, 'M', '貫'), + (0x2F9D5, 'M', '賁'), + (0x2F9D6, 'M', '贛'), + (0x2F9D7, 'M', '起'), + ] + +def _seg_81() -> List[Union[Tuple[int, str], Tuple[int, str, str]]]: + return [ + (0x2F9D8, 'M', '𧼯'), + (0x2F9D9, 'M', '𠠄'), + (0x2F9DA, 'M', '跋'), + (0x2F9DB, 'M', '趼'), + (0x2F9DC, 'M', '跰'), + (0x2F9DD, 'M', '𠣞'), + (0x2F9DE, 'M', '軔'), + (0x2F9DF, 'M', '輸'), + (0x2F9E0, 'M', '𨗒'), + (0x2F9E1, 'M', '𨗭'), + (0x2F9E2, 'M', '邔'), + (0x2F9E3, 'M', '郱'), + (0x2F9E4, 'M', '鄑'), + (0x2F9E5, 'M', '𨜮'), + (0x2F9E6, 'M', '鄛'), + (0x2F9E7, 'M', '鈸'), + (0x2F9E8, 'M', '鋗'), + (0x2F9E9, 'M', '鋘'), + (0x2F9EA, 'M', '鉼'), + (0x2F9EB, 'M', '鏹'), + (0x2F9EC, 'M', '鐕'), + (0x2F9ED, 'M', '𨯺'), + (0x2F9EE, 'M', '開'), + (0x2F9EF, 'M', '䦕'), + (0x2F9F0, 'M', '閷'), + (0x2F9F1, 'M', '𨵷'), + (0x2F9F2, 'M', '䧦'), + (0x2F9F3, 'M', '雃'), + (0x2F9F4, 'M', '嶲'), + (0x2F9F5, 'M', '霣'), + (0x2F9F6, 'M', '𩅅'), + (0x2F9F7, 'M', '𩈚'), + (0x2F9F8, 'M', '䩮'), + (0x2F9F9, 'M', '䩶'), + (0x2F9FA, 'M', '韠'), + (0x2F9FB, 'M', '𩐊'), + (0x2F9FC, 'M', '䪲'), + (0x2F9FD, 'M', '𩒖'), + (0x2F9FE, 'M', '頋'), + (0x2FA00, 'M', '頩'), + (0x2FA01, 'M', '𩖶'), + (0x2FA02, 'M', '飢'), + (0x2FA03, 'M', '䬳'), + (0x2FA04, 'M', '餩'), + (0x2FA05, 'M', '馧'), + (0x2FA06, 'M', '駂'), + (0x2FA07, 'M', '駾'), + (0x2FA08, 'M', '䯎'), + (0x2FA09, 'M', '𩬰'), + (0x2FA0A, 'M', '鬒'), + (0x2FA0B, 'M', '鱀'), + (0x2FA0C, 'M', '鳽'), + (0x2FA0D, 'M', '䳎'), + (0x2FA0E, 'M', '䳭'), + (0x2FA0F, 'M', '鵧'), + (0x2FA10, 'M', '𪃎'), + (0x2FA11, 'M', '䳸'), + (0x2FA12, 'M', '𪄅'), + (0x2FA13, 'M', '𪈎'), + (0x2FA14, 'M', '𪊑'), + (0x2FA15, 'M', '麻'), + (0x2FA16, 'M', '䵖'), + (0x2FA17, 'M', '黹'), + (0x2FA18, 'M', '黾'), + (0x2FA19, 'M', '鼅'), + (0x2FA1A, 'M', '鼏'), + (0x2FA1B, 'M', '鼖'), + (0x2FA1C, 'M', '鼻'), + (0x2FA1D, 'M', '𪘀'), + (0x2FA1E, 'X'), + (0x30000, 'V'), + (0x3134B, 'X'), + (0x31350, 'V'), + (0x323B0, 'X'), + (0xE0100, 'I'), + (0xE01F0, 'X'), + ] + +uts46data = tuple( + _seg_0() + + _seg_1() + + _seg_2() + + _seg_3() + + _seg_4() + + _seg_5() + + _seg_6() + + _seg_7() + + _seg_8() + + _seg_9() + + _seg_10() + + _seg_11() + + _seg_12() + + _seg_13() + + _seg_14() + + _seg_15() + + _seg_16() + + _seg_17() + + _seg_18() + + _seg_19() + + _seg_20() + + _seg_21() + + _seg_22() + + _seg_23() + + _seg_24() + + _seg_25() + + _seg_26() + + _seg_27() + + _seg_28() + + _seg_29() + + _seg_30() + + _seg_31() + + _seg_32() + + _seg_33() + + _seg_34() + + _seg_35() + + _seg_36() + + _seg_37() + + _seg_38() + + _seg_39() + + _seg_40() + + _seg_41() + + _seg_42() + + _seg_43() + + _seg_44() + + _seg_45() + + _seg_46() + + _seg_47() + + _seg_48() + + _seg_49() + + _seg_50() + + _seg_51() + + _seg_52() + + _seg_53() + + _seg_54() + + _seg_55() + + _seg_56() + + _seg_57() + + _seg_58() + + _seg_59() + + _seg_60() + + _seg_61() + + _seg_62() + + _seg_63() + + _seg_64() + + _seg_65() + + _seg_66() + + _seg_67() + + _seg_68() + + _seg_69() + + _seg_70() + + _seg_71() + + _seg_72() + + _seg_73() + + _seg_74() + + _seg_75() + + _seg_76() + + _seg_77() + + _seg_78() + + _seg_79() + + _seg_80() + + _seg_81() +) # type: Tuple[Union[Tuple[int, str], Tuple[int, str, str]], ...] diff --git a/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/LICENSE.txt b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/LICENSE.txt new file mode 100644 index 0000000..7b190ca --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2011 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/METADATA b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/METADATA new file mode 100644 index 0000000..ddf5464 --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/METADATA @@ -0,0 +1,60 @@ +Metadata-Version: 2.1 +Name: itsdangerous +Version: 2.2.0 +Summary: Safely pass data to untrusted environments and back. +Maintainer-email: Pallets +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Typing :: Typed +Project-URL: Changes, https://itsdangerous.palletsprojects.com/changes/ +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://itsdangerous.palletsprojects.com/ +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Source, https://github.com/pallets/itsdangerous/ + +# ItsDangerous + +... so better sign this + +Various helpers to pass data to untrusted environments and to get it +back safe and sound. Data is cryptographically signed to ensure that a +token has not been tampered with. + +It's possible to customize how data is serialized. Data is compressed as +needed. A timestamp can be added and verified automatically while +loading a token. + + +## A Simple Example + +Here's how you could generate a token for transmitting a user's id and +name between web requests. + +```python +from itsdangerous import URLSafeSerializer +auth_s = URLSafeSerializer("secret key", "auth") +token = auth_s.dumps({"id": 5, "name": "itsdangerous"}) + +print(token) +# eyJpZCI6NSwibmFtZSI6Iml0c2Rhbmdlcm91cyJ9.6YP6T0BaO67XP--9UzTrmurXSmg + +data = auth_s.loads(token) +print(data["name"]) +# itsdangerous +``` + + +## Donate + +The Pallets organization develops and supports ItsDangerous and other +popular packages. In order to grow the community of contributors and +users, and allow the maintainers to devote more time to the projects, +[please donate today][]. + +[please donate today]: https://palletsprojects.com/donate + diff --git a/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/RECORD b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/RECORD new file mode 100644 index 0000000..5f1a9de --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/RECORD @@ -0,0 +1,23 @@ +itsdangerous-2.2.0.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +itsdangerous-2.2.0.dist-info/LICENSE.txt,sha256=Y68JiRtr6K0aQlLtQ68PTvun_JSOIoNnvtfzxa4LCdc,1475 +itsdangerous-2.2.0.dist-info/METADATA,sha256=0rk0-1ZwihuU5DnwJVwPWoEI4yWOyCexih3JyZHblhE,1924 +itsdangerous-2.2.0.dist-info/RECORD,, +itsdangerous-2.2.0.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +itsdangerous-2.2.0.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 +itsdangerous/__init__.py,sha256=4SK75sCe29xbRgQE1ZQtMHnKUuZYAf3bSpZOrff1IAY,1427 +itsdangerous/__pycache__/__init__.cpython-312.pyc,, +itsdangerous/__pycache__/_json.cpython-312.pyc,, +itsdangerous/__pycache__/encoding.cpython-312.pyc,, +itsdangerous/__pycache__/exc.cpython-312.pyc,, +itsdangerous/__pycache__/serializer.cpython-312.pyc,, +itsdangerous/__pycache__/signer.cpython-312.pyc,, +itsdangerous/__pycache__/timed.cpython-312.pyc,, +itsdangerous/__pycache__/url_safe.cpython-312.pyc,, +itsdangerous/_json.py,sha256=wPQGmge2yZ9328EHKF6gadGeyGYCJQKxtU-iLKE6UnA,473 +itsdangerous/encoding.py,sha256=wwTz5q_3zLcaAdunk6_vSoStwGqYWe307Zl_U87aRFM,1409 +itsdangerous/exc.py,sha256=Rr3exo0MRFEcPZltwecyK16VV1bE2K9_F1-d-ljcUn4,3201 +itsdangerous/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +itsdangerous/serializer.py,sha256=PmdwADLqkSyQLZ0jOKAgDsAW4k_H0TlA71Ei3z0C5aI,15601 +itsdangerous/signer.py,sha256=YO0CV7NBvHA6j549REHJFUjUojw2pHqwcUpQnU7yNYQ,9647 +itsdangerous/timed.py,sha256=6RvDMqNumGMxf0-HlpaZdN9PUQQmRvrQGplKhxuivUs,8083 +itsdangerous/url_safe.py,sha256=az4e5fXi_vs-YbWj8YZwn4wiVKfeD--GEKRT5Ueu4P4,2505 diff --git a/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/WHEEL b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/WHEEL new file mode 100644 index 0000000..3b5e64b --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous-2.2.0.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.9.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/itsdangerous/__init__.py b/venv/lib/python3.12/site-packages/itsdangerous/__init__.py new file mode 100644 index 0000000..ea55256 --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/__init__.py @@ -0,0 +1,38 @@ +from __future__ import annotations + +import typing as t + +from .encoding import base64_decode as base64_decode +from .encoding import base64_encode as base64_encode +from .encoding import want_bytes as want_bytes +from .exc import BadData as BadData +from .exc import BadHeader as BadHeader +from .exc import BadPayload as BadPayload +from .exc import BadSignature as BadSignature +from .exc import BadTimeSignature as BadTimeSignature +from .exc import SignatureExpired as SignatureExpired +from .serializer import Serializer as Serializer +from .signer import HMACAlgorithm as HMACAlgorithm +from .signer import NoneAlgorithm as NoneAlgorithm +from .signer import Signer as Signer +from .timed import TimedSerializer as TimedSerializer +from .timed import TimestampSigner as TimestampSigner +from .url_safe import URLSafeSerializer as URLSafeSerializer +from .url_safe import URLSafeTimedSerializer as URLSafeTimedSerializer + + +def __getattr__(name: str) -> t.Any: + if name == "__version__": + import importlib.metadata + import warnings + + warnings.warn( + "The '__version__' attribute is deprecated and will be removed in" + " ItsDangerous 2.3. Use feature detection or" + " 'importlib.metadata.version(\"itsdangerous\")' instead.", + DeprecationWarning, + stacklevel=2, + ) + return importlib.metadata.version("itsdangerous") + + raise AttributeError(name) diff --git a/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..354a06b12b70b98ab87f2ee73eacf28dd1870bc4 GIT binary patch literal 1623 zcmZXU&u<$=6vt=%W4&H`ZO2KRq(to|6w*D^hNK`BDo|(&MS=+7R-nDC#-542>He^0 z#z`F|5<(o{#DPP5mVE@iWYf^Twr!m9 zWWQaQv`(4mk46zSk+8<&`)I6wt2w#Nq~LiwlyS(h=P_CIdq3alQhQ}WUa_$d%y0Dt zwS8_A+GDhh1tm6)h`s9vf!(4uqhY)QnjhJp3ci7(4rOtl+pG1px_y^ZdyA^;p+Qod zob2S1>i-=l#x7=&A9Z+=k(5+7Mq7bkzB(OBjByxAZWKpSS|4x!7Gp7U(n%)5Ax-jU zORz-v%C)$aQtV_@5=8p;}Upqm1-aIOy%EGhq(v$Miv$FG~?EF%HTE70+ zxc-+p|8VB1dGT@P;xV{IPKGVRD@k*~5}i@FpV3}c)YqedvzVBkx7C+d7Q&IcPjoTp z!2u_lNDTEu0E5Z;X0n`FPPwA@+f3Fl%gavwf|)E|R+ODAR7mXEwPqzL=v>`fR+dvL zvYV1}R>(`ts#2Jig3)Jz$Kk@V8L7?6PM*`Rh`lNKGIWV?BaBHupdYX`Fy$TLH=#R9 zYnnDh%P&#&Z**-apZXBJK13@+)mITUHnq&FXtgxg{GmQvob-|~ zj3kjk6pBJQv&f{LT_;HxDq@O?8pTDO8PufOsGK~(jhK|> z)7fW*rO6kZ#4+Oz;ZZZBPEACi(}-xZ&Ky}K(h-sev2Yfvfn);QSiTI@yGK<7KYTO+ zU=7LcTdhN_YYCu@HaqXLz_Z|LiRr6^iCK>b6+k@~lU9nAopb!$t40mxHF%Yj=Nb1N zF;OPGLWH--N|W9K3m3e4Q1arItVZEf{??=?pw1gm=RBz};RRAq5>^_a|Hs-`OjL9C$f1H*5YUoEfS{WvhTWse5=-4}G=~F-^A5kp&_c72^s!JhIrE7q2f^c{N3fW1 zA|o!KyLckO)2^AB=I8GB#757KJ@vKI!l~^6_w6+hTei!gWvJj9{EUj< z3(MuSol*-{E3r6}O&%VbGXEfKxfVYMCj5dD!(DV9P@;nyEVAwUA!#t*PkMYmTUo$; zzW=gG>YbOI@6)KP)I$BC$_)mKLem9EDZWQ(MHy!`Qm%yRk+=?G73~@`d*=|nCsI+VK?ug$ZaR{RU{sGtV?Dr~A88`tFT$yM5+}wNdMXOI4zNkJTxW3k4*nJa{o$Q;F#8sf z$ah+O7`odhytdB(X^%(ASz?bVOVBqP&B+m-kKLg_SB<0Dh;KX((Da#jlGPq`7X5Nd=*{(>B&kM>~ zBiv@f$9n-Rp*seOv@GwwaQb>(*NukQS0}zavHb4JY^7oEIeg1(SURxr#B5U+8z%sb`mt1zi`Ho+wH zlXki4XqkaT-*Nkni%mqrMFXKCoK*y67olN@?R?Gw=l-#?_cZE7A`aUp7zvfd0AYj>^sA`+k9b;Hu7agv z>c`Cs+dPxadPa8A%`=(^F`3q^L4sxg8#3>TkG$f}+D?{Oeti1<_z;UgOBhSk`9aql z>arFPuL--as8|2y{0u!VOVx|MZ94^j&ZGn3&NjIVQ!cxPbzd&{2QUj*kHW_(fbCpZ z?O5x)9y_`;dP9$%BNzC}@YkO#JC|NBx9=@C_LcR%rO{1Y3m>}K)VAK#S8nQCH7ZTX zQY88J&4#uM#gf_c7s9}9Y%8@Ns5B0(?Jh;0|7TMJ+FdTS`r)C2=xWoEhqY_<4M*Cv zYi(he7q$NM3rxNR#n9o`i@U_Y%eLd#;|_iQedXITPg-nXilvMQ~XVAZ>C@|LxtLvfR z$t+<55+o&f3II?a2jppBL=AO+AmLMG1QK0dG@YI(z@apqW-|1ui2Rz6J+hDyo+0LE zmXSc4nsRaSA7%_D@y` zG(429UZl%+koC$vddB7;S8x?6Ar+Hpqg?$XQf~CScI41>o)jEd=Vk;QI)*nj1IKREwfOk4-9CP1MB!WE=vEl`TP0u?aTP0ao#9(jI8yq9~>(m9IM1nEycDBj0f&SFn(4U^)JkeS{VQU literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/exc.cpython-312.pyc b/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/exc.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6c06cb49b3e31d865dd78c5a9cd661ddc547017e GIT binary patch literal 3937 zcmbVP-HRL76~80RNTXfthaEd>H~ttW*=!YOrPy^_5TV3P(vy1V;^e_{YUzeLJF>Eppd7&$zFvGe#-CM8I3+7T-sUd+&kyq zxgY2Je&-zjZE0zN;kmX|-TzIIvCrvc^jLAnIQa`YkC?|iqsdxE%`m8+X=Z9!wArTF zGHa&6GVDjpGmn^O3F}EV{AAZJtB|OL9b9TAs zU?c8?dkzn}jtXVu+~vv`ExI^tekwDqwu z&Lih1k-E);eIdh+ay+r;2SSw>^e5%Ab0DO`6}jgLuUd89E#LUI9;#<1u1UAV&p5e> z&L53OEJ_C-WP0plxVmRNF=C~Gevi57_g(hb*e+%Jmg=;H?AxyE2Y%$b{d`L(#rFlq zOeLCoauEyk3$9yla;02X(YB6r|HYk3BW#IEOE!4@S3*{93svWGpR3AUv3s*}AcBKR z)8DPMyHO(yzE!?)v!eV+Y_>5S>#K?%DQ{$g3hYyEcO?P$a5Zs3d32~{Xw@3Tm-pGf z?4<|!zuOo7wDzfe?djT;WAo$U35HlbxheG-^|fujfzBh=W4|Qr%yWlH8>*6_?}!Fu zVTwL=ByHKxV*R>kHeL6zA(x=l z2mQW2sLbJAi#!d`W?vq$XBpG7zbIy`tEaYMUDC(Xlj;~xA2aS5CvTziHLi@=vQz_a zz!D2AvHC?AE+e^dj{Nx={tX;%JMPe3fgJt&C zCZR1hq(+VzZ$k#xd%Y+|1RfK4%c|-ZW*t6K`Q;)`sIM_Wx0nfN<_HtL z%#$RDA*2B*FGs~9g{JUB7{p_o5ay=S zC9-d}znX&LgL`cs+3rwIVq;8sLWzoat4)b8YWXS@TM!I3?(Q+`E(*|zfG^#N$3DhDUKLAMbWdV z(Nk`IhRUQwm>z?S2~POnwUiU=p-RE}ejDf>4yZO@LX$lPY7Xb(6^>MpF_7;60(*DECk= zr-)B6`Hq9CIR07++JrkTU+F4Aud*wmyFvtd^)dXhlwLOF1D#1=sTfD&5?imKc@fs@ z9f@$|cpd2n`wpFrT5PGJkOsoQK^>mB3#sW~T8Ums69~jNXd=`!qivm1%^;FYp@|oH@%r zUA3&O=L{l7D@`gDsove|P_c-@mJHR;Mcp=B(KjMVm+2Q$Ud7d{u7xO3#W7v;N$*M^ zA4mMY{a##0e@{}?K#5HK9Ac0)4C6EQ`seKIXYBGYS2Qji`$L9icxBPpeE8iVLo>W| p-q?898!|M*ce955$=b${p&b_2jID>oAwx5~wT%AS7YvQw_$!=RckKWG literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/serializer.cpython-312.pyc b/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/serializer.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..19e7dda12e5da45e9ea1c7175a6f395bbdf5d4bb GIT binary patch literal 15405 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 Q{7cJw4j#Ihaz@a919!}$n*aa+ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/timed.cpython-312.pyc b/venv/lib/python3.12/site-packages/itsdangerous/__pycache__/timed.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..311133f9b6442b76e914fe935b0a918adf109499 GIT binary patch literal 8726 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/itsdangerous/_json.py b/venv/lib/python3.12/site-packages/itsdangerous/_json.py new file mode 100644 index 0000000..fc23fea --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/_json.py @@ -0,0 +1,18 @@ +from __future__ import annotations + +import json as _json +import typing as t + + +class _CompactJSON: + """Wrapper around json module that strips whitespace.""" + + @staticmethod + def loads(payload: str | bytes) -> t.Any: + return _json.loads(payload) + + @staticmethod + def dumps(obj: t.Any, **kwargs: t.Any) -> str: + kwargs.setdefault("ensure_ascii", False) + kwargs.setdefault("separators", (",", ":")) + return _json.dumps(obj, **kwargs) diff --git a/venv/lib/python3.12/site-packages/itsdangerous/encoding.py b/venv/lib/python3.12/site-packages/itsdangerous/encoding.py new file mode 100644 index 0000000..f5ca80f --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/encoding.py @@ -0,0 +1,54 @@ +from __future__ import annotations + +import base64 +import string +import struct +import typing as t + +from .exc import BadData + + +def want_bytes( + s: str | bytes, encoding: str = "utf-8", errors: str = "strict" +) -> bytes: + if isinstance(s, str): + s = s.encode(encoding, errors) + + return s + + +def base64_encode(string: str | bytes) -> bytes: + """Base64 encode a string of bytes or text. The resulting bytes are + safe to use in URLs. + """ + string = want_bytes(string) + return base64.urlsafe_b64encode(string).rstrip(b"=") + + +def base64_decode(string: str | bytes) -> bytes: + """Base64 decode a URL-safe string of bytes or text. The result is + bytes. + """ + string = want_bytes(string, encoding="ascii", errors="ignore") + string += b"=" * (-len(string) % 4) + + try: + return base64.urlsafe_b64decode(string) + except (TypeError, ValueError) as e: + raise BadData("Invalid base64-encoded data") from e + + +# The alphabet used by base64.urlsafe_* +_base64_alphabet = f"{string.ascii_letters}{string.digits}-_=".encode("ascii") + +_int64_struct = struct.Struct(">Q") +_int_to_bytes = _int64_struct.pack +_bytes_to_int = t.cast("t.Callable[[bytes], tuple[int]]", _int64_struct.unpack) + + +def int_to_bytes(num: int) -> bytes: + return _int_to_bytes(num).lstrip(b"\x00") + + +def bytes_to_int(bytestr: bytes) -> int: + return _bytes_to_int(bytestr.rjust(8, b"\x00"))[0] diff --git a/venv/lib/python3.12/site-packages/itsdangerous/exc.py b/venv/lib/python3.12/site-packages/itsdangerous/exc.py new file mode 100644 index 0000000..a75adcd --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/exc.py @@ -0,0 +1,106 @@ +from __future__ import annotations + +import typing as t +from datetime import datetime + + +class BadData(Exception): + """Raised if bad data of any sort was encountered. This is the base + for all exceptions that ItsDangerous defines. + + .. versionadded:: 0.15 + """ + + def __init__(self, message: str): + super().__init__(message) + self.message = message + + def __str__(self) -> str: + return self.message + + +class BadSignature(BadData): + """Raised if a signature does not match.""" + + def __init__(self, message: str, payload: t.Any | None = None): + super().__init__(message) + + #: The payload that failed the signature test. In some + #: situations you might still want to inspect this, even if + #: you know it was tampered with. + #: + #: .. versionadded:: 0.14 + self.payload: t.Any | None = payload + + +class BadTimeSignature(BadSignature): + """Raised if a time-based signature is invalid. This is a subclass + of :class:`BadSignature`. + """ + + def __init__( + self, + message: str, + payload: t.Any | None = None, + date_signed: datetime | None = None, + ): + super().__init__(message, payload) + + #: If the signature expired this exposes the date of when the + #: signature was created. This can be helpful in order to + #: tell the user how long a link has been gone stale. + #: + #: .. versionchanged:: 2.0 + #: The datetime value is timezone-aware rather than naive. + #: + #: .. versionadded:: 0.14 + self.date_signed = date_signed + + +class SignatureExpired(BadTimeSignature): + """Raised if a signature timestamp is older than ``max_age``. This + is a subclass of :exc:`BadTimeSignature`. + """ + + +class BadHeader(BadSignature): + """Raised if a signed header is invalid in some form. This only + happens for serializers that have a header that goes with the + signature. + + .. versionadded:: 0.24 + """ + + def __init__( + self, + message: str, + payload: t.Any | None = None, + header: t.Any | None = None, + original_error: Exception | None = None, + ): + super().__init__(message, payload) + + #: If the header is actually available but just malformed it + #: might be stored here. + self.header: t.Any | None = header + + #: If available, the error that indicates why the payload was + #: not valid. This might be ``None``. + self.original_error: Exception | None = original_error + + +class BadPayload(BadData): + """Raised if a payload is invalid. This could happen if the payload + is loaded despite an invalid signature, or if there is a mismatch + between the serializer and deserializer. The original exception + that occurred during loading is stored on as :attr:`original_error`. + + .. versionadded:: 0.15 + """ + + def __init__(self, message: str, original_error: Exception | None = None): + super().__init__(message) + + #: If available, the error that indicates why the payload was + #: not valid. This might be ``None``. + self.original_error: Exception | None = original_error diff --git a/venv/lib/python3.12/site-packages/itsdangerous/py.typed b/venv/lib/python3.12/site-packages/itsdangerous/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/itsdangerous/serializer.py b/venv/lib/python3.12/site-packages/itsdangerous/serializer.py new file mode 100644 index 0000000..5ddf387 --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/serializer.py @@ -0,0 +1,406 @@ +from __future__ import annotations + +import collections.abc as cabc +import json +import typing as t + +from .encoding import want_bytes +from .exc import BadPayload +from .exc import BadSignature +from .signer import _make_keys_list +from .signer import Signer + +if t.TYPE_CHECKING: + import typing_extensions as te + + # This should be either be str or bytes. To avoid having to specify the + # bound type, it falls back to a union if structural matching fails. + _TSerialized = te.TypeVar( + "_TSerialized", bound=t.Union[str, bytes], default=t.Union[str, bytes] + ) +else: + # Still available at runtime on Python < 3.13, but without the default. + _TSerialized = t.TypeVar("_TSerialized", bound=t.Union[str, bytes]) + + +class _PDataSerializer(t.Protocol[_TSerialized]): + def loads(self, payload: _TSerialized, /) -> t.Any: ... + # A signature with additional arguments is not handled correctly by type + # checkers right now, so an overload is used below for serializers that + # don't match this strict protocol. + def dumps(self, obj: t.Any, /) -> _TSerialized: ... + + +# Use TypeIs once it's available in typing_extensions or 3.13. +def is_text_serializer( + serializer: _PDataSerializer[t.Any], +) -> te.TypeGuard[_PDataSerializer[str]]: + """Checks whether a serializer generates text or binary.""" + return isinstance(serializer.dumps({}), str) + + +class Serializer(t.Generic[_TSerialized]): + """A serializer wraps a :class:`~itsdangerous.signer.Signer` to + enable serializing and securely signing data other than bytes. It + can unsign to verify that the data hasn't been changed. + + The serializer provides :meth:`dumps` and :meth:`loads`, similar to + :mod:`json`, and by default uses :mod:`json` internally to serialize + the data to bytes. + + The secret key should be a random string of ``bytes`` and should not + be saved to code or version control. Different salts should be used + to distinguish signing in different contexts. See :doc:`/concepts` + for information about the security of the secret key and salt. + + :param secret_key: The secret key to sign and verify with. Can be a + list of keys, oldest to newest, to support key rotation. + :param salt: Extra key to combine with ``secret_key`` to distinguish + signatures in different contexts. + :param serializer: An object that provides ``dumps`` and ``loads`` + methods for serializing data to a string. Defaults to + :attr:`default_serializer`, which defaults to :mod:`json`. + :param serializer_kwargs: Keyword arguments to pass when calling + ``serializer.dumps``. + :param signer: A ``Signer`` class to instantiate when signing data. + Defaults to :attr:`default_signer`, which defaults to + :class:`~itsdangerous.signer.Signer`. + :param signer_kwargs: Keyword arguments to pass when instantiating + the ``Signer`` class. + :param fallback_signers: List of signer parameters to try when + unsigning with the default signer fails. Each item can be a dict + of ``signer_kwargs``, a ``Signer`` class, or a tuple of + ``(signer, signer_kwargs)``. Defaults to + :attr:`default_fallback_signers`. + + .. versionchanged:: 2.0 + Added support for key rotation by passing a list to + ``secret_key``. + + .. versionchanged:: 2.0 + Removed the default SHA-512 fallback signer from + ``default_fallback_signers``. + + .. versionchanged:: 1.1 + Added support for ``fallback_signers`` and configured a default + SHA-512 fallback. This fallback is for users who used the yanked + 1.0.0 release which defaulted to SHA-512. + + .. versionchanged:: 0.14 + The ``signer`` and ``signer_kwargs`` parameters were added to + the constructor. + """ + + #: The default serialization module to use to serialize data to a + #: string internally. The default is :mod:`json`, but can be changed + #: to any object that provides ``dumps`` and ``loads`` methods. + default_serializer: _PDataSerializer[t.Any] = json + + #: The default ``Signer`` class to instantiate when signing data. + #: The default is :class:`itsdangerous.signer.Signer`. + default_signer: type[Signer] = Signer + + #: The default fallback signers to try when unsigning fails. + default_fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] = [] + + # Serializer[str] if no data serializer is provided, or if it returns str. + @t.overload + def __init__( + self: Serializer[str], + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], + salt: str | bytes | None = b"itsdangerous", + serializer: None | _PDataSerializer[str] = None, + serializer_kwargs: dict[str, t.Any] | None = None, + signer: type[Signer] | None = None, + signer_kwargs: dict[str, t.Any] | None = None, + fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] + | None = None, + ): ... + + # Serializer[bytes] with a bytes data serializer positional argument. + @t.overload + def __init__( + self: Serializer[bytes], + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], + salt: str | bytes | None, + serializer: _PDataSerializer[bytes], + serializer_kwargs: dict[str, t.Any] | None = None, + signer: type[Signer] | None = None, + signer_kwargs: dict[str, t.Any] | None = None, + fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] + | None = None, + ): ... + + # Serializer[bytes] with a bytes data serializer keyword argument. + @t.overload + def __init__( + self: Serializer[bytes], + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], + salt: str | bytes | None = b"itsdangerous", + *, + serializer: _PDataSerializer[bytes], + serializer_kwargs: dict[str, t.Any] | None = None, + signer: type[Signer] | None = None, + signer_kwargs: dict[str, t.Any] | None = None, + fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] + | None = None, + ): ... + + # Fall back with a positional argument. If the strict signature of + # _PDataSerializer doesn't match, fall back to a union, requiring the user + # to specify the type. + @t.overload + def __init__( + self, + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], + salt: str | bytes | None, + serializer: t.Any, + serializer_kwargs: dict[str, t.Any] | None = None, + signer: type[Signer] | None = None, + signer_kwargs: dict[str, t.Any] | None = None, + fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] + | None = None, + ): ... + + # Fall back with a keyword argument. + @t.overload + def __init__( + self, + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], + salt: str | bytes | None = b"itsdangerous", + *, + serializer: t.Any, + serializer_kwargs: dict[str, t.Any] | None = None, + signer: type[Signer] | None = None, + signer_kwargs: dict[str, t.Any] | None = None, + fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] + | None = None, + ): ... + + def __init__( + self, + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], + salt: str | bytes | None = b"itsdangerous", + serializer: t.Any | None = None, + serializer_kwargs: dict[str, t.Any] | None = None, + signer: type[Signer] | None = None, + signer_kwargs: dict[str, t.Any] | None = None, + fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] + | None = None, + ): + #: The list of secret keys to try for verifying signatures, from + #: oldest to newest. The newest (last) key is used for signing. + #: + #: This allows a key rotation system to keep a list of allowed + #: keys and remove expired ones. + self.secret_keys: list[bytes] = _make_keys_list(secret_key) + + if salt is not None: + salt = want_bytes(salt) + # if salt is None then the signer's default is used + + self.salt = salt + + if serializer is None: + serializer = self.default_serializer + + self.serializer: _PDataSerializer[_TSerialized] = serializer + self.is_text_serializer: bool = is_text_serializer(serializer) + + if signer is None: + signer = self.default_signer + + self.signer: type[Signer] = signer + self.signer_kwargs: dict[str, t.Any] = signer_kwargs or {} + + if fallback_signers is None: + fallback_signers = list(self.default_fallback_signers) + + self.fallback_signers: list[ + dict[str, t.Any] | tuple[type[Signer], dict[str, t.Any]] | type[Signer] + ] = fallback_signers + self.serializer_kwargs: dict[str, t.Any] = serializer_kwargs or {} + + @property + def secret_key(self) -> bytes: + """The newest (last) entry in the :attr:`secret_keys` list. This + is for compatibility from before key rotation support was added. + """ + return self.secret_keys[-1] + + def load_payload( + self, payload: bytes, serializer: _PDataSerializer[t.Any] | None = None + ) -> t.Any: + """Loads the encoded object. This function raises + :class:`.BadPayload` if the payload is not valid. The + ``serializer`` parameter can be used to override the serializer + stored on the class. The encoded ``payload`` should always be + bytes. + """ + if serializer is None: + use_serializer = self.serializer + is_text = self.is_text_serializer + else: + use_serializer = serializer + is_text = is_text_serializer(serializer) + + try: + if is_text: + return use_serializer.loads(payload.decode("utf-8")) # type: ignore[arg-type] + + return use_serializer.loads(payload) # type: ignore[arg-type] + except Exception as e: + raise BadPayload( + "Could not load the payload because an exception" + " occurred on unserializing the data.", + original_error=e, + ) from e + + def dump_payload(self, obj: t.Any) -> bytes: + """Dumps the encoded object. The return value is always bytes. + If the internal serializer returns text, the value will be + encoded as UTF-8. + """ + return want_bytes(self.serializer.dumps(obj, **self.serializer_kwargs)) + + def make_signer(self, salt: str | bytes | None = None) -> Signer: + """Creates a new instance of the signer to be used. The default + implementation uses the :class:`.Signer` base class. + """ + if salt is None: + salt = self.salt + + return self.signer(self.secret_keys, salt=salt, **self.signer_kwargs) + + def iter_unsigners(self, salt: str | bytes | None = None) -> cabc.Iterator[Signer]: + """Iterates over all signers to be tried for unsigning. Starts + with the configured signer, then constructs each signer + specified in ``fallback_signers``. + """ + if salt is None: + salt = self.salt + + yield self.make_signer(salt) + + for fallback in self.fallback_signers: + if isinstance(fallback, dict): + kwargs = fallback + fallback = self.signer + elif isinstance(fallback, tuple): + fallback, kwargs = fallback + else: + kwargs = self.signer_kwargs + + for secret_key in self.secret_keys: + yield fallback(secret_key, salt=salt, **kwargs) + + def dumps(self, obj: t.Any, salt: str | bytes | None = None) -> _TSerialized: + """Returns a signed string serialized with the internal + serializer. The return value can be either a byte or unicode + string depending on the format of the internal serializer. + """ + payload = want_bytes(self.dump_payload(obj)) + rv = self.make_signer(salt).sign(payload) + + if self.is_text_serializer: + return rv.decode("utf-8") # type: ignore[return-value] + + return rv # type: ignore[return-value] + + def dump(self, obj: t.Any, f: t.IO[t.Any], salt: str | bytes | None = None) -> None: + """Like :meth:`dumps` but dumps into a file. The file handle has + to be compatible with what the internal serializer expects. + """ + f.write(self.dumps(obj, salt)) + + def loads( + self, s: str | bytes, salt: str | bytes | None = None, **kwargs: t.Any + ) -> t.Any: + """Reverse of :meth:`dumps`. Raises :exc:`.BadSignature` if the + signature validation fails. + """ + s = want_bytes(s) + last_exception = None + + for signer in self.iter_unsigners(salt): + try: + return self.load_payload(signer.unsign(s)) + except BadSignature as err: + last_exception = err + + raise t.cast(BadSignature, last_exception) + + def load(self, f: t.IO[t.Any], salt: str | bytes | None = None) -> t.Any: + """Like :meth:`loads` but loads from a file.""" + return self.loads(f.read(), salt) + + def loads_unsafe( + self, s: str | bytes, salt: str | bytes | None = None + ) -> tuple[bool, t.Any]: + """Like :meth:`loads` but without verifying the signature. This + is potentially very dangerous to use depending on how your + serializer works. The return value is ``(signature_valid, + payload)`` instead of just the payload. The first item will be a + boolean that indicates if the signature is valid. This function + never fails. + + Use it for debugging only and if you know that your serializer + module is not exploitable (for example, do not use it with a + pickle serializer). + + .. versionadded:: 0.15 + """ + return self._loads_unsafe_impl(s, salt) + + def _loads_unsafe_impl( + self, + s: str | bytes, + salt: str | bytes | None, + load_kwargs: dict[str, t.Any] | None = None, + load_payload_kwargs: dict[str, t.Any] | None = None, + ) -> tuple[bool, t.Any]: + """Low level helper function to implement :meth:`loads_unsafe` + in serializer subclasses. + """ + if load_kwargs is None: + load_kwargs = {} + + try: + return True, self.loads(s, salt=salt, **load_kwargs) + except BadSignature as e: + if e.payload is None: + return False, None + + if load_payload_kwargs is None: + load_payload_kwargs = {} + + try: + return ( + False, + self.load_payload(e.payload, **load_payload_kwargs), + ) + except BadPayload: + return False, None + + def load_unsafe( + self, f: t.IO[t.Any], salt: str | bytes | None = None + ) -> tuple[bool, t.Any]: + """Like :meth:`loads_unsafe` but loads from a file. + + .. versionadded:: 0.15 + """ + return self.loads_unsafe(f.read(), salt=salt) diff --git a/venv/lib/python3.12/site-packages/itsdangerous/signer.py b/venv/lib/python3.12/site-packages/itsdangerous/signer.py new file mode 100644 index 0000000..e324dc0 --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/signer.py @@ -0,0 +1,266 @@ +from __future__ import annotations + +import collections.abc as cabc +import hashlib +import hmac +import typing as t + +from .encoding import _base64_alphabet +from .encoding import base64_decode +from .encoding import base64_encode +from .encoding import want_bytes +from .exc import BadSignature + + +class SigningAlgorithm: + """Subclasses must implement :meth:`get_signature` to provide + signature generation functionality. + """ + + def get_signature(self, key: bytes, value: bytes) -> bytes: + """Returns the signature for the given key and value.""" + raise NotImplementedError() + + def verify_signature(self, key: bytes, value: bytes, sig: bytes) -> bool: + """Verifies the given signature matches the expected + signature. + """ + return hmac.compare_digest(sig, self.get_signature(key, value)) + + +class NoneAlgorithm(SigningAlgorithm): + """Provides an algorithm that does not perform any signing and + returns an empty signature. + """ + + def get_signature(self, key: bytes, value: bytes) -> bytes: + return b"" + + +def _lazy_sha1(string: bytes = b"") -> t.Any: + """Don't access ``hashlib.sha1`` until runtime. FIPS builds may not include + SHA-1, in which case the import and use as a default would fail before the + developer can configure something else. + """ + return hashlib.sha1(string) + + +class HMACAlgorithm(SigningAlgorithm): + """Provides signature generation using HMACs.""" + + #: The digest method to use with the MAC algorithm. This defaults to + #: SHA1, but can be changed to any other function in the hashlib + #: module. + default_digest_method: t.Any = staticmethod(_lazy_sha1) + + def __init__(self, digest_method: t.Any = None): + if digest_method is None: + digest_method = self.default_digest_method + + self.digest_method: t.Any = digest_method + + def get_signature(self, key: bytes, value: bytes) -> bytes: + mac = hmac.new(key, msg=value, digestmod=self.digest_method) + return mac.digest() + + +def _make_keys_list( + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], +) -> list[bytes]: + if isinstance(secret_key, (str, bytes)): + return [want_bytes(secret_key)] + + return [want_bytes(s) for s in secret_key] # pyright: ignore + + +class Signer: + """A signer securely signs bytes, then unsigns them to verify that + the value hasn't been changed. + + The secret key should be a random string of ``bytes`` and should not + be saved to code or version control. Different salts should be used + to distinguish signing in different contexts. See :doc:`/concepts` + for information about the security of the secret key and salt. + + :param secret_key: The secret key to sign and verify with. Can be a + list of keys, oldest to newest, to support key rotation. + :param salt: Extra key to combine with ``secret_key`` to distinguish + signatures in different contexts. + :param sep: Separator between the signature and value. + :param key_derivation: How to derive the signing key from the secret + key and salt. Possible values are ``concat``, ``django-concat``, + or ``hmac``. Defaults to :attr:`default_key_derivation`, which + defaults to ``django-concat``. + :param digest_method: Hash function to use when generating the HMAC + signature. Defaults to :attr:`default_digest_method`, which + defaults to :func:`hashlib.sha1`. Note that the security of the + hash alone doesn't apply when used intermediately in HMAC. + :param algorithm: A :class:`SigningAlgorithm` instance to use + instead of building a default :class:`HMACAlgorithm` with the + ``digest_method``. + + .. versionchanged:: 2.0 + Added support for key rotation by passing a list to + ``secret_key``. + + .. versionchanged:: 0.18 + ``algorithm`` was added as an argument to the class constructor. + + .. versionchanged:: 0.14 + ``key_derivation`` and ``digest_method`` were added as arguments + to the class constructor. + """ + + #: The default digest method to use for the signer. The default is + #: :func:`hashlib.sha1`, but can be changed to any :mod:`hashlib` or + #: compatible object. Note that the security of the hash alone + #: doesn't apply when used intermediately in HMAC. + #: + #: .. versionadded:: 0.14 + default_digest_method: t.Any = staticmethod(_lazy_sha1) + + #: The default scheme to use to derive the signing key from the + #: secret key and salt. The default is ``django-concat``. Possible + #: values are ``concat``, ``django-concat``, and ``hmac``. + #: + #: .. versionadded:: 0.14 + default_key_derivation: str = "django-concat" + + def __init__( + self, + secret_key: str | bytes | cabc.Iterable[str] | cabc.Iterable[bytes], + salt: str | bytes | None = b"itsdangerous.Signer", + sep: str | bytes = b".", + key_derivation: str | None = None, + digest_method: t.Any | None = None, + algorithm: SigningAlgorithm | None = None, + ): + #: The list of secret keys to try for verifying signatures, from + #: oldest to newest. The newest (last) key is used for signing. + #: + #: This allows a key rotation system to keep a list of allowed + #: keys and remove expired ones. + self.secret_keys: list[bytes] = _make_keys_list(secret_key) + self.sep: bytes = want_bytes(sep) + + if self.sep in _base64_alphabet: + raise ValueError( + "The given separator cannot be used because it may be" + " contained in the signature itself. ASCII letters," + " digits, and '-_=' must not be used." + ) + + if salt is not None: + salt = want_bytes(salt) + else: + salt = b"itsdangerous.Signer" + + self.salt = salt + + if key_derivation is None: + key_derivation = self.default_key_derivation + + self.key_derivation: str = key_derivation + + if digest_method is None: + digest_method = self.default_digest_method + + self.digest_method: t.Any = digest_method + + if algorithm is None: + algorithm = HMACAlgorithm(self.digest_method) + + self.algorithm: SigningAlgorithm = algorithm + + @property + def secret_key(self) -> bytes: + """The newest (last) entry in the :attr:`secret_keys` list. This + is for compatibility from before key rotation support was added. + """ + return self.secret_keys[-1] + + def derive_key(self, secret_key: str | bytes | None = None) -> bytes: + """This method is called to derive the key. The default key + derivation choices can be overridden here. Key derivation is not + intended to be used as a security method to make a complex key + out of a short password. Instead you should use large random + secret keys. + + :param secret_key: A specific secret key to derive from. + Defaults to the last item in :attr:`secret_keys`. + + .. versionchanged:: 2.0 + Added the ``secret_key`` parameter. + """ + if secret_key is None: + secret_key = self.secret_keys[-1] + else: + secret_key = want_bytes(secret_key) + + if self.key_derivation == "concat": + return t.cast(bytes, self.digest_method(self.salt + secret_key).digest()) + elif self.key_derivation == "django-concat": + return t.cast( + bytes, self.digest_method(self.salt + b"signer" + secret_key).digest() + ) + elif self.key_derivation == "hmac": + mac = hmac.new(secret_key, digestmod=self.digest_method) + mac.update(self.salt) + return mac.digest() + elif self.key_derivation == "none": + return secret_key + else: + raise TypeError("Unknown key derivation method") + + def get_signature(self, value: str | bytes) -> bytes: + """Returns the signature for the given value.""" + value = want_bytes(value) + key = self.derive_key() + sig = self.algorithm.get_signature(key, value) + return base64_encode(sig) + + def sign(self, value: str | bytes) -> bytes: + """Signs the given string.""" + value = want_bytes(value) + return value + self.sep + self.get_signature(value) + + def verify_signature(self, value: str | bytes, sig: str | bytes) -> bool: + """Verifies the signature for the given value.""" + try: + sig = base64_decode(sig) + except Exception: + return False + + value = want_bytes(value) + + for secret_key in reversed(self.secret_keys): + key = self.derive_key(secret_key) + + if self.algorithm.verify_signature(key, value, sig): + return True + + return False + + def unsign(self, signed_value: str | bytes) -> bytes: + """Unsigns the given string.""" + signed_value = want_bytes(signed_value) + + if self.sep not in signed_value: + raise BadSignature(f"No {self.sep!r} found in value") + + value, sig = signed_value.rsplit(self.sep, 1) + + if self.verify_signature(value, sig): + return value + + raise BadSignature(f"Signature {sig!r} does not match", payload=value) + + def validate(self, signed_value: str | bytes) -> bool: + """Only validates the given signed value. Returns ``True`` if + the signature exists and is valid. + """ + try: + self.unsign(signed_value) + return True + except BadSignature: + return False diff --git a/venv/lib/python3.12/site-packages/itsdangerous/timed.py b/venv/lib/python3.12/site-packages/itsdangerous/timed.py new file mode 100644 index 0000000..7384375 --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/timed.py @@ -0,0 +1,228 @@ +from __future__ import annotations + +import collections.abc as cabc +import time +import typing as t +from datetime import datetime +from datetime import timezone + +from .encoding import base64_decode +from .encoding import base64_encode +from .encoding import bytes_to_int +from .encoding import int_to_bytes +from .encoding import want_bytes +from .exc import BadSignature +from .exc import BadTimeSignature +from .exc import SignatureExpired +from .serializer import _TSerialized +from .serializer import Serializer +from .signer import Signer + + +class TimestampSigner(Signer): + """Works like the regular :class:`.Signer` but also records the time + of the signing and can be used to expire signatures. The + :meth:`unsign` method can raise :exc:`.SignatureExpired` if the + unsigning failed because the signature is expired. + """ + + def get_timestamp(self) -> int: + """Returns the current timestamp. The function must return an + integer. + """ + return int(time.time()) + + def timestamp_to_datetime(self, ts: int) -> datetime: + """Convert the timestamp from :meth:`get_timestamp` into an + aware :class`datetime.datetime` in UTC. + + .. versionchanged:: 2.0 + The timestamp is returned as a timezone-aware ``datetime`` + in UTC rather than a naive ``datetime`` assumed to be UTC. + """ + return datetime.fromtimestamp(ts, tz=timezone.utc) + + def sign(self, value: str | bytes) -> bytes: + """Signs the given string and also attaches time information.""" + value = want_bytes(value) + timestamp = base64_encode(int_to_bytes(self.get_timestamp())) + sep = want_bytes(self.sep) + value = value + sep + timestamp + return value + sep + self.get_signature(value) + + # Ignore overlapping signatures check, return_timestamp is the only + # parameter that affects the return type. + + @t.overload + def unsign( # type: ignore[overload-overlap] + self, + signed_value: str | bytes, + max_age: int | None = None, + return_timestamp: t.Literal[False] = False, + ) -> bytes: ... + + @t.overload + def unsign( + self, + signed_value: str | bytes, + max_age: int | None = None, + return_timestamp: t.Literal[True] = True, + ) -> tuple[bytes, datetime]: ... + + def unsign( + self, + signed_value: str | bytes, + max_age: int | None = None, + return_timestamp: bool = False, + ) -> tuple[bytes, datetime] | bytes: + """Works like the regular :meth:`.Signer.unsign` but can also + validate the time. See the base docstring of the class for + the general behavior. If ``return_timestamp`` is ``True`` the + timestamp of the signature will be returned as an aware + :class:`datetime.datetime` object in UTC. + + .. versionchanged:: 2.0 + The timestamp is returned as a timezone-aware ``datetime`` + in UTC rather than a naive ``datetime`` assumed to be UTC. + """ + try: + result = super().unsign(signed_value) + sig_error = None + except BadSignature as e: + sig_error = e + result = e.payload or b"" + + sep = want_bytes(self.sep) + + # If there is no timestamp in the result there is something + # seriously wrong. In case there was a signature error, we raise + # that one directly, otherwise we have a weird situation in + # which we shouldn't have come except someone uses a time-based + # serializer on non-timestamp data, so catch that. + if sep not in result: + if sig_error: + raise sig_error + + raise BadTimeSignature("timestamp missing", payload=result) + + value, ts_bytes = result.rsplit(sep, 1) + ts_int: int | None = None + ts_dt: datetime | None = None + + try: + ts_int = bytes_to_int(base64_decode(ts_bytes)) + except Exception: + pass + + # Signature is *not* okay. Raise a proper error now that we have + # split the value and the timestamp. + if sig_error is not None: + if ts_int is not None: + try: + ts_dt = self.timestamp_to_datetime(ts_int) + except (ValueError, OSError, OverflowError) as exc: + # Windows raises OSError + # 32-bit raises OverflowError + raise BadTimeSignature( + "Malformed timestamp", payload=value + ) from exc + + raise BadTimeSignature(str(sig_error), payload=value, date_signed=ts_dt) + + # Signature was okay but the timestamp is actually not there or + # malformed. Should not happen, but we handle it anyway. + if ts_int is None: + raise BadTimeSignature("Malformed timestamp", payload=value) + + # Check timestamp is not older than max_age + if max_age is not None: + age = self.get_timestamp() - ts_int + + if age > max_age: + raise SignatureExpired( + f"Signature age {age} > {max_age} seconds", + payload=value, + date_signed=self.timestamp_to_datetime(ts_int), + ) + + if age < 0: + raise SignatureExpired( + f"Signature age {age} < 0 seconds", + payload=value, + date_signed=self.timestamp_to_datetime(ts_int), + ) + + if return_timestamp: + return value, self.timestamp_to_datetime(ts_int) + + return value + + def validate(self, signed_value: str | bytes, max_age: int | None = None) -> bool: + """Only validates the given signed value. Returns ``True`` if + the signature exists and is valid.""" + try: + self.unsign(signed_value, max_age=max_age) + return True + except BadSignature: + return False + + +class TimedSerializer(Serializer[_TSerialized]): + """Uses :class:`TimestampSigner` instead of the default + :class:`.Signer`. + """ + + default_signer: type[TimestampSigner] = TimestampSigner + + def iter_unsigners( + self, salt: str | bytes | None = None + ) -> cabc.Iterator[TimestampSigner]: + return t.cast("cabc.Iterator[TimestampSigner]", super().iter_unsigners(salt)) + + # TODO: Signature is incompatible because parameters were added + # before salt. + + def loads( # type: ignore[override] + self, + s: str | bytes, + max_age: int | None = None, + return_timestamp: bool = False, + salt: str | bytes | None = None, + ) -> t.Any: + """Reverse of :meth:`dumps`, raises :exc:`.BadSignature` if the + signature validation fails. If a ``max_age`` is provided it will + ensure the signature is not older than that time in seconds. In + case the signature is outdated, :exc:`.SignatureExpired` is + raised. All arguments are forwarded to the signer's + :meth:`~TimestampSigner.unsign` method. + """ + s = want_bytes(s) + last_exception = None + + for signer in self.iter_unsigners(salt): + try: + base64d, timestamp = signer.unsign( + s, max_age=max_age, return_timestamp=True + ) + payload = self.load_payload(base64d) + + if return_timestamp: + return payload, timestamp + + return payload + except SignatureExpired: + # The signature was unsigned successfully but was + # expired. Do not try the next signer. + raise + except BadSignature as err: + last_exception = err + + raise t.cast(BadSignature, last_exception) + + def loads_unsafe( # type: ignore[override] + self, + s: str | bytes, + max_age: int | None = None, + salt: str | bytes | None = None, + ) -> tuple[bool, t.Any]: + return self._loads_unsafe_impl(s, salt, load_kwargs={"max_age": max_age}) diff --git a/venv/lib/python3.12/site-packages/itsdangerous/url_safe.py b/venv/lib/python3.12/site-packages/itsdangerous/url_safe.py new file mode 100644 index 0000000..56a0793 --- /dev/null +++ b/venv/lib/python3.12/site-packages/itsdangerous/url_safe.py @@ -0,0 +1,83 @@ +from __future__ import annotations + +import typing as t +import zlib + +from ._json import _CompactJSON +from .encoding import base64_decode +from .encoding import base64_encode +from .exc import BadPayload +from .serializer import _PDataSerializer +from .serializer import Serializer +from .timed import TimedSerializer + + +class URLSafeSerializerMixin(Serializer[str]): + """Mixed in with a regular serializer it will attempt to zlib + compress the string to make it shorter if necessary. It will also + base64 encode the string so that it can safely be placed in a URL. + """ + + default_serializer: _PDataSerializer[str] = _CompactJSON + + def load_payload( + self, + payload: bytes, + *args: t.Any, + serializer: t.Any | None = None, + **kwargs: t.Any, + ) -> t.Any: + decompress = False + + if payload.startswith(b"."): + payload = payload[1:] + decompress = True + + try: + json = base64_decode(payload) + except Exception as e: + raise BadPayload( + "Could not base64 decode the payload because of an exception", + original_error=e, + ) from e + + if decompress: + try: + json = zlib.decompress(json) + except Exception as e: + raise BadPayload( + "Could not zlib decompress the payload before decoding the payload", + original_error=e, + ) from e + + return super().load_payload(json, *args, **kwargs) + + def dump_payload(self, obj: t.Any) -> bytes: + json = super().dump_payload(obj) + is_compressed = False + compressed = zlib.compress(json) + + if len(compressed) < (len(json) - 1): + json = compressed + is_compressed = True + + base64d = base64_encode(json) + + if is_compressed: + base64d = b"." + base64d + + return base64d + + +class URLSafeSerializer(URLSafeSerializerMixin, Serializer[str]): + """Works like :class:`.Serializer` but dumps and loads into a URL + safe string consisting of the upper and lowercase character of the + alphabet as well as ``'_'``, ``'-'`` and ``'.'``. + """ + + +class URLSafeTimedSerializer(URLSafeSerializerMixin, TimedSerializer[str]): + """Works like :class:`.TimedSerializer` but dumps and loads into a + URL safe string consisting of the upper and lowercase character of + the alphabet as well as ``'_'``, ``'-'`` and ``'.'``. + """ diff --git a/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt new file mode 100644 index 0000000..c37cae4 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/LICENSE.txt @@ -0,0 +1,28 @@ +Copyright 2007 Pallets + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are +met: + +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS +"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT +LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A +PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT +HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED +TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR +PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF +LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING +NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. diff --git a/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/METADATA b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/METADATA new file mode 100644 index 0000000..265cc32 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/METADATA @@ -0,0 +1,76 @@ +Metadata-Version: 2.1 +Name: Jinja2 +Version: 3.1.4 +Summary: A very fast and expressive template engine. +Maintainer-email: Pallets +Requires-Python: >=3.7 +Description-Content-Type: text/markdown +Classifier: Development Status :: 5 - Production/Stable +Classifier: Environment :: Web Environment +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: BSD License +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Topic :: Internet :: WWW/HTTP :: Dynamic Content +Classifier: Topic :: Text Processing :: Markup :: HTML +Classifier: Typing :: Typed +Requires-Dist: MarkupSafe>=2.0 +Requires-Dist: Babel>=2.7 ; extra == "i18n" +Project-URL: Changes, https://jinja.palletsprojects.com/changes/ +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://jinja.palletsprojects.com/ +Project-URL: Donate, https://palletsprojects.com/donate +Project-URL: Source, https://github.com/pallets/jinja/ +Provides-Extra: i18n + +# Jinja + +Jinja is a fast, expressive, extensible templating engine. Special +placeholders in the template allow writing code similar to Python +syntax. Then the template is passed data to render the final document. + +It includes: + +- Template inheritance and inclusion. +- Define and import macros within templates. +- HTML templates can use autoescaping to prevent XSS from untrusted + user input. +- A sandboxed environment can safely render untrusted templates. +- AsyncIO support for generating templates and calling async + functions. +- I18N support with Babel. +- Templates are compiled to optimized Python code just-in-time and + cached, or can be compiled ahead-of-time. +- Exceptions point to the correct line in templates to make debugging + easier. +- Extensible filters, tests, functions, and even syntax. + +Jinja's philosophy is that while application logic belongs in Python if +possible, it shouldn't make the template designer's job difficult by +restricting functionality too much. + + +## In A Nutshell + +.. code-block:: jinja + + {% extends "base.html" %} + {% block title %}Members{% endblock %} + {% block content %} +

+ {% endblock %} + + +## Donate + +The Pallets organization develops and supports Jinja and other popular +packages. In order to grow the community of contributors and users, and +allow the maintainers to devote more time to the projects, [please +donate today][]. + +[please donate today]: https://palletsprojects.com/donate + diff --git a/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/RECORD b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/RECORD new file mode 100644 index 0000000..85e6347 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/RECORD @@ -0,0 +1,58 @@ +jinja2-3.1.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +jinja2-3.1.4.dist-info/LICENSE.txt,sha256=O0nc7kEF6ze6wQ-vG-JgQI_oXSUrjp3y4JefweCUQ3s,1475 +jinja2-3.1.4.dist-info/METADATA,sha256=R_brzpPQVBvpGcsm-WbrtgotO7suQ1D0F-qkhTzeEfY,2640 +jinja2-3.1.4.dist-info/RECORD,, +jinja2-3.1.4.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +jinja2-3.1.4.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 +jinja2-3.1.4.dist-info/entry_points.txt,sha256=OL85gYU1eD8cuPlikifFngXpeBjaxl6rIJ8KkC_3r-I,58 +jinja2/__init__.py,sha256=wIl45IM20KGw-kfr7jJhaBxxX5g4-kihlBYjxopX7Pw,1928 +jinja2/__pycache__/__init__.cpython-312.pyc,, +jinja2/__pycache__/_identifier.cpython-312.pyc,, +jinja2/__pycache__/async_utils.cpython-312.pyc,, +jinja2/__pycache__/bccache.cpython-312.pyc,, +jinja2/__pycache__/compiler.cpython-312.pyc,, +jinja2/__pycache__/constants.cpython-312.pyc,, +jinja2/__pycache__/debug.cpython-312.pyc,, +jinja2/__pycache__/defaults.cpython-312.pyc,, +jinja2/__pycache__/environment.cpython-312.pyc,, +jinja2/__pycache__/exceptions.cpython-312.pyc,, +jinja2/__pycache__/ext.cpython-312.pyc,, +jinja2/__pycache__/filters.cpython-312.pyc,, +jinja2/__pycache__/idtracking.cpython-312.pyc,, +jinja2/__pycache__/lexer.cpython-312.pyc,, +jinja2/__pycache__/loaders.cpython-312.pyc,, +jinja2/__pycache__/meta.cpython-312.pyc,, +jinja2/__pycache__/nativetypes.cpython-312.pyc,, +jinja2/__pycache__/nodes.cpython-312.pyc,, +jinja2/__pycache__/optimizer.cpython-312.pyc,, +jinja2/__pycache__/parser.cpython-312.pyc,, +jinja2/__pycache__/runtime.cpython-312.pyc,, +jinja2/__pycache__/sandbox.cpython-312.pyc,, +jinja2/__pycache__/tests.cpython-312.pyc,, +jinja2/__pycache__/utils.cpython-312.pyc,, +jinja2/__pycache__/visitor.cpython-312.pyc,, +jinja2/_identifier.py,sha256=_zYctNKzRqlk_murTNlzrju1FFJL7Va_Ijqqd7ii2lU,1958 +jinja2/async_utils.py,sha256=JXKWCAXmTx0iZB4-hAsF50vgjxw_RJTjiLOlGGTBso0,2477 +jinja2/bccache.py,sha256=gh0qs9rulnXo0PhX5jTJy2UHzI8wFnQ63o_vw7nhzRg,14061 +jinja2/compiler.py,sha256=dpV-n6_iQUP4uSwlXwGUavJmwjvXdyxKzJ-AonFjPBk,72271 +jinja2/constants.py,sha256=GMoFydBF_kdpaRKPoM5cl5MviquVRLVyZtfp5-16jg0,1433 +jinja2/debug.py,sha256=iWJ432RadxJNnaMOPrjIDInz50UEgni3_HKuFXi2vuQ,6299 +jinja2/defaults.py,sha256=boBcSw78h-lp20YbaXSJsqkAI2uN_mD_TtCydpeq5wU,1267 +jinja2/environment.py,sha256=xhFkmxO0CESA76Ki5tz4XWq9yzGu-t0p93JCCVBVNps,61538 +jinja2/exceptions.py,sha256=ioHeHrWwCWNaXX1inHmHVblvc4haO7AXsjCp3GfWvx0,5071 +jinja2/ext.py,sha256=igsBH7c6C0byHaOtMbE-ugpt4GjLGgR-ywskyXtKgq8,31877 +jinja2/filters.py,sha256=bKeqjFjjz88TkHVLSyyMIEB75CzAN6b3Airgx0phJDg,54611 +jinja2/idtracking.py,sha256=GfNmadir4oDALVxzn3DL9YInhJDr69ebXeA2ygfuCGA,10704 +jinja2/lexer.py,sha256=xnWWXhPndHFsoqzpc5VTjheDE9JuKk9MUo9DZkrM8Os,29754 +jinja2/loaders.py,sha256=ru0GIWHo5KiHJi7_MoI_LvGDoBBvP6rd0hiC1ReaTwk,23167 +jinja2/meta.py,sha256=OTDPkaFvU2Hgvx-6akz7154F8BIWaRmvJcBFvwopHww,4397 +jinja2/nativetypes.py,sha256=7GIGALVJgdyL80oZJdQUaUfwSt5q2lSSZbXt0dNf_M4,4210 +jinja2/nodes.py,sha256=m1Duzcr6qhZI8JQ6VyJgUNinjAf5bQzijSmDnMsvUx8,34579 +jinja2/optimizer.py,sha256=rJnCRlQ7pZsEEmMhsQDgC_pKyDHxP5TPS6zVPGsgcu8,1651 +jinja2/parser.py,sha256=DV1iF1FR2Rsaj_5zl8rmx7j6Bj4S8iLHoYsvJ0bfEis,39890 +jinja2/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +jinja2/runtime.py,sha256=POXT3tKNKJRENx2CymwUsOOXH2JwGPjW702njB5__cQ,33435 +jinja2/sandbox.py,sha256=TJjBNS9qRJ2ZgBMWdAgRBpyDLOHea2kT-2mk4PrjYx0,14616 +jinja2/tests.py,sha256=VLsBhVFnWg-PxSBz1MhRnNWgP1ovXk3neO1FLQMeC9Q,5926 +jinja2/utils.py,sha256=nV7IpWLvRCMyHW1irBAK8CIPAnOFfkb2ukggDBjbBEY,23952 +jinja2/visitor.py,sha256=EcnL1PIwf_4RVCOMxsRNuR8AXHbS1qfAdMOE2ngKJz4,3557 diff --git a/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/WHEEL b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/WHEEL new file mode 100644 index 0000000..3b5e64b --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.9.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/entry_points.txt b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/entry_points.txt new file mode 100644 index 0000000..abc3eae --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2-3.1.4.dist-info/entry_points.txt @@ -0,0 +1,3 @@ +[babel.extractors] +jinja2=jinja2.ext:babel_extract[i18n] + diff --git a/venv/lib/python3.12/site-packages/jinja2/__init__.py b/venv/lib/python3.12/site-packages/jinja2/__init__.py new file mode 100644 index 0000000..2f0b5b2 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/__init__.py @@ -0,0 +1,38 @@ +"""Jinja is a template engine written in pure Python. It provides a +non-XML syntax that supports inline expressions and an optional +sandboxed environment. +""" + +from .bccache import BytecodeCache as BytecodeCache +from .bccache import FileSystemBytecodeCache as FileSystemBytecodeCache +from .bccache import MemcachedBytecodeCache as MemcachedBytecodeCache +from .environment import Environment as Environment +from .environment import Template as Template +from .exceptions import TemplateAssertionError as TemplateAssertionError +from .exceptions import TemplateError as TemplateError +from .exceptions import TemplateNotFound as TemplateNotFound +from .exceptions import TemplateRuntimeError as TemplateRuntimeError +from .exceptions import TemplatesNotFound as TemplatesNotFound +from .exceptions import TemplateSyntaxError as TemplateSyntaxError +from .exceptions import UndefinedError as UndefinedError +from .loaders import BaseLoader as BaseLoader +from .loaders import ChoiceLoader as ChoiceLoader +from .loaders import DictLoader as DictLoader +from .loaders import FileSystemLoader as FileSystemLoader +from .loaders import FunctionLoader as FunctionLoader +from .loaders import ModuleLoader as ModuleLoader +from .loaders import PackageLoader as PackageLoader +from .loaders import PrefixLoader as PrefixLoader +from .runtime import ChainableUndefined as ChainableUndefined +from .runtime import DebugUndefined as DebugUndefined +from .runtime import make_logging_undefined as make_logging_undefined +from .runtime import StrictUndefined as StrictUndefined +from .runtime import Undefined as Undefined +from .utils import clear_caches as clear_caches +from .utils import is_undefined as is_undefined +from .utils import pass_context as pass_context +from .utils import pass_environment as pass_environment +from .utils import pass_eval_context as pass_eval_context +from .utils import select_autoescape as select_autoescape + +__version__ = "3.1.4" diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5e7706830574a10e67a24fc68265b9ee44c7f1b1 GIT binary patch literal 1648 zcmZ9M*>2lL6o!XdEQ#88@22gzg%MapoODT%rl_|rhyx>TfM9M2ikwPJ$RRN^a->|f zcYTBQ75XfF0|EpJ^s09)g5LD1XU3tVhLC=I=btnCA%Ck@bp+4B7oUxODj@WS4ALj_ z4&MHtA@nnH5k{`&W_&Hk;EX0Y3!KGS#W~;{&MD6O`CtXFC|&_B;DX|UUkpmPq__yI zV_k6xxQxq+b>IrFC@uq6aaC~zxQ1(rtH5*MVEOrMLmy#%;w-;12F6 zZUJ|3S8*G-hkJ@UzR&moD(J& zbvU{;)E@d|zB*V+?Tid3qh+TT*sqA?ha;$&kp+ixyA#N*Uke5cT~0172NlOB zHnY@?ak)*8|F3@~vN^Y$kP0#t(B4q-Qk8($y!CEue<`uaiBBA1*%J{G?${A|lfOT> zH+b;$@WZ%ZS#Ic9R$Lf5YHF5+N@F=Gd62lgGy_|aHhjcTtdprjRMB!)lx|6i{L-fTpN?S@tN>@q`BrdSq0%Cn>tx8#wvMyx`C(JyPhr&iSH(!(Cv3Ua< zHhphsM(PEJlR7rJC&*EBTO!GymBo zvHy7MtsjQ)`PuJ(bH8>c6uOp!?>-CvGq=Bh$%mFgOLLDx?}z3?k-8hbH*F};jl#x4_=$;UNy`ZfkC)$>#@Q{ABYgc?XT;?(e|futEDGfifOOe9T}OpVMonH@5FWFcwA z$@0lU(oT|{hHR3JsI8J+CfgtzJ=s%gBHN5p)2Ak~PJ)~?IT>;gbyRY4?TQK^-uw!)~Lpf;vE3F=_Flc5f#J1TXaQzu8AGIb2SoAA)K$rSPHv9eGPwqMSkjA=HzLm`59wZldPw&&)I++bQZG-vGW87V$EY8t z!4?g684aG%AV-4(xDy(5Y2ebZLqm_z@Pf{9AI?9ciw<3&aB)r-Bf9WulwmYd$v+^! zKz@(>0r}_TPspFrxWj0Yph=1*X_}}Q0S7 zT;FC~S9v+f%PC$qc|~WuV)IHHGUAOqcoySlrx1s?YK*sB-mWm-9&k6yxVy*QXOISW9qytx*W>O0a?S_%>Hso= zOlQh;7FA}^XR~;g&Em(i_~|TOg=^0e2eZW4%x$rm+nM#Ivw_ZLgXy(mv1_Gu9V=YN z4n?6Q3LX=Mu{bP=!xM4T7DpYS$Aq2|`nJ#wCiJ=}E210~Wdx0+Fmy;q7*kQHF;Q_u zHO)kIU(^&PYH?9>nW!tGUKI_KiAGnMt6Ms7vDoS~3ZcO}c@WlCvqyrd*h`0yd@D3A9WTCNlt&K-)gS zVA~3`9r=ZwI2ZvROi)l0APq8LTNYH12W4P@nk+Vf>`O%#*&d9BHndWp?aAssR?W3w zay=kVlt(}LV^9pV0~slxaA?CEqOap3%&{G4y6jZPS>+AY8e2e~rg08N(%=9lx-&Hl z%%ecFwqUG6pta?8?LLs(wWopB-Gk}Yfhi59ybg>f4R-KwVs8xOeeU5#_ONbWF4zAI z;FIXR+-REpC$Tg*DqB2G^x$z{(O?F`>d%;n+2ueXQS!KAGz>%g4 zaEcIfKzE&K}r5@N=gc3 zq&Wb{l$29ofC|6^D=Ah`GO{p6E+|zKFx9PF9lxksJ>B}#&);5nHNO^lb?4rb$E(Ya zU{)75HX>^)X6RPFTmSRN@Pj9hBjLwu4;JtJHL@0dFS34baqa%%dic}GM|Z=YL{>ft zKU)4My!v$G!IPC=z5C0%;q~Q>2wO#b@qT1I{BU{Y;o{x!pO=>+D;vvyS&po|yZZFi z4}Saj$EFci-83Czua??{7c8U6_A! LK6+;jFZ$58WGw#w literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/async_utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/async_utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..e8d927f1117b11ba87de8a168192ebc3785a91d4 GIT binary patch literal 4073 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/compiler.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/compiler.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9ba0513c074638506635b06a617c0a505d36c3ce GIT binary patch literal 102253 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ⅆ=90G_$Rgo(NGe1(Wk9++lCu+3P=$~Md0Yu z=x|w2+aw-D3gi(K+V{v;-t5>*4YiLNicq}LOpdM#gM$G-hYckuKWM)_PYuO&m$8Qt zEB8jry|MDGbLCsdUyRre&vxLpd`Y3a*pkvDSBol|bZJmF9A*;2g?6&34QFj)Fc`&y z^dqUpo<>xylnJ`lbc$cHt~J7FA70u!Tg=XnWmiYDtLL+8BUyFRLU>cSF5+AtvGL>U z5;`IsIj|D{Ek-xZBt5Mcxx`o?^-pcon?s7349;CpW{$dTJZ2V*V-}TbRPwN5Ca0(# zhcKsgw%g@p0rNPZ*~PHw?MVnGws4t7Q?b{h4`GIfrIJx=uMS6}A4AR`d{T<;a;V=< z%Ce{qiPh6r^SL%`F$9$*60M?`=BR05vBfZ;Yb*`qKpJY*F=~0G9{M)M-eUemd&lBV z+pX+cy`4iCC&WABpu9C-sm9ntOTJWfF|~HsV={LtWQCB*%Dx%DR>%$3|2OBT@aIW6 zLcfS#f=$ZN_AAO!*>_6HQ5gY3+Neo2z506d3Z&Fpxd!SlLf5Nr@{^D*mjr8)U2ybn zl)tFIIHyU%SAfZQ8#|-&cw+K^%_^k)B+pv*eXAU*{;C8VgV?Tqk)M(vcFN)EuNLAf z;DsM*@WQWXHjbt1w>ab{>1Z*hmUIT>s_nJnoJ{?yb8^hCUn*86mzMef+-|j9<)=|Q zT3Esxtd~e4pLC5XqlZE4Px_2kbtGK-6HrWs-h->b;Ct)x@A_CRsdR^R;+ce$_j42K zaC8NzyacFK>p{An-5@leRY+E2?83P&Zq@>oa)|oNj0mdKclk-p@fpLU>Dnb(A2BIi z5QMArW0w9p0fsMo#V%svuAgjV#uL!oCvx0V%UxYFZqk7h+WSUAetxX;H&F!cR2WLj*n7oM+J3Q|8j5H- z?$3}hk~n0lo1K6|=Q#;Dt68dDAa2G9fAMrO9Js>ROYuKYOw#R%XGz{Wxrr&2T>KV& z{5IXj={7|-Cedo8Oo^M|vMr{Dz7wzU;-TRHcq}qfr4-0el}-;NH{|@3pS*sY6|Vt+ zuTQwfW74sB(GX6Q(2r}Qynadf@4*w8?Rt9l(2W?GcpB>|vVn~|;rhIh5tS+Kzs z&k0=Y8S0b<22Vf0nhob%30K4_O8P3L^f=WZRc#srj}t6-@&y=lSLa6h+ns{MOy<7p3y%g3Gf%PYU{ zkJzxWl{IepSs|1M$#dk73!5g6j31oLS#)NG)`^=ZVx>Eyr8{Sj%$H(w>(F9D)A&)G%dsdWIej6rwebJH_@c)qwPQq&xN0t#j$cSdG&-+MXY-OJAMz1y;2J1Xf*Udx~}JfS!_ z*$TU01j_2_3$_Yoc3B^_)nnVx=DokXv$6|rG+%G#T+{TycaPjYGN0YdH(1G>;`DUR zv~~KqNXdo;$404g*G?>%(lQzsi_3|74x8Wa;>NA-4MZDuMT>V&rlL={{B*i{I&Zpb z>cs^YlesWQ_S0zcHAo6a7e^g+(}4v?BPD!%;`n#lmMYNMOKzreUl+C2VeC=eoDDJjz5nJ_wZJ(ynGd0*MUa)PY#(@^)waf=N?V%^)tcchu ze)+lIXeg}uxgmuQm7~{>E}2Y4>(M3HEVkdY|EDx-UjC99pa1jc2aJZ?@}Cz5<6$ESWE=m131rQP_K5kk{$HDG z+w6vaxwW=!tLb0aYuh%N|J6n#-M4N%x!(G(*BNmapTV3?U`|QiiJ2)MJp^G3Ad)Xh z5l|vvv|shMJ9QKQ&06+UPv$_LFlBFAT9y^$%9qSlCaVQ2V@0i_W+8>lmzi;cU0Y`U z493TTrQOCPziIlc8NSnTGm3OqO-1^m$ZZq8q`$3E&4M>+duW$J3NWlFt=vpkNw)I^ zo>h*@faQ*gJ-zIZ-~`Pb+G8f(;^86O6qOV(k6O(g{ic(fNm5cNNmNoX#VvH~Bws)a zF%qgooQ&DMT zdA2dDy|}R{RD6Ocqz28VRugZNCO2uZG=$6^Je4(Li)}hQx9RYF*^&9&BjaiJo%xd^H(t8_()6WpaNY_3 z3-|4r<0IVCvnuMWnzvU^zc6Qq7DV1u4o+nsXQ&xQLW`LV;oPuo#yoR$W+(8)Ue}_l zDCY7+U7m=uDSRM25?gyTy7p+qdmLX+7!y86njTxSnlg?Xe_^(y>FnYVeqcD_8+f=u z`y{%1IOGHX;wxQ+@K>@%O(dw*|N4E?+h!7cF&6^fQ_?9u?hC{H*vo}YgTQR#hX!F- zM8|^2Q-R6<@~# zwc=OAv=l$-k{QC@)T9r1mA~m=W9(qD-moySsI_es1hWn)DF_C5P(A<_LRFIhQ6`C2 zB~;=9DlyVgw$O1a!R+A&AfOlgNP}Y(CRL|4!2IEw@#pap+L*Xo3q!A=PPn7-^~ug$ zba2aGQt!}AWw-^peP!uCbsxO$n6ylGlej#0{KDk9sr)J1f}`>$?t_v>TyDNGZhTQJ zMe$%u!Egg(EbJ^#Mtt+lDtYiQYTCw5Z0)>wDRBg4FE1#LyH0QwvmD|tsN5|mH};is z3T|w_z8#8bW$6#xweM!!&WO3UN8Q`!-8*CM{ZaS+1@}QHrj?OmT5kHd4a9SH?&Oil z9aE2a|Kyj2g* zjKcX<@B!|JQpWHQ)9*#XYEA*U_ z8?>0*M^&{agu{My80Qf4q3dU^VYoa;a)cxuGD?MeUOjMuABF|)UMZ9^u;BY%IRK5V zpK9i`ZZc8@Z2%z-kzF{njV-*A2Q4KzRdaoK;2f#_XzQRrwE?yM41L0PS{Z)jsFLN` zDK+gf({u4jbVjHlaU`xRKY2jIvKHB3SY|Rlt}JRRi`i)qf=s(BDz@X>SG83G;ZwDqjg#5Au;tY!5qu0-+hi=2^!oRTe9Ntnoeh5||%P zefJLUNezo8;RbeB$=eE{Qnf8)1w!dyO!WgOXIUmj1CUF=RNTsr|D*G8+$6VRb5TOo zf+}C+8g&}%FRnq6^Bbr24~4b~vLC^*L2GpH&vvJ7%km+G=CArl_qc{Nz2`rsb3eH7Ofh z{|)mgu~wH+q2x&t&m*De@;W8;pDxgUqAKwzqp6Z7YQw6;J%S}L*-C}nsM$&##b*Uq zE}$WY^_KNW@_OqeWhYIsLuH8rF6r|lDk|;Of=YDe#GFl0Fmb0K)r{EIt=S#KPHG7oq%3v=BDE`Z7}-b1GGREc;A!MPV#&=Oy!kI6$!+=S3j`SPmB#1CzJ z{6AC|qN7QZDleAhjb?enVl-<5l&b7mlh4fA%NKJ>7qbf|3#SSr&Z>y5YB`BuMSM28 zj^lxK269fmWXz08t>}qHMpeX&zHK3fvn`b7#o>vtpAs7Q282nxO0^xL+Y&NKm{pk^ zR_@GDX=3dYznW3zKogQc-AQGnE}C68pWOg9FaJOko=;%Cr&1=^DN!GqX3Gx{2+O zE>Is@62*In4G-wf{0v1{HW1jeL$*9}r%WCuJ2=#XaZm#lB1vhvr=y%> zHd^lAss5eXd$xw@c$W6g?b*X8Su0SE^Zc07r3OEpMOA5p*^vO(Y zaGF{SZ14s3|`C{MFfQ%m2lS^L6Tdu zD@bak>{68&orqn|HScl7cd_`?;-Prjw}%C9KWK=o+t3T0j?uEwyN8Gq}guTgB!s8=a{3I#K$ z5=dt9Fc=cah#bP~!KBUD09>zIH@S;Z>(^XO3?=kYo;Icu%!H&&u=&U|=6O^s1A(z-1}>~9UL54xz&&;!Ks$%Z z^`WE!G>8uY;E6K7`2@w?uZuEz|-cSsce5L&N8w4A998v$#x_CH5SBOk<&Nmo4g<+~yEXoxE~Y zCavzvL0q(OaWh?U+<6Q*GKc~ z!pid3Aq=W2uY#NK1Zh-W(_)BpJM^@hUj0n!-xBqifWt>u$k3+@T~ z&T06_sFNVTK%JOgNqr1tyG(n$YE;i50FILI7UC!uLUm{p8N)&K8M_>P=6=hV1!hZq04+K-v<0k-$kbiIoGAl#?N>D%<NF6W=HkkYB+VTX6LS&boDzaQg^1%*wG{#;y8QZ2u$zfjZFO$TcojBxR-MunB16hOlnZb;$_owp2d`Q!Z^zihx&nE?gm|PAAP#JJn{) zA=pRlXx(+Ac0E;PC?YGWr;NtR7|TR@dSlcvnt@e6V>A=@%uxrZS!Hw@4cA^=A(nI0 zuD~nw4B)@V=qJ5=Tu4c0?qU~Mp$XXx(20wf>zB8bkR|sGQ7z1&QqJ2J!IY%1N-7gc zm)yoIzs*S>@v43gfZk(?d2*e` zocb+4>O^e|6532Z_5DfN;Z-Y46bdoIOr4c76rQV;XWJDcIW$8Fh|Ea39KhS1%IqAq zG0I)1*MuUuE-a;ENy*?<<=q&>2^|RC)=fzF?l!(D@u4oPZMyA*(DlpH5GqDp+WfUxXcT5bvSu3_ zM_<&FUmXi&35BCsosDw2G#DvO7bCglaXpqTU zV~u9Xy~%RZ!(|vBUj>)JrO3A|a7m~qO%du|qqV>-HIe2=N6(0y(dglt`q3QpSHs(& z(X}hI;L*)-4a>1Zla=(SlVk1*IW~^wCQ=tL5N>J<2~!N{?HTCxZSX37JJ^|8ZYC*+8$v}*S|yL&8ikJ#KW@t%%H&(b zkhBLc_jLK=MjYtEQV!YN{Ddwy9Qk5bG?Xg8rV^J9aR)Rtp#u{tq7yBG5D-8;lAGS| zmVU*@z|=!vPcCBl*5}8lSEvke74IJM8Ch~7p7u~aMD!4AcPj2-cDu>Twn*MG9?@wV z$={(|L$(|Qv?H{M`{ibJNCNayd9e+N-36H6V`E6kG_;$wG?N-Zd<2;~HjBS>>>VLH z&y+=#PBQDnPCIS)#;t*2sAGt?Q2J07sxAv;Sa3tg*2LYCcXHnbE{#A4z%Py^>p`Isl;ybY@K>$ihg87|rGgcQKYaO45Z-Ysr`JQ_|B2}rrn}xr z|M2C16#J-qGt}eeP)CnfB$uJ$LAntofn81R%to97w0M(lP`!s)72TMY6jKO%l3*>+ zNf4Nm{dj6CKN2r)qcEJ9*C+lNrMXDA|3EiVIgLAxvf1w!+Au%k>3q7eSrESk^RId1!Rw#I*BtA&fbn7t%wFNxV}=Ik~1%c`f3gkOr*?4B>%Gtu@l zdYvz89&aNX5vK9BX(ss5$cH0$%jdT~9xZr$!S)2Cn}ww}UjB`juV+V^4v(ks_mS%( z@8rE(cDro8VC_sWQm}KJj^@iRzH#>Y*>^U-yYu$WALp$dZ>8gWLKC5>_FK>1d^YNA zAQ@ZQ^|Yx&)0^MjaeK$KcP2AZy!US2pO=18y5MSCgk4Vyc{ztIQ~J&HIY%{o^X0Ew za!?WA5%8TevD&TC+O0n>*fxH6(V5SMuHoF6XIIp-YtFd~u6<(p4bl7t2og7Ljcq(0 z-FSR{V_U@4Hff2us-v#z>4Q;MLwNIIPX1K&^&K#;Vty%3&s5G=ZMuF8-ir>B2~^wl zw&^qBEs%jW%x;{moekb?y}LD1ee7QDanf|B&rgLxXQ zzN8>HRWP0VZqe5NE$cfqz+(Htaih9eUrQ~8inMlvfSl{;p)%r@Muia1(7eFC~Q zX$7AfOlj#H9yUqrkc^m(Hbxh0rJtw3&TR6+_nfdYvuC~8$xXUu(&qDaMD05i;qdxs z_WBv@$V;9cNu=8~btY1^H&U{1!LeV*ZmMx@#I_cPp=D0xy;ZSTyMC_r@!6W#j>n@r z9*=B!oLO7_#9koDhhf9B;Ml~JO$wv7!l^tMO0l%mDn1B&~=zjlJbRY!BGV>wN8IZd+Yw&Kh^*OTPL3gYL*+|!?% zO>pgm7Gs8M%E?hvV+$@goRQs3anq@(tm&Fq)i(I=kCbnV7HwZ}>_AM&iQzFaR?-wL zX^NG2CytG`Ox8+`AgMV|Jsq~(?3~YOj%0fy-ou}!+`aOt7=h;-7kr;&eNGOvxZE1U z8U-hFV z3Om63%2>W9n(v9_?~LZ}oINz3e~=5y$pIFO#3FSEBNZ(RE=;-nsWnlk86?FxJfGi^ z6l3eGW#-E4l}{~qFMW!$uud+x9$$16#2gh-M@7uh6m>L(&ydxcyM_wKP9VTYBA1#D zFRMr?Of{ySU2u5V8}!7g_`K%d-#9sO64ru`-Fz%;r{O|X=P_nmB92lThrI27y=`f$ zp>*xi4l*Kxky^C!*lh4eFaFVs^OeWu3y+P<$HYvPOrM=TIkO>Buw~Xao=IkF1;sb6 zT)z^nI1Ie?^6$SqUvYT8;PAL|qF>qcXryk7_FOJtQstsOeR_ZRIPPS*z?@_%pVbHP z0O)TWNrY$|G2x4j%ug_0Y{80Dhp(w>I`UJJk~!@eBwg=G@8Er4K_=OI8TC#T5lQl) zXbq^zsFJ5K%K%9x6@3B~M$Uyfve(&n7N1|C{G@-N@3v4+tBM!^FexF)Z#>WCS8z=E7EkCoFVT) zQa<-d2PBctNZDPc8z(8r)=n}*=4JcKZI4Ryc`?R^F%~wI4+t2z%Y2rXlVQ(>Y-c_0 zUAx`ucZ3>O^Y(bk|H5z&X@PMYi;#oydCc8ol_ylJ;q+vtO3uJ~_Sto3xiVd-l*+Gg zbxDwnM~z$AXY7MBQkPM=KS8^5nw-dFIFTg(WP39g_4G+AId|Uq`p(7tV!m#LYv=RV zO&oqe?`xv@Yv%Kt#t##agAEgv2I@aW9$yS7Nl(N8xmIItkGV{h2XNn6v4 z*}G?jAN73PGkf;arikk)o{KcI z)rO_e6mI|EnLE#fPt4}cUY_l_`$EKp%zj}u$;l8DJLV^vQ!}4a7s;-NabZI>{9L}f z{r2|h=J4>$Q!__rPr+U}Yrhc$hwd`Z4(d5S4ZqgS(n5!_aii+VGxu!#G?RqQV?`S@ zjKzjFk9*N=$ycBhQyl%3d@=Jyouw!NHKZiRqO%U!QY9c&9VIs==C|v_(x?<6rp^K+ zqcDa}^it4ls_Ew~rmI`ga%!*ArlF4TP5!=OZVAX3Y2+-g6A-P==5!KbELa{79;gg@ zOA16MsajPdKIU1FjRwHRWsMAVknU77QGD&6xzHR z?v|1l;O3<-*fT^HbnqY?0N!p)60AW~qLEB`NfBLMX&SiB(*g8kXgi^Ck`FY=k~zLA z=t%1LD&S>ClMQewye$#wdtr(Pn-6j?)4&sa_N+%f#8WC9OTyF6ma#TZCSMp7S&PV4 z2ewWyu?;N|;vC)BGOz(pahqHTk#>vtB0)lwJJLbx%36>hriy29WZ%k#9?5ob2_OG0 ztpx_Y7Jz+!>GhWgdmWuP8p&_DEByJzPcAMvPJyK%Ly_{Ry?i=r&R&K0+`?FnM`GQW z`cLAiy-0&_e95T=$7xApiq@6;`BmQ=h`4HqYh(U*6;T8-Td*AiTgeWK+;n62_1)98 z@Mj^1oZ=oWCda1tM{?lkqMkl5A;zf%+i7}{xn~~w#DeVoLjAjoi>G~ zj*h7;nX{Ely%4pzf2@a}i43HX|L~uHXMvw}&BaC97**y6prtFxI+bvJ(xu`s0g8wT zt|fFZb1+?wuBYT9V|}sxi_+0^1ED(ZRnjpF<}owQp;1U-)Ly4lx~VDTYf!OztLChGl)73A z!NFM4D!G2@uee#idsr#fE$&18H0yPt zwi{FqK zv0eNK6>akr#4~ZC1-z=sX80;wDLzAO_Q%v7c09$c2Vn~z6rZQi0NsLg8^$eeZ65{^ z6}KG6DHi;M1C^{Gq9g8L-n1o3hdCJL_G1Sr3C5G^a-#7x+6iU)*l`zg%*J@(PFCk6 z=2Rw5j`DNG^obMcV;UCTz9W8EtKd|83xLCU8dfNT05;!|yp3T-qOV|FO_J_GMWeZt*7fYM* zF{1#)2E41iZ~ef2$NqyeA9Z}#5vkv|kg@<9n)X%xbxOUzz6XD^i^F5_!W4Y}CT zh~+j$a~s30^SK)$IU8p-!f#I2Hn`1U!t2cJSVmbiqb!zDHx;eOsqFk z%Vxyg=>PuHZIbT6C%qUcZH|XEtB>O}>D* zv~i@*D%k}DpR9?ggJiL=>o7h^h*c+dI%`>vAi}~9e>5tJNBRokrq)2*NvA36mS53T z#U4D!LO|){&IlJGEp*t&geA_VUE)Sa=S3$qXfA(YSxARjtrhf6>}`)yI5rFwt6!V>rz4x%BkgA*t|v9JEx<;KAOVXt?};|=nY}XKd?eCz z^wXk9!RdPr$wpT@jcAI{`@@&ebSq9heJ{yhdV0wN2~*VgHr({fyaA{flis9a&KziM zOS+&&sXKi!3C-H!y23<(y6_j~yh}d^z3ml2k#GgvD@-)nNYOzzC@;7Wxm6%ePo;kz zTPXj@9ykjlIXd&B!UrfwFL(eph}Y=$9lE`a+oKhXw1l2Omrs;z!rO3G5tB9CKudBZ zhi#MqlUOrSAc9w%#Q;m{V1Q@=@rMXV6fQWp{NN~46iGfALHiA+hlaqL$cb6|5?el1 z%NOIuXmMk><%45)j?EWuixh32%~94+E{c|h`Bd3-@ZA@0zc@WO(;g|u z`Km+vC~W9MZP4&-(~5&%b6mj+cry_~cUnwnh8`VAg1;4ym&O5lwb0J8sz)GOB*Zkc5Sj@TQ(2|w%*Vx9G2!lcKv>j_yCoV?3t1}TG_u^c+-3zn~$gH<~P(6Txr zTbaRwEffi1^OEoZUV%(7VCe#KVV1>jTVQ9TyHbA5a@yDtc>iy4-vSlab)GxJ%z*(0 z7?|M=;vo8T71as`&N1rlBsd~XWxb^u^eQbSO=VF@9%w4F z9sp`irhJOU^&MNOR)4HcjR`cBiP92%uW&pQH7_#O{7mtgVsA;n!KHNpx%eHkY($5ea36?FRBe(EHX2bs7RWFfN@uGV zW0CVy0exA!8y%S>+DS`i8~&Ca!|gSzCcBCrS7lcLkw`ONB1+qcDKzVkt5j)M`2@NK z(xBQxnPdU72_H}v#dC~$*t<=djfHNl^6@#Q@0%T) z8k>4D_;`p3-NkCwM{Cy4w9nOaMyk8!J>74g;qtJ**0jbde}e|{n{>NQqv=(TDKv3N z(wlDa4Ifj?p!FxIZTETIavr^`t^V>js>68-jB#M17uYGqlk^5VrC^kUlYY+8jWoTv zLCW8t*Z^+cER*17JQFqI6nH#OAy0;U`~g4VxQf@}893kTkTrzWybg8RgY37FUPzr^n$(5@$ao#)ev>3w*O3Z{78SyJ9{2 zqCNZGIW*UEAkuv>Qgvv-b@)bk)y1w0T}u`|DVA&q@uQ+(%7N-}i|LUX*qEOQTysaN z$TaYllZ zEt+EZVv(vC?ztEHDM%J(TbzPJd^!|iRAVh9u0S*1+AS6=#lU?Lz?fgR$!)()I&CKa z$mZ)=s~;8>d}&EXEJWR!E}!jneLa*^I`U~82KynDt=sqTr9*ecDq6R6kC7rfCMqQ+ zSi#eMeuC#0-X(th7r#pkfo8q?whxM=%mhrknZ5!w)p*t+O5-z>8V=KLzMD!d= z%ruoKkRzM2%HPLYFE|oX=|SkO+dsoMvy#4PIj+$(dTsH&8vU0V8`lI5Kw)Ilc3UL( zX6PZIcDq_@M)hMiV!n)y5K#|t?F0uhV2ffe4eC|*Qw9-5cIkAb)$ZgqsyMPZ#^G^U9%oaehj{NQLal2Zo9;$r`yBC{5F_XQD z4SK2?^OevZ5W7-0(mU0sddO`&A$=w4+M_>LW4=LqW&SLYGp|_1jPBo^W1=gl9-W} z9W(5i(J`&4JR@ckVh;vUf;XS1o$`vL9uvP|dqC|1uZ(Uwy5*zndQxi>Z8}nA&uc_LQ{HB09W5NTX9<9||KT;^}bzlhS ziNkizXT#m1_1eI0#%2%h?2RXJ2`rRtBrjfKBi)VQXEcZOk;`$_*6uPZUT1iD~ z1G#q=^t@sNL|7-M#k86TICV0KJ>DDD%j_(zeU|wkjvjg82Va!!3i~@2ROptS@7%A0E z{{M@OQq{tUPsEtGQSAdZ_VaTMBKjP%RgmNe7F=O zyMwaIv-F`f?!x6;c+Y4GS?CW+;TMg{0-oJ##5cnT2@w)TS-RDLfSsg`_d~Xb{5q(9HmLy3iY1vbK)u$mhup+6tT{mOhFge`wvadV zfO8+-f#eYxacE>>Tx5TnRVa{cXbZPcu&PU`>r3NC=Bg2_&d3r_t?i@e|%X&1_xh7}3!Bz1b$ND>KI# z&m!RKXLds3S*$5Mo})_Ivks0ss0*3jO&5zD8$L;WMM7SzzHvA89dqB&4{HL$@bxk( z`>E3yQsk#qLFC5!d*QIaf!WIOLvvAmUs-@7zYpPhDT{ zg1A(ysxw;EIak#Uxv7-d6$Wz9cX9Z_aHO$wZbet5vU|2MQr>&*&`%zI`{8-#evK83 zh@xwIWZns{YTT-4J6B{5KQg;vuAF()R9!ClcqA0yt~*KXAC6JK%j^Zb>sbR!tWe}9 zH?14zpb215inuIU1bBT458RPL;kaZd_(`01lj5w0X!C zP?9>CdXnjbu#+9KOn~_puDjZDrR93l-fNzpl)YUx`xp*QGE2Et20#ZNK?DTt2P5p5 zW#)c9Xw(ZTh^fG;Ou+q6hTq1N;Q@B!3D%U(1UaD?gA#Z@#GDOLXG2)Y%~c!q*A9oa zalL!$^)09X*ct2Si+1!aIQOF;ohz1$*#OV;1CxIMd3XB* z6A-3EenX`Kzo2x?l@OxGVMzgc>YDG@*MWjGl$ zU#2hTo70VEI#Gh)I0B5jvmk!$Df+}_V)}~u#QvYwC-z^qPhNVSu?;=T`%Ugk(IeXN z)-N%Vg71Bnkz|`5xTV=kMBCrt761tejdrHH04nW!XbvYLi95^*OGYrVgLa+#W8(Sj z)qeSZp%~S}D{;xVhgZk&F;3aZ|B7_8)V+g~Tf2{$9fhjT-2fN=$0!X{7>=#Gr@LR- zG~pnW3BkRo(?O``t<;wyczg^#sc7Mm>}%Ugd6cN)Yl9^ic+P94B#w9sOV1y9^$1J_ zDTrkw+*>=zy){EQr_Tqb10m1`8Z}|29SE;-BO`E$$$X&$lR}U@$5K?SFSu&qMge*H zhK`k!-_Eo+i*A9bejojrS{zVkKQi$f^Xy4T7dtAB8I}Rs4N38b<#~t9X9~fbdB4M^ARkDj6Nlz!1HoI8@fB8zkD{V^EoK45F-84+(@>q!Jc>-pc$z=FHh^TO#E<=3R_(r{x<4{;zgj=?brb@vd@4Dqup=v>h^9 z}LdPQUyN(V?2*YvKB39BV*+ zh6xz(bKJ~M%oOAis%4C)!IY;h$;_>2bvKyz2DI7Xc?%viPr{`VOj44;O)yKIfyi|~ ze+nf925k(e2$a|+KAy#)gH-9`cFM`N^~=F5i_&fZWqEoz%(jQwC7UUEJwe+bIt0*G zU3WR}Qr?VxW@xT@6C5v2WKA(g+%)3PDcGKme$%{T4PZf`!V5##medn$*Jr!p#$PqzBGMici6UjM5c+D!( zy*5E)o&eg+5GkPj#1x;YY>~jT0U9wMh%afnPzHLNF5Tmzlk>$Gj$`H-8Q+R=rgV~n zF`Isb_ne@%k9=rn#bt zRp@z=XTp`VKBh?H%@Iw8xGgYzDxRUZ`HiPPJ#Z2-&75Xnlscmn^vS|zMY@UU8qZ?- zw2a5fT(;s203M9}v@fOUp-vEGF?bLPH-Qq-%%GI*G$k(LO-u=$5xQt*NG73bVwk*N zQ5CXZc3yIZeOFIhIq_~q_vF5b9aGzgAlCFrX~X|?Fkqy`6&rw*G8R0%0OnbyrLqT1 zIH4y>0m0zOUH|RzZK=KT3aR<>V18`%{w94ao{r$}1 z4?6|$_xH=wl#@tAj`VYqJ|pLY+jE$@kqpy+75-pd%v5a6#ik2Qp@ZR-p@*VnEz!Kz zIbigh+?S6`9tqke`(Xo>7g>bY<)e5t>41=cgyCO06F+Y;I$KhK3BE$Dfgc`%ii4u3 zUk&@mto7A&oG~^GJqB#YNe9B9#tI*zI2p_0bF`YwZ66zc;xt*2qX`Y&hoP40{Wxh8 zy!j;ToFly%MGnI|sb4Py-N*GN#-1F2K|JN_4ak0a?9^#)B9D#5z{r@v2{cYd{b-*2 z9ByQ2*`lthn&kntMFG>Qx-7%PGyt?UJ7@XGiKCFIj;{wIj#Ade@yvd;oTNS`T*dnM zaSXxNEMK#KO*(Ix6#8dgbb(Z6a+@eN7gLMo((u7%H5?)fakW+;*OY+KW3k>Pe{jLVdg8&v(}MzvUJWA#xuWdgELf{Phv`5zoPFLG|N9WN3^jA!##)xn&&CC#_;9 zy`{Q$VDL%g^^d|1CCxTS8&nU%DhDYjjgAZsaX*i+U8&4Nb{O1}rA^!eLu04q5%L3n z^eEHA8Y3$jM~`w`K$zp$DEV9%9(kggbgzaVKaFG7ZoPn`M_DD09@UB@#Ihx+MOrh} z_Eh@@#s*Lxkk3=6h85FihFTpx3WRMc^5E!c8SNRwX*Tte(w+gCOr}6d3uoL)=M51# z!#cpwVN@x#)3lnxy@UZTwy4!?WOgS%b)mL&;@?6A_79Fd%g?WmVwmN6+>$T}kdKAv z!li25UW0;dnq|_8zqE19A)PuK4ssvrY)ygY)ls}4KMJsjJ5d=8PjMBjbLaSiLx$}c zVuvMCGin`WfBl{hoq81Zc6tIyp? zOlk@tMb;Er?_RU%O_{WbGIokKxjB+uPe;O=r#DA%T9s~DQ5&mli&nNp9BmVh zsf~-d1rs)AU_m#LzsMYFmRH5fS4YcN$I9EI)c2ifDAsH-N_Jm+eKmQr3WDCL|&u%k;VATf|v9LcL9ZLQAl zZn?bu(sn3m<#)b5aCPX)(8mF)(VGx4QcYv@lwG=Vqz%H_&VYHBl->b8p5p1 zdCJkF`x$Lxz*9`%h9e^wVU%GJ1Q=_e8U~37e*$YgBSW}^B1w9w+;oVBmi!FU=`M94 z-8BGkkcmTrILQji^=PzF(kouj&oLqye}Wi{JakG9RGVRh&XCFb|5$(G?E4sXC3?xh+w~C6p(C1|B!r!Ej*`SrxP0tj4K~* zK+3=fmQNKL*!WjJj?D5IKJ41aDiB0AqX7ddd^KxiyYF@jfkN=ygVJ3=Q~)@jCM%@&tOo0Lhtg$AF)MDED#lF*;o)B9?3A5@Ry% zJfv7e+XgCu?+*$9PRsbm9F0?w`FNs8n+!|>4#I}4BLa0PCPY%MZ_%W95ETLX^^huN z&U8+2=;FwQkvZ3z37CV1Si|II#SMw4jAqQlc1T}2i>7?Py**aZ60K;N&u)F+T{Lz2 z6$nCA0!tFw3J%TX)kRbuf^kmKd}4E|2w=uo$9Q1AL^F!X+Y`z&T}F1)NEc?CDV=@_ zHz1@DAu7+nh-La3qC5sxEasH9G0{K$0-1XjyeZDDVhb>K?X=SmJj5p$S>Tm{Qw`+c z<3l)>7^-G`4MwOMXQl?PrWvY3Wnf+7kbiLC)DUfX0VqjCUkk~1D#;{NNXXm^QB3}* zF<{5<#y-I2S~OH%N4FhxV}MNr!WFxTamK*b%tcNH*i#T-HSc#-LDa%bO-QMY5UA zHOleq`SI!T1!r9Xf-VZzO9-)4fmB>CBNSqc(HG|H1%fxgy!kS|c_s}O_-%m)Q;z;5dytn<| zU=l?F_97AE3^jZSg{49batpdq(7kZ#L0o3RlrwfPatO|plDOi66D2iWGw&l{?ScCa zX4_dQlNMP4|H0p4SdtB9e?(jbbs6`2bmeW49FbZtW?fx$rUX7bc;(cmxL`=gE;kx# z0hh$YVjR=dPSx+qFhIl8j#CEHrJECCZkX-jJWpr_e30v#H~~mIUSTQ-KVSHQ(5Q=z zaW+UILNK1w*UR-&rwy;yBdQlD| z9I{+Q*qg5L4C4_1YDDP7bWt81qEV8#@2oHV9Ph6-y^Nnet>4jaf1MI4*Wv9o%imV# z8*71}zit7`;Nn5u&uGtCNT@KE)wldI$)T;Z7`6c#k5RAhn0BgmEUgZEDb!ayOEvDL z)$*`qD($7mpRqh^d)V@f)tl8Pe;ZNigBJI$CJ5=^4?locL`*ES{xP_VQ|akhxtY!)0cR<}|%@fo{woO#{8o zq3daPtnUwJja#FG?>RvVH zZiHlB&s`ICoW{WmACss{q~+(7f|pQOdA{#A`ao-!)Q0L`FN}G6qTZhQ;!S^7RuwC2 zik3Cal{H5^%`j6FD`|_Cw9Rav?YPzm$6Hgobujb-sXG{Y$yX>Nvc1y&^)taO@FJjCd8xnLe5pCK zBK&Nms&m2BMFo)Y7xnR(NLAOotD73k+W5E7zEG^{*yr==nFE=@2(8_{);#K#qYFSXq)ko9Yb~4m7Lrb?y65df^nF_vY4kX>Z$wgaKyd# zLyN?Qm3y@d!pKc++*Oju#?wz3)AH@gEjfE~(|(%Uv}cp_(;h4CNiteQk}~S(Q$$jc zp-C7@S@)4$yL5g~DjX)37c^mJ0gYs$vIN)>B@5^#Q^~iL(~>hV-5`rKL70c(0)_^3 z1ua@NvCxGbV8LZ77C%w4Qey_4#F#f-rrL>UUaL^1 z#9*cqbrw*yN!kKJQvokj;!S~33$&%oR89Oewq=AUS8Az#bN1zMhkB#>Z$S1%Uz7rn7un#V>hsVx%8$ZneLjfv;+|`;l zpU+VONlq4=r&vlUHPKwQ0UTtKT;mg3D6uC04$@6qSVd5c&*fVPsu?oW(2OUV#WdrK z%FmyeKJm&^6WLgko7YWbGha4tZcr}fXpA}B#r?v! zu18aRM}*R}DTuQIJCKasXQ$b&JKbSDO?Cx}StF8eIx=QnOGRjctjh^nLdL2U`}5>J z$MJ2$)`+oE1ZC-8BN0?@W}o~Iw9q!u?Wd@hOt27eHR70h2&b|`KIT&Eu7KnvR05Cp zVAU&@ORE`!k?kEIxc4)9nTha!n_@JjnP#;7Ly8@w8^azX#}6kJGL}fTh29Sa{p8_6W3h+OFR>c==DMFwTqC!4P*f_zy$1^?3{XrxvYSy@{4`Jq1cL+ z>nmDj>SODBudnZA6o1Y2yc*ETF;{KWRU29lQZ(jjin^M(#QwaiV=>qL@>7#f#d52n zxg^M!c`0))w`s!0wPEQKPm@NTYH6}5>TU|R&AD4Awt?1;xT-;>!bjuI`Koo-J?j>U z>Ti#hw9g!zFJZ(uXx+skkiVqS8hUD`W7a(@Megc*$N$byI6vrJg2j^ zF>RwVZW|-mXO~Kb!mg!IwNz)z>KIXlbi#}&-qJ{A@mq2WK8|tq64k?wSRTd$`4ruD z(9KV`0UG>e!@2?Qh=;Y8&d9~X%94)Kux>`lz;(F=G^kL_>$}i5m%DnxMy_}Uf4gHo zn`sc^u;f*LuGA4Vu=f>GGhaSFG)EaGc^{GU7BI$z=O0F41rZZcOfjgv zZ4RmT!5-6S2GN!iEU{XKMbMMxixiSm%>N`D^)SApGRv;m`T`q1AIZ$uKgInCjjUnt z34_V&F|KhtiI54lvjtqb*?5F(KB-xr;|Ut?2T?YrahjBwtDK-=Aekeja6PHf&sB8I z6?ZQzT53YpC9smq{IdFh{*zLP^ncwG$j}7z1?KRUA)o#M`TR3(KWIYm|I1HBzE0;odH`OXiih$v@wRNXq+{wE7f`ebwtCa z@ug;_#2_e%JiRjtEyHJEr=EezqY9ghR)R9)J*YpYl}HYa(@JU0UIqg=Ib~CPKfwTT z?HPCTidkDxeuUCHXtERHVoXcUvs92ca||Y)?JQ}OM!z4gvTY701EBJo>%v?wg{zv& z-Iu!GEp3_HJ<&Vmc`vU(wI|R%4+=y%MOCy2GAw1S9D9S92)2c4zSTL^zTj9BcH_1j z9cbwKFYxs{8TKT^V8=_QOYPn}9`fYfuz-ZP(;+vK8ccJLFUxFHX>FEw69(TS7$rqP zg#5ONsZUCImd2+emqeHw0J#Z@}H! z2s}qIr)#2trwvEaSuvIrjbK1+l?!;KUa`_4*i0nj3NeTo7lfA@7%&OyvuvRVbT&T4 z_;3BkM`5!~#Dsf#^d$6kAWW``>9DL`a?eJLJN7H?fVd8e1=4U{$AEJQZ3A2~;*!bl ze2fPiOgXth>B|6%c1!o0JHhESg$SpMI zzb`mSZm|~q8LD(Ah!5jyglD`(mzWeWq7dXj%gq-c3j*1x{27nij3vBOloAOUkSCCk zO(8J0;%nF+>_EUzNS#=R;ZnKlWEhw)zMCJaCj%cNn(sYfO8cWDf%Sng_r zp#*L%grbInj)J1|jjuLNY*hzI4g#ChK)T9ZeoNMah9xHOk<_CyhW7AF-2cS4!VI^X zSPFufC!Y7l-bcSeyL1am#H^sU$1_Jyadia0ya~VcE*8+|O6TsUH%5Ho&Q%h>N1fY- z0(F#r|Ep(0p3B9TiebAB;^g6)h`X69g>uL?DJvS`Q|n1>VMod4ONeiY%}8&XE+aXf zB8LGQ#n|xny`7?DVzp+ODukb4U?#ih6zZ}GTbWAqGl_u5*r)e>TA=s}=B6*nZE$12 zW7MQk9X09Rj=3yEI#<8gO1P6CheHZu#M}c2P7N+Qx#uS_xG0Hl5V$;zQVE~JRjff1 zf-mEdVi+rIR;HWg2FD0E{78~LIlzrSOq~sFiMUtch(KKC)EMDc2uTVK4eY23LEsWU zy)I(>|ivD(Zox0}ISnN1x6f zl}XEW*+eC&AB7UyiXq?=HIqvu5q+aL-adG8cyP!tU)l8Sr5D(2UM^RlAbLzr`a;T? zONl?CnLCfNpoYTb=+8en{p5G0%h{K*=d(3?Sq6iQ3SF*P&|-AXG6Eh#wI(}{%EmoX z-a7AEt1#;n8<85JPX<1j%}4b~(l)@nNg#8N$;Kfy=D>oh8hF9wT~29fctKf-gokEK zSl+mPDboYxmY9*w=Zt+EokNHaaqHwS90!by`t|qByNWtF2_(f)U4payk zo%2d$^BGQEIdl?W#vzqIdP@FxLEoKX`r0WEgUqlfgKXBmHJ=q=6SiZ0` zOV-@r&)jP~Q%1I~$*xGY&K6<@V;MXxOG^S?26hY1Mv&?X-#DH*?1wfe87EFsz#^J$ zCH|Iv2aTIoS|Xg#V?VRkk4UACsP!r%a>_LH>J@}Ulwc#2zUi!nw*kQQb=3L zwed|KPk(`&Ylz@79en`zUus@Bh*QkvBfn5O$%sqDW%`_YX~-dHnQ(rkqM~#3(g=5b z&jxwo+&;D-ig?vw*E{v|3(GEAMa7Z2_N_%dv8E+L^H|^o2UlOi{l{*_m)a z4ZSl6Uk=g zwn6*^8-rz`^;6G-d%1+8<6OmzG?_Ls7&c{^N1}a^zK8iYrn&y*on<>KtV!onv>X#L zvh*&7Dis@I9Of{voluCD4w6a`ZgiN?plBKka~r4XNKkz8DPmR1YcOpEhzG_)(}bs) z79W^QDN^i79;*(gsD*%dm#b6M0%}Mpzh&6yFfmC{E7DWGpJ8P3_<#z1nuP{_61)zk zcAiNi^#&{col(^r9DRoZdCHM(;~477Nem=b>8S}Rh?&vp-iTrMi979#f$8rcf) zfeEG&inAR*S5?4MgVy8)`pNjO%Qh5D=26T~<;M5Yfs_3I9R*6 zG1w<)@3k)W?)u55w>MpDiQIPpju#3KS$|<8d-x7ZK{0>3>3V*XTKHq(?N|3**%#hC zTL8193$D9JJAj1m9}FG7{K%z8LVZA4L;q=)!ww;D%+n_ zNxh93NwbiMFE$HbLgX{d!c;^yZA46$akkw#?8sk5F|cLA2A7R18{y?+_!jbs5BUyZ z*(jzFq}Rw;XoUTuq%F3&i-M0TGZLuZy8nu%3+C9Ks zF!E&m8qBl6mo|QxuRl;8ya+kKiL?nTGXP|T0U#Sp`Y3qK_>NIP8aV_wZBn?^nlzlE zrzqKg15%bO*d*OS$r@>8g^?Oa-6##Rk|8Tm8x5=vFcdQS28}&HAnC^6QV2IP7J~*O zX1-piM28Cs7w4W#LRffH(6K%%o)Z;fx+XOpOVET#;wh*+gi_W4Q~CPIQenR?ky%T2 z6NX1lLOc^kOKT_<4!X(m0saRz7%U~gY{M}qNWuC8vpS@lH9-!InMr_oG)2g>rPk}U z!=nyLTCeX*$p z`%vm9*tWu6N?(ej~cauZZw5?+t)Fp@5@EA=)8iR zx*Ub6DaA&Pda%M9XSR`(oLWJxJc-YI3RK}LB*glPb3*#qo|&1OC{ho)6vOTOC&At&G@&|d09qZn4k5A!A5 zEZo__g1IRC7HyeR+JZ1_i|)vF!{=o$+hj;-`|QJ3Y*@*WgOI*K9tmdUkY^Z*;m9MR zne4uFU%HZq6tq3SQ+AOhVXZDG&l zoq)u6mhLtzp56cW$TrydYlm$?9esP32GUO(sHni|rqnaO&2ObV`-2V5GQh z!P%~C>(~}Zow54q>wB$t1sx%Hep-F49fp=S^u#voxV~Y>)OhHTXwmw2woYU(c5RMz z?YZ8yCzumD8!heti8tYVFS~frSv9dQ=B$c3t3ugP=ce%ZoO9EAIVBhNyLG*(8GE#n=u*gt0 zJzR9rrmuuD2^$FdOR>^RuN@pXHY8r~)YSW^$5x{jdXIH+Bi<>_FNMNw)Ks=qokQe5 zyVK55m4pD#{OXD6o~rv ze<6_eXbb3NqAKHAT&waJY>ROQ=kl&9;jpm%*|DJ!DnRe3RU(*Ko^OD2oqQ*D-XW_d-Q3E6K=V!g||_LeL&NNx&Eyot$A9n1ibsFC^7 zmBH9{Oe~d@WqvE!!T?GZNXQsVRzW;N-`3AJ6s=Lhg~fFEUAxsuBj2K|B@* zDQTR>Vn12|WUK4cFFNi-lYW`@{4Mp@sf*bxA>HIuvqa?trWV2_5mI!kXh)%85G?No z-en4W!}VLWcT(yb36Hf+)OofL3>18ZlG8+B;IqB1@j*$)T*QYE+J)8Fi>%HXpFyvK zZaJ3a5b_&D2km%Ip$XV~wCtNMQ^|xXO_w@?guP+7g1LYRI9iAwz#VwWSMY{6*Wlip z;dQpHV+YO85iX=+xF)S`nZiK{%vm?h2Kg**%Z1{9MlS}@46`PdvUKl<{p6DaXBhB{ zX%SqV-$($ky{YUZHVSJ%;kC~Yzl^DO0k2Xx>#*Tw6+7DzG^o`YVOjtYgN73 zCnLr1V%@0kDq&>_sveF8Jc&70Mjb0dy-2^or(n2!>cm{pTJQvZxp~N0jWI`U)KRN> zPcg2&>1Y|7lV3t#VonMf=MankN@}rq(i9hy*vYK#R7h5IZfcxe%y6UNltFZ^D(3g8 zh#nT3Ne7Z$;+*1^82NH9{kk1+4NX=}XjCNF0!>yA1VB=p<@Rff#>1AE{!rCcB}aGp zL=S*K)6D(1u<3Kin;p*>WoD55+3ucBB+NtINbAAfaxLUouJ zscZ>9bM?6^&xN0wZHtuO4d>&kQo=Lm&rY8W4M9j6TCh3Yi$#^(g<^BGs5yN2>SI?P zn=9HhW&6ls$u9{?7jrM`YwhJ|1mr27Y+9%}RkN|q(aLuBz@F<#{0%f?z%1Ok?Lh0li&0Xkb5 z*tt(Se@Atczz%}xyesY;Jqf>&W6v@vqIf11z<$f^v|tc6WV1jy4yxkQfGrh10gMOM zh$chI?7u@(f{x9VDG@7P8!cWtSG*qlU{5Jo*Nb@?qMn91k9Q(dU0<4mDiW$RTEM%uxx?lfhwS?ZJ~s z>AIQbnH95Nj1+HKaBO9J18BTn}tlYFDv8{*&i@re^NFVT@85yjWzeVfr z_ftBu;_j=`4*_fJ-Y<_(p)cYFClxa2O?m8${2)CWrQ1Kz?Vstknr;{9Mtper7j*kq zx@F@QxA(#02y^VoeI!b#g8XwzW;6lY_5KU}WY(&_$zCDGzWif)_^0$6ywOvqV3}L) zqDOSLAh*(ud1hqv1R2<8l4kPDlx2!;Kc;8DMzO~z#{7%Y0jhk8ZsaaXet>Qd(d|LH zG3td#6Zst7+Udp!9A*w@f_^e9c*M|>|A>D68O7eF+waoPAK@0y*gZ0M@-*7~=kzO` zvq$1tJKzz7$K?p+ou}JhQ5M^dQCa?oVrjdN$)C{kf2SK9z~H3B;2Khv=!u;?-pM%> zbb*$-~jOYWi{*#;9|@+NvKLht`2ZgGj3HIcW_(?6j$^ir&eZae9= zmu`Pb3HKrvx0C9vyq_N4ORs10S-ZvOQ=Y(oN3xWMb^FTQgecf6GZO_Mm~?*t}R?y;!#5X5LP#)PAF|HX%_2 z+-zpj;q~Qx}((_5*9q0MfnKcLHP(0MNX-5%Ac?x2#zgLkXT{aZQX-UN>UN~ zB!v}~7x!G)6FPl4a48V2Sf5~tTeq{2eG-{&=1S=EEy)?tuBK}%shLghpdS%H`lILW zo0%J>)*HEbFF!H)1pI&>pFYlw^3F(aX1$RWDe8{q_9P_a0kpUZ6B!h9Sc*$n&iu=z zmrBEJGuAhyH>7ZPv}QxJXk&s(gzPWiAe&;cwOOhPeUU0WQ~zeu8%@!MyAl>WyH>YE zLE;f>uC$p(1wpudiGrKe>C#p!J)>~8ormviTVlU&x~$SJYZ%Z&;WZ2~g^~LYEwM-< z-72jQy6Nfqkei;ZPo&>(m0$y{@cho{oiI?e_rl(A;nk`uRgsF$sHZDoW64{0^2m+M zte1-?i>C^Mj;X3>X3dgB$%$iWSyEQ0Ghsn61BgU0i=IS~D3PRs;Ngo$E*zl_E(rHh z2NxtT4mDx;Y(g-zk{;D8s7eOM| zDs_Z0MG(xeCUz{Lh0WB=b-aD+66tnnWeA@@kZ@Y1!`2WgNMRV$h(gNI79LC>2TTuB z#o&mNX)C4~C;Jlo$LeN+;+di7>P`F!13Su> z7_oV!iV#yqqw*@Kmk>}dAxJ!6ZIo&NUTZF`Nmvk_MGqh#I6#m%WL+nftI3E`G6G6Q zkT_<|K|Ay@+;?GLxIWg@9c}84RCGr@Jqa7jux&Swuxinh#EML*55RP};!*`oxjyU6 z5D%}}Y3{*?R?%9iAapoZ-x00vNLcV=7C8{SgA51~KI`r@={_rb+YDbAPFUCv8b21H z0c4TH19rDm4mfz|!b1rQqG6PRU>2nyNHjTs!<61ZlzImN^$voB2go9{{qp`x`w7}t z%pw)RHKZz7q#-mETeUH|Y9m#?;Tk@V;2nG%L82&2st=yN7`PB1z^tFCXTj_?g3tOy zNt#q2>bSi5(q=-3^|MGta1E&lJ_4ew3|cQbFE~HK?@G+?^a5;arLs`|<-$t<4MfB1 zu6A7MfEjA3jL@8?W&XNT|;;2=UR)(!tv#w;# ztb4QLjgDwz7nQei7I29mk?WS~3BLAB?@8Dw-q6g$PT(~BzLDu%k`N}Eat#?NP8lhr zj0o9qBTQ6hN)=j(6sL?7QbvR<{y;i`R0u~e}u%M8@g2KdOY3Wj_EqC%2t)l@_& z6#=CpNaUtVxuMgshOTG>x)VRHp=<;kL*^!28B&Y-Hlp-40(u)kq99$b7ot=z1XM2s z3711pMU+wzP%46(aPw3V?45H}pWFSOtNd26!s?J`u5i`4KFYUk&Q)W6WBZ(|7SHm^ zg6(s8)#rA-=PHABxID^ch-_fFZeS9oWlNKq(3_ zET@#YfTKA2E~1nf0cA#@WJWB}=#acLLf^@z?)7q9;N`f$3ujvCoS;z5^74D4`ex*N_>3k{Pi?GfKX(ea}ss zhgzphe2UXFrEv3B7Gj!yDB-vEYGtB14f9PKt5tlgR`Ib~m2leh3Lr`qKtMPSK_Ux- zjnBnAE!RCQL@kvpZp8Y9kl_Oc3ZN|wS?CvKLCCTYoh&_gQh0}nx3>yV&z_8Okcs%SMYS$pRs|+q^~qx_dvFoezkS7Q2E9R zMi#RyWY3k7S{J+TW}#kLD?m&c5k#p&5KxC8pgOEl0T59FKm-JU2omX%o{A_(KP(l$ z61h%H8bUv;efUB3M?m#Qkf_L(x>@DcT=%R=*yz^=EYAp8d)g8< z_H)w~9zm{;BznTwKJsO3b-X*|tF&)ShjtyYM>^?8)*#=fog99gZ#OfUJMGcYlYZGw z8PbMFW#W)RLm2zeF_u8=Gx;Lzo`@Sr?oCk8Q_S#@AHrqa#U3#-83&0ocCs`Fe|{Oe zDkfnA*J^_&s4B#=lym8pM>k@*%cOuRlPrbYN;f+Eic6albx(mV zN5FSh;XLdeD}PY=PDZ5RzQ}mQEBUvgbazbmb%8p;)=zhvYUB@R#YhO<(5g{D8z5%uSiG;smjim zn0=x9| z3|1@K3;j#^^ki+WH6I;Tcmd=dq9NLcS@RRMPV0(Ad>ShKe0LblhAAd`sO)(UUTI~& zshNjgI6Tqz!jUBj=^w9Xm1A6XE5)NHpprn)||AowVEywuujo!a{g3yUzA`hO1rNyz{J literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/constants.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/constants.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..f69fe1c69bc42419c22e6c661c8e2b4293f5c3e0 GIT binary patch literal 1551 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/environment.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/environment.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b64c24a0bd0ca3b2bc165e7d05f5f4135d770e6e GIT binary patch literal 76697 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 YRaI+mD-6^3xt02sGX) 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 I5B%8w4<1sSw*UYD literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/ext.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/ext.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..eaa71d433999a3a1cd7942d31d3542bc955d949f GIT binary patch literal 41863 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 AZvX%Q literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/filters.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/filters.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..36adb77a5c83113763a3d844ccdb801b4cc3628a GIT binary patch literal 72015 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

`P$*P9Ot)Q^jxZ* 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/idtracking.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/idtracking.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a9d3467c95fd823eb8eea96a4f7fb736d6feeba7 GIT binary patch literal 19144 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 tunN{55B|aRvWa&;tQpU$ z&ct!IxmP%W8|DOF&`j~eJbP<~wRmf%bkq7_Jx_7EDZ{jJ*vS0)Dbuuh*bKixFiu&f zt;06vH%-~63x*4r-#q1*b`CpvPSj3rPzuhzB?~L3Xt)@8Sf*UlCBr2=r{P4WVEu%b z@rFy0wlkYX@gcNZ@n_$HZCq0UP^=K_y?7%pesXIzUhxS9YW`JUh~rRks=pA&iTrz% zT(j>_G_rrV_6t)MBIVv}3dM)emlS{Y9Wrv9nrHnN=2`ULoaYAQX%>prFK%G4ONAR5 zT%y7o8C}?;h@;?E-&u@~-fu@mkIaVOjXu?y}=aTnZEVh7yQ;tsfHL=W6SaVy**vF%-6Y!|!5 zO=6?iB5oA7iA`dU@XGtDM z0C-Fgg>m3(CqK)6gW}7-s)%o*G`6nL+Jby0kdLV04s*hVuXBP=`QqVm7B-2nQRMVD zO0L=WCtBG*e1TzJ1m={Q+Q-7C5jLZSO$xJuAEjMnahDMHmN=#6GR;CIga&>~c{2<% z2uz!rxBr@EOv7i!$ra9XIrQrz)0d{iX>lePaC_ZHeKV6@cbEIrwcrK+jC;&Kecm_Y z4f^1p60eF4Z3|Zm%URy!R@~!O5UI!p;Nw#q9usD&-;Rb3%>DSPTUm{ z+0HZv-QKAw{}m*52Srrc8x#X9=YV+0i)_SzMF~g61<~!D5!{!Q4*`sX;#E`(b@I;y zIxRn=jv4UqDch6}Rr5}bil`P~y&%3dE5c*&%^+gtXT+EQG+y!s35K_LC{u;OYcoOb z)qY9xO9(a{Kl91~@7M)OZ0(=9?34U6)V4p{j2u#W)@&);C~M2nF+vP!M*?jjTg!+v zG7}z=!Xq=D(2kbomN(vP9vL~?+On@_WTZ0#cv?Np;SGq|kQ>DSL~Zbd{>;VRg5Ih1C|3z(MDTWu%Sac*tLsqS z*wnG>EU-odPb*3i#4+FW^Z5XwJ2&1P5+y&&$-~^xZ`iA4UvK?Lr^ihh`NaTreIV$S zg6=E6;027*P8n-NXdCsk!exlQ35=X}_a#5N_x#i~_o!PL7lMq=T-H7#oh@ow&pt}+ zzeHo)JLMjiyki+J231f^Bfil#(s6cQHXWtHX!6gXcik##wpnw_AY2JU$|qrx=`v*%O#pl?bLQaG+8D@DW#k7PKzl+AShw(r%cKu zPg&1T`NuAfo);&4GbytSh%-W};IdcpdCyOYnJAkIQ>86}Ga|+fh(Z>%aBUzZU_nX_a^)O^r34XC-qJKQa zx25=w6yFunbakcp))c=nq-n+LD=Ges6n{3wx1@MaivMzop9^XB>u z7oOgbrWY^#?@aMMDL$Oy+f)4RP@&Rx0kD;urD}eFRf$?(DJ0S+TCTXGB+$Aq6m#(GEy%XXLQRltVFpBs?`~|Au{73GW*SVPU zRJ{3QwEn%K+ZDGeBAaek1N>EhzWnXFdVWoF&}vJ6tCetWbJ->cbIRvhxj{}ELNti9 zc1oPN$4g%V6rk2{ORvLCnR=(Z)8_^6Ug=GMtTrT8U+4Z>`&r*#8Gd+W6%b2*QM{J2 z1pODqnbF`iOecdR24|(2HFYWnE~`@#9_k(l=9%X*Cz-QQm?LgukPE8aCGbJ|O!f$x zph5L(gWv$=N6-eD%ukS@3)(WloS+XDsD4AxsrrqUb8SgQIhL8>)-1gpKsl*G&6 zW5iK)Zh{#&d8~h6^uWmzC;A75M)&t0J~EIhTpQRwa4=Dzz2KZ91ZE|f4U-JG3enXFS;*xp14K@%zVjrUL4KN0Z9VZKPAk|aISMnW8tHcrns?b#o>-t z#vSc3Q~NUmXReObbgh^wVpVM`rjmtg@J4nqc-xApELO2;#Z(=u-MM0_j8$)4G1bQ! zdRI(!v3i6Q#ayi`rovcpW4gj_GyI~GGg`hnHs881nK0C+tL*v>(kP0?Vnq`(r5~c# znklK0iAmtml%)6iCp!&EXp(HeQYT{;7t zi2Y?1?)2zVIz~-0y)n>tqCcevb2=-s#zjvAP+)FP6s+wC=^EnylyI8iT<4w`ZQlre zHT2%_Lt|ai;kxZZsW{;Wdp#AI<2O0MBh`1;ZTZ zmKz_dE-;A5Jfz=Kr~;Ev`8iFPU)Pknux1dAjwMR3q{}WxXeMo_`#2;5_qnxSb~f(_#$u9q>E}v};l|eP|W*DOKo{>S1=Z!Z<21$i*wsiIJQ6n9M_XL>-AWf=*|9dv*+j8evF=ma5_rnF;I0qH#I zIxt4-iSm#%M)0Z|4wyx(1;k#;PZ*SRG_zuG5TIqrQX~B#qEl8@&L~rpf-TVn#Hn!> zBfX30wM>X*jUu*pgMX^SU3K%H;*pKvQtW z56uu}0_k5u)}Yuq;Fp=rHD9B09<*D^SYNgF2*^C3#Prqc9(=h*(L}$^D_{CYz+xW- zj^NwmkC1Z*&T}6~{j~N2+nmr6zBhiCqNA4*SV(}joy^Da4+$L{8Oz?UzaSaOtW|WhL20{md09k z$Lo7p$P=@DRS%4`jo0ss1kxN{i(~AyH2sVqxhyJX&DU&%(mJ&inTsRJ_lJ$Yf(QDGsA+=JwYr3M#x31}cg1)R-!bJvYs z5#2*;b+WkZiM3#%@y2fWZui{kiHt=zC5ksLHh#}@&$Bf2uZO=s9P_*sFMcUzd+CY8 z#dq*&)CsiKthU4X#+m^*&taY6zitZi&u=tBXw-ySF?cIO+rwBcggRF$NG+1Hz2gv>r1w zd!#uUWK!=D+9SkfW$4@xL})g40cEujn1zsyu_cM!PQt|GhN6(MA#xO(|B!)wGWU;d zgUrZ;434DO49sva85TsTIDHBEY4EI)G_{@uQJ4;FSjr_S{r@LG&YjY1?F&`s`6!ju z=%l_dBOO-a(&~BLx2$rDB3OOM&niQ#B2nhddLVc3#|X?_3y7~lgJ3cEqJmlMCMuXF zJ_?2kB~P(bBrEm-JYTdRk4^alV#+=k^k0(46Q&oo)}WeE2sTpz z(!fw8A>xb>|HUmW$8M#TK8SQ^X{YP9^%jJphPbm~UjM}EyxDW3=lzPfbwd*L{n(9T z%eI=ht>%%fZl$O$W~=+$WSbwl`NoYm9+@hjN1V5@(E&M)eTOw?WXXdVBk?>+l70Zk zV_Hu@KBOq($E5q@FoN)B-1}3?H3(G6lm}I%;MX``>h(9xfKeK?e5N~FMA4ZFU z34Xg+kb%IZDdTF`Ay`Ckbb=M!oDEn`;1FT5!(S+r3I$?OCe{IIs#tJ}CSc^RBl`m6 zQ;4*#45kfm5#W+czQypD3T1)|@3IVz0XQXq%dc5I<0cml4PUHoq~=P3S&f;}t%xP^#U3U# zs=0@?h*Pz_q+cIZ^^!q{k_P*Ks+JGjY$h+@sw651mPLNDygCn=)T0|X#B@O^4g!>p z$Z<-~sIo+LNEt^j%?7aiWWPLRVDv{|b5hy3Ix=u%=t$pj>E9rY^gqDCyeGCs`g3yB zR%08p#CFQdJk9TrD~B?uYfXQa5JB%!S{d=YI||X(veMf1Ni&miUFCS0ljUx_?8(w9 zysRr_)sfR5*%zfm*=9moA(Hehi#+Lx*sNjhsFmn%^>>kG7@b+SelgPYT>aUSHAwYW z#F-7ztx#IWOf9S;`Ri~26H?#e{v}dK z|Bf8iZI{VMD~z=6J4vo4ehsU~y3UeAU!{-Th=e4&6)zmTef-w(grokU<8XB7q;VSP^fT7x# zpR0h?MIhwJ9aRW;o$6?1b%dS-gXikJLmn5jRt~HYFV%t3lc`TWp)j8)ndSX4wRlJ! z?o*gNZbd9S4-*F>QuHx0o$Q1)h1>%-P?YpP!pUXIV26YBA!qKlP{^C~F)kou@5y8% zrQx!vDsHNZ^#9l-?{DTGWCHu1e1;F;gYphIwi%$3A0*E_Q1(!-;US&{geC()SjP4p z`mXG_-+xi*IU>(8J?@0yL*zjoaWVK1K!hS?_D>1&PB9ru1R$WTRT1f6*K~1hQ&7lx zY6_AEA)L6%Bd&Lk&YP2kCAX_@RnHreXdGyG7n+DADI-c@OFByC?X2Td{LGqO*C7)| z4&+|XX(g42ALPzrPS0tAgvXv-V)~8)k{0qY=Jfyit|FL`HR1;xl? zMjuA%=oCM??o$I7eV5jLDus}=87M;nd}?9o!du@ipYL0-ITu{tI{H-06;;Z^IRu0? z-=&V`Q;7LO-dO!2AZ4EHXqK$mB`f>IP<_zXzI95JurnxcRIqPmstBfRkS$)=fR|&S zkj45v?G0u{8d?rcVoFF?pvq;anN&<^L7c?70j%el#h9=MFlHFVqUBQ_PX7$PH8aP^ z7+T+WC|6GF%mn(WB^!_g+6ohCD|&DAE?cYP*6PU6BkP8h;hn{Od|TByY>(PvB>Ci*j(*#MCe@g^Adz_)KRets7A&mGu*?-`$+8B>^9QXqnLWfoFkbzv_FWK0GDrlMoPscSNCO8I!q@@$}$ z9EQk#=(Wak-egtXhrM@tm#ezsRb7dyP4freISw_TvuNI&wr7x+?X_`x?MJ@2 zy(_KJ+G|$o8lne3K6>|PqONN}_nr+Ck?`lGdGjxy897(|&pF;+LsF>amgSFZPaK8F z%!r_02T0NJ!?Mc0ZQKvHRqQX){&^t}cg>Qga^(LAxWApRda(*X;Bz=?b;1Ny-Wpad znNSQbb+HtPb60tFrX?;sK$1J_^vwD%{RQgB*qEUKk5LwL8EK19IAg|sL_XGipOJ4J zZ^pVaRG7;lF!uag)L)%QfW-n_@z94OcSe?Ly5lw7Kk(c?lPG(M@y8_|}>L#D7O4Xg)w& z=Vj9JkOE-l*@#4_bA3%fHi#tRfeJ?@Fz8n*Qx~LNH}>Q&TNxAI(R`rGkCBg1{WsPw zk93DMM<1H&zlzOG+L@Su$eZCw*e4BMll}&vMEtw-h@9_| z^OzjQsQiR{OkGE-jr8~Ad_+!Garb~ga`sWn{{|jX+-Ye;)uu0gQtV=zMPeL=oO%R6 zXmdDkPTrV|6yNZtjTB94)x6#ltL&gX0Z$sLznA$)BLOe-NNy-d zW52e1Vd&@B3@BgKDgkMeM&A(GNIL~skyh!IHW~D#3*st=*HfofU$%g)TD+pj4X?Dt zsCPvUq&d8zeYA!x&c++JtrDCr(&#%W4lg;k&a}y)FN$nj{aD)<>U-ux?vMvZ9 zLjQq86*xMWNM6?8kxrvH+h(+Ic{oZo|d?&g?Uuu=W*)draFdGA2-!A&zcNjw{10C zKk%%YvsWzJs^hlm$Y8=&f4v`u%Gc*s8a<0`iN@_Q)Ao043xjc3hWBG{;`(t}oI!on zN0}6>O$egx;#|WdK{Kplo5tF&n}+rC+*N+qfE81hDo{w_@j+_!&})6NeGpE71!rl? zn5|+ z%Xc7U9+l0FU~)laL3GG$H~*i2LZxdz9I9BB+y6r2fMzDPe^(r?8&_`pUL+7boM5*4 z^0H&hx6V*$fhm8G_I)Y;ls!}Wm`H{`SgU@CP_`TRlB^B>IbeyLzn~&3;Q6IuV`Jh9 zi?1K~1-5iL$Yw^CT^a5e(9}oay;o`3%Jw%I%j6?)qMi!Db_$#Pz{$fG!nj78k28cx zjV5!uME-a)F!$R{s-<%=Q%9d3R)X-u2YRFk{lOU3Y_-qkn=E z27-E+Fd6gr3bnUjeqpTTg|QmZJZ=%J*gUha@(KkT@bfG}2vwIL6q8BrdW@`EWcdO*D$?wz#XwL%Fv=DX^MQkndl37QN6{j!v zpt-!_5|veimK^KnPIupI&=38gkM{rM1IuHukRSmgW7wI4EgwQ}$N2@=|6$R-=AX@+ z7bnt8s(2hqCvu(9$_)4w@=fxOToEk#v<2zSE!KS=2Nu|&b~5A2oxAWg3pf2;o)WG#0w$j9x?!P++ealm|pFN?_rl1|Wm zT{oxAin!T>f?3U&z$r?Q96VKI&N()i4^QRna*h$^!&4_zuu>WBdCOHNMX>gTcy1*& zxIyt{^P4ct>4F=T@T|giPLHDiFd3XAzG2;?2=#M@3{J~B1b`}zF@w|k0vuBYr~L&u zX4Iwg`FIIRh#6kc&sh-P{d_#sPilJtV{={%8UXA8##Y6jeIt)-PZ+`mT-sp_8{wLm zYyQAEXB8}yJF+PhU)VaqhxIrLVY_J`)3U=5SYFw&FWa15u!e2O#TK^1wSS<;(FiBI zq{KdF3n2@&4GV;V?07?4X$42P0BM}rt3!gjlrn=oicct1*d+L97U5Z!PmxkaPAYXw zPH2L?a;oRj6^BhI-^E-LxnT=n^9Lq1zrAY8mlPi?G)lgp9_qD8!2=4mpkAFc4oi9^ z9qM#Y!C3b#<*YYc*`8r_a^}?OkdiW65A=_Y+B*2M61Ohbim(}9W+L|k^~#kX@dxb5 zlhbh}Ze325Y~)nst)=+`i`sH|dNMemuRcADiu7VVC4DE zAti2IYV``L;HxUemlR*_7?|LFM$D}aCGMJhAV@oh@sA@xbpz};3tJV|$Oy#YlHPH3 z3Qn$GJKv&^dzw6-G9ajwo>wW5d&`(2Yv|Z{A;yZ*xtbJzBE=6%XOT~?Ssy zgi%f@WNlZ+{+@WuI;4O&QCz~5Jl>CrK6c%8eX9AM?w;;$Rid~fW|LWbT!AvPkLk!m z1ugqd^{N*>>>A3Yrx)0NZZos300o( zvFmFTrDjH$cL%)_A-$YLgSwd2JVKRf;iw;E{%n=oLe=YXLtJK?2Rhr3nLZ6Sz%+V7 z4mm$mc@GQlbmpAjisBojyX5>Aa){+l*|T?X&>2jpd}{l(myZnf51#5f(9f<5@dhc* zD#slUWr0vj7j{rY=4kqnfua7x{by1}c8)^Ab}bcPCe;LV4#2a?84M1cIWllK zWmV3=Q&fQ*b@EjInZBWuXQZ1{LDHK@|B;;kM9$C1`QOO--^uwu$obE3Qo2cq*i6=w z{1hmXGeOQcIk(91kuyooMRI6zq%x=D&-A^PIR~Hl5DLI?c6Rnmnj!RWl5>I5l*kp$ zId{)c|2xD%)AMb@V@i~7kO_k0vc4KIdJZQIclJ+j)>YMR{;dru|`!y z0h#2p<2W(LdWhvuQvj|1W2!DMrR*$_ZkY)nI6!h04P@NhQIP1ts>*b3ik zdH>j=D`D#-f9w0xi$m4}FZd4?m66@cRlDLWLhK{ZLB zZafs7Ymzl>vFi54(OCPQ`)5$+iavf- zt1T(T+3C`TM~&NJuI))z<*MC?5}a}ghIf4*HOE>HB{m$6)gSo`MV(3)TQ(FtE9dOB zN>T1;b+lk{Y^i;z76rXT1$iO^i~C}&yYFwJa`r04lr$;@q_t*uLE6PR%Ab~4+~t&C zy_{d9C~`7Z)xLOesV>&t7c1SLa2;52HBmzP_O#Z}P=I}7By<=X%AXZ+_G+afjnOw_ zjayNNZS~3ejxVg!=Coc@v2RtY!>3!gl7^3ZKAlUr_D~596TZD@&9}dt*l;9Pf9$iN zg!4?g#9CYMtdg@gp-6Oq?Op$)=DiOL3FqOoR?|{|L4tZ2wJqf|4;tlq#Y$TeF3(Cy z)1#I>G1uOl4{0h${~mvc-)zCIs^wR!X0GN8&(2T&$X$GFlZ_p(S!1T7!^~yk-hO!2 zh4vpU?GHy-9nmNG62xD8FvgJFc&$aT(XT=iMQwoJU&-F74xSj)OckHB+ z6&RV-y4y1T5PAgKgDaBv5^h*v%45Ys5RFflDBwJ(SxqNBKvh#ZLiZTtHK-Z&&wjGh zLg1eOiw!Wj;~3RXndDqTVkkrU6`16(0LgpM?mM}n(%ZGSYNLil-QtD&`b6R0dBcjM zGP3oZqUj3*=Iy;IdrY ztnS8q_ac0fK@8jrk}8KiIEje+O)zLOv-fR?$k~l7mg6=vZL#I8nV=PPm8xi*Z`(`I z3kF3@nygVu&AtWoMooO(S(Hsvmp!cPnxIF4!-mN=#h-l((2OeiXYYLSdJEMRJGQ}fng8XA>JC?C07;NRH|Q%o}qyHxcM z47>KtnS%9dI#pbsq%phh5!6_L9Z;WC)kIlDrGMwl+5Qci*YX0rf0hmT3UlS;*EIvS#y~GIP&miHAy~>9hn6fD)x467F4h#)72) zxd&Fpw1b&eW(j%9h`Y+J;M%}Y-I2`wo9fLll%Y?6<%e(Fha>AW1%LKm@TBzKz?jd6 zoljUb2XG?)0`B#sD+~E^c#@* zamL6qrkru}OV zcBOq@wggHfCg4)Vz(jy3ld_^Jrytr-M93nuHfAL^5ZrH?8%JuC#&d`thNu=M?XpPq~UvOqN$Kmv_g@yO$~w<-2cDs)*-dVMDUKo&g!8`UU-yvg+kBPrS_Y zsH|;Co!TR(%*gr=$#rVS;f;D(CI-fw?c*p$|p3eWIQvU%U%bpOm!U8212 z-&fS#DUBLqp52LxUIxV6-HD1#PmNqjC9OJT?{_>bY+fm^iX2(4?ub`+fYIEXsNQ~` zPn7q_Rcd=!xbgGy#^~$v8G@z2{r!oJ`x50Z$!Y4{dHaI?^P;kdA*zqg zCW<;9**c!S#-j;;`Rpa0D~C0q2Gv}ttciHP)AV8co%U!TQQ5Y*KVI3jT)8b?xh+w- zW8nZk7IoNuf9r$tMCH-gsnapn>HixnC6fLoK=knK{Z)tT{GZou>DOrfr^3EX0Dhz~ zAF}9wWbHYm*Z-wn5C30Uv2{Z+XEmha3CnjDl%`pEHGZUu_KI%WjI*Ok#fPwdTa2vw2!LrR`SEvN5+eKpvBpSNyS`c zxDun;j8ZDXmE&5O&jD2V;yw*we$C+*I^Kb}7~HLtfejRmQ22prwT$`}h0EButO{2J zOyTnE=Er4T!iEpNuPUe1su!0UW?MLN*))&exu@f1euS3Tr_><(R=#$w3bXVjC7iY0 zH^Nmy5%U#=t@&t9_7^I64r8@SaJ>*)oeRKz9oVHW#8$UpfW05s<)9IJ!`47i&NfX& zxC$F2m9RcGuH)*hll{uKWZ&wyR)?#@Rcv0BJeONlxSHh&u6A9X)H9CfddBfz(=&3P zytpSIWnlgbdTO0HJ8%zYzd-S+Us4lxeswY+$^YBGYj(P;Z*3<@3yAR6o+fV2G$-0>*ieTn$l|K45(ABjtd*Y zmWv};adB5o&UmP!^^9gEW-H`O+Jsv_CKj~sEHHVZ-izPl;h0E4#@T){P9VKQ2$y4# zvWKp$%{h^h36u}0k;Gt8m{awrb7$s!3hW;;IpXXV8Bk2l;%1vGUb<5f#uJ%RAaf`e z;pUuh>Fjhv=AhdmAx_}vo6yta-qP8v7Dk1hq`Pa*og0}scdnh@xT)@(EaMPBUNV`; zn0P=aqT8(2WN;pF7jtg38Tc8IVW|u4!Q_n;Z($+_6I~>_P6|iyOp3NWrDtmPkX`xV z0j54m8RYxJht_PqQNFZbFoQz%E*LYW363FvJR8D%=FS%@#7}l#HoNnM*;_$3_8QWr z_=#N2n0(XA23ZJ@8xyLc>~@)Y)yw}%!a)f#kZ*eN41RxPiGOhVhi5;n|Nh9Y0>odw zZ7k&f0Dsa;03@Qdk_BHI+QWJaVkG(tTLk_oGJT;j!Q@5Z8a8xfYZ`X0eg=o=X%kF2 zq$eGrjE<5+gn(_8Ni@l&LvUbK%A#IY0z$SNlmF%v-yE_x=a~98OIE5<-xpK~T1qG& z$%yi|RV&o$X7>r;v!I*|Ud!k$nHWvKBY|9S*j65PA!kmV5G1)nIy#!_X_WPsBowl} zCaH`D%?$!+%SXNvQO`~*vOOhvi;2Wj?2zH-D^Lj8-|CrRXv)CaEg)}I(E$V;WMz^j zUD%JyUD(D}%FM6?-&jz#&Amv7dWmjFmGGNc5F&Ba>J%$8WfpN|E4wg;8B4Ogu9P0i z#OXlFc82bYnHKx$y1JA@7N&6&aFjJiO3#X6Vr=H7Gi+YsLi!oOQ~QNVMA!vmb_M9- z{{TBy!L+Gk7gJW&DQv*N9$D78!d7@@B6tD&RNg5x1MLE`Mo$$gx@KnZOjpyxggJ8! zq!a`mJ{OydSEc`lKHW@KrY!puKP|mXEr8plt_D*U)^?-p7Y|I#PdVwQMp3zx)+bzL zGPiUNnaI+1FJ)&{PLbdeZXBQX2Q~*t2c(d<{BL=Sj7~j<9P6gy2Q=?~3U!?@ z(pGr$_>JR{60*4TJhHVu$=ows5|!>o=ett3Jp`i^zpo^1BaJCfBkI1vJAf8PG2 zpy>1V9dT#Nf_~w0DkY{sm(8dh9w zxE*qH(Nj*>QiRifB{jGq(^VT8|496CaeK0}>w6dOUHD{j;n3%0_0gtJJ0F$pLQd|c zsQ1pbhz?s$O|5ay;L@x2`*0}ct@{W6 zMP5#JZ~ejG{qlcxc4;)$-M`#@EZ%+WvxAB5)3NG~WK(BsWA9Sweg3{?sS@5hhfq*W z^J2rp>W(Mw#%1^BhwjZ!8aIA??C!Deo>*?&hGQ6ywjX`ecno+OJ?v;kFwwYm>8*I< zP8f>UHAdh1<7@X$;CmW3EjRSU8+st?mpp1Xob24Zw0)_6aVpmF^8HsI^gY;re;D5A zq0gJTmJEN}wBwE?qK&-rq{{u_zB~IqorqU$d%U4}(XeDnY}gg6-i6)4+J@-l!*%$BZ``gX~cP&wE^p#{oOT1xgvbB4uVQDtj+WWAvH`&;_C=&Ah#zg17 zc;mk4p~sD$w3+KV$YUe0c}udnJ?g`zS9dR*jlI}wYuTQ?bju&_PFA-qS8tA2Z(iE+MA zAHVTC29CySwmxpyywbEQ*|d3S>r&HwKGxWC|ImYjpS3`XL|>u7SD3iAp5@j(@zypwQ$HGbE;xM8s&TCmg@cW+;? zqYC8}w`Xt7zI$ashbC~<#EM&t$3+L~JQV@2(UwmY`y>yOI2o@{9Pxb<%9;wwv=@4X)1u;bP-R1cS*4F2I8 zE0s;jDtE*aYd8@rAIMR}S-7&Q1?^*JN%}1v*ReAl(s8b`NXNrsoIR_=ILB9%HbpNl zj@|uo)W0-zzu|sK%(d@9>1VFbt|A*ckESUsdU{yTIf{S94E^7Jx$;yq|5?o;8(x3Y z+P4R<%yql$f^FGW)uSC4z@-NGD_U=k{vna%+vG&aVOra}tJ^3UIm?I)K*`5Wj_LKL)q+`GZ%NPK3eMg|m@weAgbU*E zN*8hU8)@*=Z+vPs>j(HJ&f>J5Jm~V=b7d?j_h4Dt%z`YOv+!oQA0^*|DIt`LUq2^=Cn-zg$M&?ZdYYV-&-vKXM}O zYK@!Qp4kb7?ejg?^YUq;OA_nlSI`YOp>XXImUZba0a`ECYEq%6@Y_4MdYAoXQb4{; zNE^5okn}8WG)H}JM2JKefTk>>qOK3fT#J4dcj5&k@YpbB8hZUy|LB32`wtu=3!_50 zRNTm~+(@6&fOmeIG9$$!JO7j_I58Wf9}qf$!#7k%Hr&2X(IhZ2j!R|&p(Wv@VpfSG zhX+oc=|9jn*q<`K+J9#M$-#aJKU>O4_#IO)EV7MI-@${5$y49pAd)B+R0mETKbZrZ zIHCSp#=#@6Dya{i97>twjQUS2_EE6CI(deWGBJl?h$Z739s*Xz!0Pz^Gi14yv8iIv zvHl@7_Eg`Q{sAS2<7y7aDThqePnoaQ#W>8MS zXXJu2R#$`lCyvMsktuWVmHkQs4IMdtuwSAh0P=nd+lRSAT|!$pGRx{CaFQJ2k7edN zyBQ=>*f=>8@oOXTdLh?C?91VZBGWRCwG^3fHhV7?`P z2)DL~L1{A~o+c+s(Goe=$eAODC>Hynf|Tw!Zeo{B+HN5*Wf_2NzaSsEAss)vold5D zX#x*ZmOm%oZ^$7+27#2nnBwKT7`nSNd-uKa4aR$=_mBerxxfJC4vcPi{^uGUuUoZo zyyfq>qMvZpKjCVA!j=A%Yx@cPuX>`@ePiF-`~FV1;itNmrzUP|@BRJ%s`t8W-kZ5U z`K=GH+_|!7jMd>%^6mt;4^*VEYC*#Y*Y<>S!*zSoUN(P*o#SyN>@C+VNn7ds{+mZ{ z98K!>KiL284*u{U77x4Tx*16e%4O8F#)jj&m7L!AjT2uzv9SO4(OXC3y4uwmM}g+L zCGF;r$7Z@kFs(5I(e)f+na!rTZhBe^YpI28-#l^M{Mb>la3SHSyKZ}2;97X?oBr$8 ztjAWAK~g=|!iC0f_FgwVE-Z^!5`_)d3m&UM$nwxP-@I9k zx?}ZQ6P4RyT-h3bd2Ot&J5jzV#=*)hTOYOF+1!**PaCT2nxxJ+Uy;_r_k{WM@L@#h zO$arT-^A(7^POok`7Ls|mHal@Zzq2N;ds&x@;fQKDqTqaBJ$U!i^-3{M*b4=my*9a zT}J+L*L7Bfner*OPw(;gqKv$lu6WOOocoq{Wpq!&8(r z!&A)M@}F-524+eR*WCTF|E~X0(~d{3opHz%Lc|*_TsR%!Z-Hyy@zAxC`VhY+v+HYL zxlV55_hfOu#jEB{A8~(>eI0!8otIX}V#GJ5Sxcyy%PX8TfJYNf_}Z zOs8VT)3MWMV!A=hQHSQb6(pdj>WQf;X(~xVGBlMZ=>%>K{Aq_tZ&=k@iZs^?o|baO z)k%HHLMXZ?w)sFzM^n65bKQ})6!IIQgJ}-0#lcm2rCaoTd!!jmINu%}TcuapY2lk9 zI4F-71>u#h)bXv625@40YqSBJ7~h&MXySK9=F%KqONIZs^!pI*{>=EN#s}I5gAYvc zok!xEj;>PVFV65be&16L&a>JIe%E{-Nx{!Jcz?08m@j$C!TCk|B+pkq#jg$Vm8-+r z6290!bEnTEZ{Q*n`K0hQ3IkhQ_xWN#MrT zc%2x$N(4JI3#zfB)@HIs>zx?SIvIO+Cbnl?HCwe?Nw-@vOk2)sYn@c4l1iaLyW{bu zl6?O;_ti~HvS)V>#kuF6d)|-#eNO*nUS5s>w|-CS$rri=;cw|hbv7li@`oltm=yv- zmk=-o%t2F^nLRCC7WTAuS=rOpWn)i!mxDc>T~79Nb-D1g1apRRyK+rbhBfFO%InHw zVO!8Vl;4%l!uFtN$lK*b*b#6B3x*223R&0{EE+2ADmDp{V{oI|JpC!Vkv=C_I^^r} zvGlnJmvxmP?3T&{dC0Y0PpyWe@^S?Gt%3ZPtX-96;gAsUyd(s?ZJ5t$yN1OUA-32MTg_ri5L;@9UCUy9h%Gb3iY&Gqu@#2c8WvlL*eXNpIu^SIvDK1S zYeOxIU5i-JkhX5j+*mXI(7s2Gi2mV#I50F4l!m0?h(9tA8V-y7Az2KD{DFbtlVU`| zM}I^@tQ;B=0|Wj2l8mHcz#sAFghQippA>G+`6czav(c2Y_;hDL`2h;t7NMEdIMCZNG8Q=%8s65tWot`#AR^s2g5>^_ zQn+PsV0h5KwT1SVB!`d?i9rXHI6TEZ>f@D|QGW*oEmznA}mt*`I6vg7skEA0zkPt>+9 zd5T{(Uv^w_T+Y9g|B+|IXNBuxJClV?ad%THuW))aX8BHZ$z6Ey_|);a_1E3va)D5| zez{O^7oI=9f(8hE z`okRd`mxT{^&yInkM{CUky8VFABE0fsSgAsvFD@|>EPlc9x>EAh>hNy!#?j5(VH=`*B>6}6Qy&0!bJ=N`IRx? zwFX0>(_wLR#DI`O96a<71bIc_u`pUJ_Ju}+0ptyx7J~z)C1f86x3==i2(&Of#&;oM zK42$NpN%Fl6RxmEYWYIgu?)EJjDw+p;U=_tARGxdQLl$014EKt7oWJ}W5?K3H|X^= z8X81}2c&+nyL$jovAeq=ECu_U7}!HH`f7Cak+-3ZCDALRR8)?>D3p>6^W3D3UzVa- z&)P)l6wAq~G2~d)mVth8I22L(-$2>3luFIwP&;#I8`K5XxT<6}j$)fOq`dG|$<7V{ z(S!iD`FGKe4YYd5s0DnNpv3-WS@H)OR#(Z%2PGjN{w6W#AL3cIklCbb(wb3uzv{X6-1#d(WVwpNkO1(Wkag-#gQxx>yZey z{|Eq=M9?7}q);hp4pA%j6y^wofil`0+E7W6QQG(l%4cLkPfr7%wI)$*SrZ^YBm~k^ zYU}|VkyUa)TNoOY$sh|vELD&geg5J42w+1WN?`3(+ou2{Y6w9_Wwn4jh=`$nmXbG^ zy2%@FMbV4NE;e8Px-wjMBvQj){*ja)nJZO=Cp%_es4V zSvWOD!@~Bu3X-LB5otIKWyrffBWXLcl9wFiEsNhNQDJ+F}DSODftzXMuEsq420I zHEMJ%Upc^%2mQgY)T0$=Y%C{ku@HE#(ONCpcpWWUg0l*a7X5u7OxZ4?BKYcSw51BL zwG?Wgnp$|Wzfo9yqsTXB{Z8v*(S}6PhInCpy#ArM z_t=WXT$H~onDg>)+Xc_sxpT?MzLt&pVMf~rOcU0q<-B=7n6PB$oTK0xRYAzNkaNN|VV`h-Z`Al_l&H7~ zXVm#^G3p%D(3<)M+%w9F+M~8Nl-5kRqONSH4(+j?FGBemiZhg9qcT+C2U0q}UH3xP zQqGq}tx;Du^^`fZiH0J>MO|+wtImY>4XS*PA=O|u?%0H~Em4Qs6Y$1nKP~NJK&XTZ zRLp?Yd4gzqg}T;BT&!0$jS4{f{9u-~g{lZ>u;hm&0^dZF6QpdVqFQ_O%?XgNF%Ve! z%Id}j(2G);3ASLBrl^QT4vS|)@@Xm>u)Z%841#cHG9ut9hG(>L_)-sx4dGF25EP)& z{g22}|G+uwyCgH5t$x^lDm2iia6vsfJ;vC4+M?7cz+ZiUdPgJaEDv~hv?n;G1Ix}v zr@R64lgjTMgERrcqi!~G9FFylf@hDUtQ4Pe^o52-fL>EMVQ^8(r+jtXyBX=8auK)C z&4f@nY*%tPxd~OsP2_E+%Iq8lr<^KgPdQZ-m$LNs^`-2*_%P9i1Rl8K5Y|c~H|{a+ zXhfVw%J84T15~X5RGqXg1?JOp9DhK;XxU+G?W>ixRp`a=olx=H)AbFKj& zJQa)i4T=1QNy}1hKGK(z%|0{pOzfeB;)QeXmnKUNPaa$JL(T| zOq6nTcLzd!KuI-}&H`d7Ws0P1Cy3NaIUgROHRlheocpmPh!99wdqbfhpK0qcz(#o^ zGRg!JQu)V6Bb4Si*&zr8Ci@qt}bkVebc5r4eRx}feJ^T9jmGOm|A8&kX<2#SN zU;NIKiLD0{^@rjGhZ3&CD>md_-fp!WF~v-;+ppMT;VZc-0=+N01$!aJxow~6maEa0 zbF*aKvJKB=pvA&v2ZfwMVbN^GOvT*3#j2)6Rnz?AsAv6K>*u=?RXY;}4=htY6p>T> zt6YRuEGY4o86nSG`NHK&5OmH&&VS-~i{aS2QiVwS9fv`90YWDi*IC7Uqkj_GwV zNIw(I1gt2|M zrEgSbQg#*kYV|9XH8%qq2c-LY!ONU(Z56q=QI`b}OaU>}CT8}rVVw%$!s{A&`hAd- zfLsSe=WSBje-dp6T~6InYaaj#Vc;3v3rl_(CB7KJD?#6GQbv=#iEe@JOL^|e*p$NCJO z2^tUMAVBKDc>=ZTW9W^6QtS&sTQUG$3H4E{pW`8=8fh3agg&>5Ux&n+;W0IeGr+XY zSnhKXg@4QBTnL>&xkA`NDYPFbICK`c{&cuiJjhx9>6Ux~y;=SAC&&^$0S{b(SMXNMZTvys>%l9*Yo2XykH5e1ulla- zcxl0jSGQh%;L-!JM_=2$P?4zEJ!!q*St=9p$Xlx1FloK+ zEc?x`Y(ixlYtWCX_N}*a;)w7E<0R8$Um9caF-G`h=gY3NdDmoDjLpcxIzTP=0GmIJ zb;!mXM6D-HQOh5gerW&K!Yj^*HaFSkdQek=p}mTma;ozW<<|oyVc2aIA{vQrl%+)q z^gLjUvM4A1*rcw;uYoCw+6GJ19QyMOB{*RZKx-Zl)Ep+^9&N{3&UAX)UvUM@5l!{c zZ=Q5cx}fl|yyTv6ykNga$)tG7aC*s6N5AE9p;p);giU9$+P^87@OR;fbCz!kXHAV( zXn^?&W};7HF~rps;eX{6yziN3L2g8}@7Z|8Y&_zWCIp=_ksgzpqHq2>LAFqn#!P1g zr9tM-gN;_U%VerNC9F0 zZjvMh!|lx~wf`})gtx={9AvxMlDFoDuYC6G%-Ka>eZp5i?@ao(Kp*F8jeA=^zfn~2 zE5Vev<`=%IWec8Pgo(fWotpK+zjJM|ESR=f8uOVNkO792Ya|pNI7fgYWhDu{p;z{S zFkuR=#lec8L0j}mcPU=sPhZd5w(#tduWa_r%$e_;n>_q$i;%w^B^MNtN_5dHCcI*-Ea}}iX4+eM}+nsb6*w=LVn>;K~XmF7Z56hK@9+^r3=D6YRUp6RdAaPIDYlg0-7X> zBuxOQmI@(YWfl)Myj!T<^d)LKV*-GmhD;|5AdPBB0HEy;tipvK;{Q4j0dWw_MKx;? z$aZW5^ax|igeZPV(>!i&ZfVRTTZ0J4>I~0Y&-#O>c}fCC@>B3q7N}fcr2y@~h+Iq& z4q1Z1O`ilynm~Xg3vxsXG`biukh1lYeGK2IPAaY&^l8cgj{yc#Hv|@d1jJQ``M#yy z9VWh*Q4HkqZA)zL_}W$5HeHzb*OZxf0uefYDo3TAfTzT}QQF@Gvqw&N$3caHvC2PRtmWeTQtYA7C zi+tqUv{buke&76qvE6gdCEwcE=tsV$rLr}bU6)+3hU;aUZWReN8*f>Jja!#NqHMek z5lZQ_^t%&rXBFd(8_i$XMkD?A?L64%VZsS{H@Yd47+Y>9Z!f%*?d!uJni;83fjlM_$a{pF>L@aSAfV@$kO}xz6`Eq`qp)5I+onV^ z#Y?Mrgc}dgE>*RQN&+xpWMN@oE;S}iWimBpT#AoG0i2$( zGOc`LrT64$4=B7XYrev@G9@jzRaW8&Fq51IB(7i8kLeO_B~Mu8R(pCz$T|uvr^axz zatzH!5;?>SM@9!2Ysw6&bQbr^$wMA7PHw|Gy-1QBur{b-k%xzaW9m>*JHf_5{2d_C zw%SILhcpm-7l0j^I5IGzX@VLdQD7Yy9~fzoPM+k0BQ}7ahvG6cG!z*gM&+y@WaM*=Wz=Ei!% zn!kG8Qi0IBLJiBB8=`TBKna~9Z3e?#R2Iukt5P0-;2+90u?quC=#55DiDoh-Xm#~$ zY*bYRhd#P|Swd{KN)ocIc{8hua3d7N!4Q_3+8US%FrX6BItkBAs8LrayxQgxAB(35g2(F|DVZ?v(w(13{uh`~x1st^rn!T-wt z0>lCpiXeB{D9>!%mCoJ{Y9bD`4A6F3Fl%{P=+ie8QOblFcB*&Jouhr$0*q>d+4zKc zcrPqcg@C!@UTw%y%024M(&}-vK%p362g@i%v_DM<1Zw_HLZApycFgHCBAEGNH8z_l zdr+e*)l{Sn)kcr>osOfRWmRqhcDmNVEFx|aGO(0ZLrNRks^QiE%!s-*aYjIxut#dt zI-|D8IyF34r-t;W$`8nAA<7_fC&L*_jx?$tBb(F^+T5gu^{3iP^$Bi8`HU zK-8gYp#OHFq@{WXi)YOH=c)*9)ym>Uxs9i1sbCYp5ozJ0Jr;?xykOpz?4NR`ak zCc>yp%B=v{=J9%{KDeUf9to|4o5%O7=uInErwV|*{D|gi0`UccaZXw_xD@>`?rGx{%M{i#$pmgZ2d5Q!d^!SeK`)qmh9i@p{97Zt7^t&iesH zsuFN^lb{|d9QhHJ7jy{Ep32pN5?Dti73@M_)0MK4iAt&>Jle|-Y;<#ZKMIA#9O?Zz z(`sk-U*Jwd^1w-mqKJuRTqq&$lx-l4E~Ik4;SY{V-0~=2vt8+yL!pQ&e_|bEU8P>a z5D8t8pQm7+N;a_cDf`IjlT@aSa>JCLJqX+r(&mnHS|<=UUYa)inh+c(goN<_h6g#6 zTPUkA2yA!_MKY8rEC*FPHy{F!ND(O2i>4q}aT?Rq;j!Qc(w_j@iC>JW> zHB-ly^2+Dd&25S2txMPZ6ulsTRTlGKQ^wy?CP1{F#ZA+E)^QL)oymHgzv71#5 zlh$j_@+I}j<>;``ag|O7uQ_XPc*;oBwdko&c zm8@!CtU8dWI`Cod&rg1E^5>^NIGwC|Z0h*Un%c<&P)(DiSMx`n<|S{*tb4{icVcnP z?!=ni*S&2wc{Ae$4a&DyAG`d-r6(?TU+SJe@#a%kpGvNI;F`DfZ_Cz9TNOFNY;-0X z>zHp!`gTlPKPxJk-7&Lcwr!>@R(!o^!%|(t^zmO5moMiE<<;PB-R1FI@kU|QQeo+I zG+w%4SuoY_fLE|%#bP1jGD}`Q7~{1~q@<|iY%4QwqZPASGeJZEBb1q6)QL}e%w0)Nui@R9GxA3yfy6IY*Dyss^BU)wwW^WamCcFD=D7ReYg;^{eIcB9U7Fvwa}oH_(&?b zSX`GVu8TdIEUpLix0>>fntovYHS||UQHv#S=TiBa%T<@E7R#Fx<<0ZYCd;=>+X1R! zHg@!;r{vhudXBaV06kcB-vf@W;J7 z{(CXQP{lo=efi?5Hps5{kEL7VmcYyPE$qi!r7+2A};+U{ZSf{|aFjY$K z>KY@YFJ~^R*=ZJxpkWL$zRd#tCmsE!faxVLGaZ5ox79pQbaYyUY143n0d@)5EV6VJ z3vdY0eawM5RiGuv^QVT4Na7{)Myut`t8BMT8B~g2T38}w&Ka@kf_hUU|!Hr;}`0A@!-GZ-P zSHPxH3u@c3rowbII2*=Q$AQeMp+d8Frfpq9XWQ_<^6%k&&-4&X4Ct^FZJr6!JrG$o zRA`1YMbWNs9;vI?N9X~O@=XlrgUhccO??1j+eB>8m<8Q(Qcz$PJ;l2`6 z%HGYyt>XtzkQFxgMwPkNj#1#;1KGBb5hIfv2S~i^XF_Ti&@q!bm6HoM|MLIAvGIXL z@Oe}t_mjsEG8-)kuV7_4KTHG=8!-80igw_1i$4;P8A_HL=;Lb?Z#^xIg<-=D>>LS` zx`1(`G7UEvN@!1E5x$-k0J$~}YlOkI_V<%!c9_Zt(I@)|vr#w92@wPeW2x9VY(&g> z)!n9q4s3+G;eldVT3a*exS8uwk#9-aT=8OgQ=+^nS#sax!Ot2uz3IE^TPR-K(vjHG z@p0n;O>MeVQ4`w`tB+S~T&&oVsMw;jmC1_sX~&Y+H=93`zoJa;iVc(ecY>v$5T;lg z51MZ01C!2ezr6d>?)kE7MO$x_u3a{pO16P9@)d$HDkua}E+|>_)+W5QKiEHSeKYTB zUb61~c-_vp_kl(4-h_AWhlM})ec=0f3SleRl&P46bpA^35d)N0~<-3*d_a$qO zUN3$Ks^9W$pkiF!i|#4+h5RK?>0~~q@XRTfwzA|AOb)DNh)~E>I>hVRFpvkkv)P^)Aqr<7Zc!gkpsJpw#C_;Ub-N zR8ISm5(`zzFb0PzOsSa}3?nu$5avf8=@_nJ+pK7c97-P*3tI)nvEipMagi%DAwZs_ zvS1&`8&fzrll(_`1Ii-!$ij?uQ%yupAa=Y+@17<|i(v{@h?fDJ^Hon;|CRfmG8RJ1 ztUW;lUKU<9zigQmrp!}WPe7j$@v`m`&p(1+8N&LA^uT5!O zHyse{OxqAdo-@{ZF9P4AMwqf!HAv0PaC*U{AyOG)GaI^;1^g^74`E};_&+ytGvt0= zu_#PAck}b)?c?=^Va>(|s|n{Z)M3&O0jEGHxBbVv-`c&nZGU3h{`U_jw;lhe@wfsF zSsVC?PAhK%k$n6dI<*F*m>~3sJqk7>kT+hEwGsc8s@#e1U%-YD;?Lsg2ubG>xwT6r z<+I30BbwWOz2EDmpIDVgkp^ba-gP-s}^6$sT8C>z=Me8 zJtWPN;bbH;w;3-tbR?ZjqN2jY3_*zCDVYw;24{jvPi@>;%f~G{&e)3#DTi`^h$~%b zGZ^fBI_UN8c;hN1A#ax2Fp2=-4Lk6L*JN7@@a?+dny;M?&o?B*ZIE8t*1lt1p~te_ zuADrgC!q*Dbrcbp+jsfsrK2%RC1jWG2oSNO=?HlJ|O)u zxs?&L?#m*ElO}-dEUf39P(pTuz>f4}D}^1=xnm7Eyun6aM=i8P6!gMC1bb&80}_K3 zkO7HhK~?|EEwcv*@wtK0a#HyRm6PuZTKggPfu@aORzQIL%JFo+c1&J5e$2>kqPhuR z0edj?#SJF3Gwe98BtiYd?L3U8MjGm)`x(-2V~{{TOWf+juiRLG^FFv@gX+@qaje!P z;vnl??rdOaRy9V{?`@#=DR(#UO9?WM?dwOh*|jQ)kp*E~y4!?0tm%>(s9Va7Bh4_w zAUA+3Nyx6MtxZfr#;iGNB1))SK!J;A1D$WkfkeeLSz<%!(})T zB#T41wt$s|`?UN6xT=ToXmpznZp49gnQ}(haNbl$Kpcb@;cZKmG%@txA7Tcs2duOP>La2Kj)1Dp9vUQl&ygEvOLA7~Jg)3gJLP>nlWs zu=`g~N~Y7zU`Xq6K3AtJ^e@nq5JkgW)S^pER562Wi-JN403-Yr!*Bz`f2Oe@#-AbV{KAXROg%GqIGMM8 z(tI;FZ?g4!TkXxF;@Q@j)}=h}L+N0+<>WV63i?3*hf!~9rLjI%>US3(QV{&@VY@%L+fzVU;NfALuS(Xao-lZgkv zk=XG>yyl5S`IGVDCt({~PiS#44@_XoWI(Ee|+k(5WUJjM@B8Dnp!?9L74$3+Mjyp40 z622)%VXf>|vm9nwd$$~RVA)dMM5E7HuRDCp%B%qc=kdA?7}y@j1)j^7Jm_m7Yl|DL z&%0x}qOlD;%rNn~)$w{=7@d3^BlZ~XRx4yID6PQ^r?He?w5xc`)>xEs8?Pns<5JGM zVBY}olQ@QzH%~GImJmAKR}Mf%tEQ49<^{>v!Gscqw>3SVGS7q z!xk5J&={{nzBy5 zwO+sfL1UE1*yvK5dwN(4S`6HEPY)wXh``V;KN6`4nvD)doAoWgn}orlSG~Bc_bd)~ z@`Z+#n|L^n=hB8)!Fd+LO2ZoB*hNGjljmk8gc`O{IdIN8%72CoD(grrIg3cUhlfe9 z#!HNIq@lw9NpO{@SqA>g)-pSg@^v~!Bxuw}ty7(b2T8zANAVz~*V?8gVtR37F6D!6 z7w|27oiMW#n^aCA1<+YCB$ zbEixyxJJ87Y#kdZ&KdqLUQ^D8q%mf4#93iG$E`E~@*k47i9E6}lIP$tSvOnNBEwbu zmJq%p#(imnO*9h!aEpffY2?Omo2{@`8Z=+`X7knNcWRQAyQhv#9-Qt_x#bOs zlE%q{;G}T^B{CU}J1alGZ4(MAUp*Z6tcTLmwOz%}3pH`~Hd1=Jwto>WK@Bf9Zx`P7 z>?^i>U~%vBSU&LB5Y`EtKI7`s=JXY0yfr~?ust4htVxzlD?nJ=CG z(WEWe=8IE47WqB2iZje4TF30A6Fq!R*z9DR7)}ALo)ON9{Dx+PEXeoJmkDv8NX5l0`e>?j4`s@T~onU~$ngLFG)LG6N1oe!;fX z?-w)(^R9hn%UkX?%TH|x@Fmnl-JvDhr;Q6E=dYA+29p(UZq`ImKg0xLS z8^j8r5bi``Oh&#?y^dRbCD&|CI4dw4IW!xal`ClGo|`}Vjw4yLH}2l6&cYIjClL zK}oNIHcK{3c|+P-fIut2r)CzwOCg^?el{b4ar$N@Uj=l~Ag;$5!!~}CGM_9P$2c}v zWDbS-sWMWxb6mmi2B0giNu|X>8-r>D>B6)O*;H`?d?Q}RE7K<`?K-g{nzC;o738@E zMX)Z!tOYLx7ppfXsyBaJy>+S+@a!PW2N$chB&xQ2T(xc5x#TUK&6~-a>yJfVfBwqz ziR!Pt<4jcVz3$zIQ+I2&Lrt`H8-sb1d7QB@F~uM6Tgjc7j31#HoXM!B5aTNLQHTMM z2Pw3lybkghyWyhHLGlif$5!_N3Q@l^PvX(akjcA2Frx?_F(Ym;Bh|tI(_s@B2U{&2 zBOaR>1K%+iTbuB0S!R*#``GiQD{sYyM9Xfwtttk=9Uk*r-rR9@$3p8n;e|bkP5W0U zZrSUy0XN|OAbJv$f#+9dGFEKJ1qN5YDadWx%x((86XQ!a1yShUHw95Dep3)a?53b) z^n3GimCaUa6dB@`Gc`0yefZZLtu1mZPh!~8nVLH@G{hDdL~yDe35RjP4rCL-IT2sX z>Phn?CzW)EZ&{fcuqJMuT}abC@oS$wOdObl8;Nr7SS~HX3@1?w#f(V2>UE*NtFC=! z{jFP_i}wrGjr7|BMGy^oQ*PtMX#PLKU^DeQr#{$yY;+)t-E0h^-?*=P#6h~2lnI=M zLps~RXmT>H9_Sxn7hxWO3`!U1@f(xLPQI5;?SYRW)`AXWDRmNeLH6Mk$I1e2jbmAK zOC@_v6PX!X-|!UsuFBmGf?79TxYSVJLdTj~BB2&&y=48$o_d9k_!1fU9ZbfoT9xX( zKWzBWWJR+EQQBB&6vq1a6$9ec=tdp-2F?zz>a9Xz@901fyp=XgVOB0<+vq;1e&u%% zRMU7>C&z~@{M*aK{sN0cm5EV!wM?wUIK&zo&Vh zO;pJ;_9Gu?R;I&}t|5*U&RVlAc4&aMS z>p5i~9U;j)Cq)JkqjLGDDG3{83ql~)jHFun7^jhH9W>haBa40`LumzH+Dq<&i^ryp z&6RQ+++_LY>u!)PSl6FH^J%#IfbY2CJJVn?HBKkL_R#A-@*X7bA47iqoC+WhzoH|A z|0@DSe&vGvs^B`&oGUr=tqJjdt`FU==tG@~K9rtBN#XfhP*TVR8L&=C<=WOWN(xVf zlA_SPDJe?DDJg^$N{Zqttm#)K;FW`7>Tnt*rK}}kg$!xZDJlFik0s^lKA{|t=f9RS z{s3LF29!+~`1pfR@zAg707KD_qCh=oJeGY{@}Gusi(w~R6Ws~@LLF+!G>bY+ak`NH zztAgr57ETX?sy62bNhJ;icf2QE+WXS;9x;U`vdF;KqOl>t7XXn0j({o_0S#D>r@q| z-~#wr5!fWrPkgwf99SedaHpgLF;K0ld$lV!?F;OPv@dQc4?<~gAUEJupqLSfSG|pBU8YdFV9efFkaF{hJjNu*{`)a(Mw*V`D2Na3QUpe1j6j3S zZ>YsFdG(V*a2-&7Cu1~>TNAPwB^g0T1`%d#iGcu9>oQVOTypv)h%l{viX4}+Xw;Y5 zcDlx#C`@C=*z#30k_YskBWYGzqp5nsJ)FKe$SrD*VbrrwSQ^TupL=@QieDl#8SV+x z*zJJ%`_|XYuUK`>-jsIlA1wSe++e&}FdHMU%ExdUp)n5;UCe3Ujkgh647U+l^z&cY z%qoER6-c4oMrete^&1CuTm5VtQ`9_Zg~h++C8yesh^F$%W_LGb-Hlc=IkjpWB1~Cf zH>R0tXg3^M&I-8eEmhvle?~>U)mK{u-6_+#G?Z;c$;|4i1A*_Ee!Bxry4AIcYAv{8 z3C6z;4iCdA%SdPhr1LdY!Vb@J()m2ctqX`9uQ#rKjdV5`Q!55qBLoJC4gLJQ@ane9 zyDsgzyyw!M`Q7gnU#o0qP!Si%ng;?5W^!e&g=&42Jccldx0N4*M;GoBmxD`>9R!>K zoAIMka_HQc{4u3jq%?Nk1=ecy=0_T^lm#EysVd$fT4yBM*~|Mx;*s%^tbKZhdhmPr zjvnA{po(p8Z(Rud$Gk7Rj^omz zWI;QQ9j(u~V7Zt(l{8r(afy<{aou02x zR&T{sbBpC|iSo8&`JRMlPu#hOEv>Zipk+n>D_h~EZ5)ctaQd&r1WZa#&7I>G{K^=% zMFNTC&&c~*c*ZUjQJeV+WETHqK{GC{>QzRH3F=rGiaIZR=BZrtG$lMu^Cyy?t+?Wl z9q;1QgU*OD)*=@f(uC&PgrCAR-dku+7qVtE8l<1ViCVueyk^1C9UUACS+5DT0hTDk zM~86EZ^mtuI!TYO_%ok0yir2@BHpKk%me^>#;J!)wjeN2MJw080P;yZG?b!*d5?9oO8AH?_O?4Y%O8V%5_v_(gOOGImzK2mkZi zB|H^ZVcFBNLZDNTGw|=`!;Sj(|Z6@*buU z{(A(7Rm%aZR)$mf?1KDquwnV0izlZ}ez`mAJTSyT9_2Iyh3+SI%xtplHO+;I<=bnD zg)vTeDtr|M!JP3_yJEGJXxDr#rP-w=*~L>RSLv54SLx%auyqu=H(N)kI9rDhEBlri zAr8c7AR5=Rs{vE_+C3c2bPb369F1ckd0pfYQcv0OQ#&v<;M4O7MSq*3a}7VC!7qfS zV@;=Ur3XVmGQlk%Cj8t?SSGlb%E9l?NbKhi!c1kC!mWj{>Epk2kayynj~wXUfB3-u zhmLd}()GejG0E4%0jj!^JjTx-rBH;ttK_{+9&H}RlXF^z&3pP9;BmVL?d~v558f8&dE0pmwM@7Eoj^}E-~S)-nDo5> literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/meta.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/meta.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5a01231ce40e932b31d2d08513a1ffe8250907ca GIT binary patch literal 5465 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/nativetypes.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/nativetypes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..5c53c8fdef006e5a5ed4945572d4dbb2b1c6ebb1 GIT binary patch literal 7014 zcmb_gU2q#$6~3$8mGv)KvYezb$;NhCD?f6b#Bo{@z$Q*eC@!tzLdB1=(XMT&(#pNN zwqqlA(vo2u21vpHc4xvgonfZ&1g7l+)ACf37an-A>M%A-!UQNY^i3c?v>hHe=dM>39J5_ywx(Xg-IhIZBd)6(ydGy1!=1qu1dG5+tjVehwL$DxY(BW z@ntB+nZ9h=P^p|vs#9_n-o*)->MAm+aXGC4<4o(>bP7fOld1-~MxLITnNZ({O(CeL zdymHRl%AQRL-%6nU-a&0DP4ik#)eLxbol$cWS=mrcC(L3} z)lDZ=jY+Dda16V+fWgl%8_XP#TE(a=3LynBk(&-ndb3hL#}zo8n{gPnIgtWq*D3sS zuw8UZfl~zBq&bJtROyry90rcairuGvqTm=Nbvndg=8HAz8)ojY z#(+WPob_S)`N1Qc#AI*7)qA5~jO=1caUlnrTa529r z;9^rJR`OX@Gd*coPTi2Tlxp%&L(!%wn!hPz@@b8tzfb|+Jm$D<)6nX_K4Mu|00(MG zT0M85drH-&y0htX-4o1C4#s;9bn6gw_D_JiJf`a1nY5OX4|H4Rgl442CuU5)^`5kL zmbSxikRXWuOCT4>dYJe^KXP7~T6}&bv}?uNe&P6^yur0#@({Go5pTeTgJKhhU_emr%3s@NJ|33Si%CBY>|?gqE7yNEx0rDO5L9bZS;ErvWLBDy^v z{-cR(>HYww<==A6`?Ietdwc#tI5Dyo41d>C;(_}}M+dtV3lD5_-R7eMJIL)Ftpk1h z?ZX_<6x3CV9e2tKi*zbWdI^WZC3sa(9IBY{RduV3!Z(&f8WAoEH!FIHCPf52T**zP zach>kc-0NPI3XE%lqS`isYZ%g7m7>uD{eKA*-?|(+yiIkQasRS=)dbz@s7F_AGB}& zAKLq&eR#$j3z(517R@%~uvxhu98yuGF+1@|)8pyXI0Pk4QK?=Z`gG~s48$)(k`)Ca z5A)r#XTkfrVrS1nh{{iDO2yGDv5={lA`2^seaMDvhuI7Lw2Xee0GVx=EOA3ika6j5 zkmy)1(Op2z=A@#I$`DJFqiIdfrf1dJ-3`7b{xP*a>TPn$oHgyQZ3~9MdG`7^0Zl zV!SCJdZ377D4HcobTvCl_o74sqT^g3Bw5Q6PFislBZzJ==rQ|n!*%(X-lws%eLyad zyTQnnfrXP-PcDtDv>jX;xxrl`h5w#Iy_YY(UW`1Wv|klPzPxQTdKFz;7P^~ zBz2wIf#4<1@Y>=6XP}j_(kQgpV1had!Z0cD4Pi`m2E&9t0$s&irVC&nTYS@nDJz*W z&QpwB6akLuIhC8p>v|fJAjODc`fM0@TsC9?ptx-@k;bvbqeyy?96)jeh>jTzcH7?X z*6Mzbr?X1Z$XjF2?)kTSzCrgh*zHq5E|8LwG)EWwSN)6XE85H2N@)MQ_+GGWaRjo+ z-SC#xaC1cer5t^fB_TWGw|G8UTiCnhA!4n+cpA@%)pOr!;%9q08N?VG=-$QBs5yiYA(0q ziR}<l*UFT(8g4j^p#d@YxcUOKw$?O5}LE}y=1`pWr*!qvj>e4Qnp_^btK zydIx}9v-+J;l}F$xWD2+*0)30Fu52-N2Y97(cx;gQi~1NC+2nIKg5Qr9-4=aS+4O% z>fe8|_I_a&3hPs-U!O;a+dTj5nx~Ip#b=QWAn8Jaw#c@c zb|Qxay-NQxkc;H+4u|L}xrj4da&Thwdh=`1SED5WGtnD8ulFwXBCd&+dAq*kPo;P~l>V31f*!37{AAUPk#z)EN6?d<-Y+E>e^>m3x{*isw^T^=pk>TQzVfJ?4 z?YSJi6fKLOQF=(IYl1vB!Dp=ryxn*E%OX5WK0$1&j)1(S-nK!#4b;~`z0LZ3{OAC1llQmBmxZmr_itO=zvAzD@r1Q3sJCHR?8H!h18Qo^qVfqr;TmJcPmEBV zh)@BU{{Q+Dp+DD*GuC7VtSz!riz&d-1nw7}o5ttIVHctyJnWSJ$UYZ>O@q8#cj3UL zAxr;^`$0AQ%<*mjYZ(EWZz>t=ds6|;>S4cDRXg_E_BM=%c64u6;CTKiIG&S6xw=tq zwsZcb<2)x1z{fq!uq-qj-Wy z;=P0E9z35?CyaDnGre_<%+R>3DUdEyyBZGS3=9oJKNL}e$pfU?l)d5V47;9&IW2kTA}+6Gyn(xRgn=~#^%Dn<^iL=L~}I}E2^ zci%^PGYony*6$>@oE`o9_*;89pc{@nh*mGdzkC+V@{5E+5I`D%qDH7#_twyG4Gg>l z7jTXIuI`HMK^|Q7HkeVRWU3c?wgj&n8+lyKgAb6)f^`x)NEGrd$TB|>7x?dpBAF8k z0-S+-edK#hhlwUuF6e}5yr!!|)8P3bd%UXW+k(1h29HUbN@LIe1rL{bj-lBjXW$yH z&f=tLxH-c!Y>KMvB8_>Htj}mE3GbRf7q6_8c+5k;1|ylSw4P+urtj%V%}D30t0eji zRMM{?!JI?U?&-5g5=g!d#K!eiQ>NblsmW=ZQN6F?DQuY8?G26EngfLn^w)s=jeKx{ zz*W#{aAz^Nb2ZrYZm{cac*k1kG#G8fGFrelpUn8%A6{+mE4KH&&EIK1x*9sR5<0f{ z)DN4NL&rWShK_xBCv@x+dc;3k&u)W3F2u-pe81$02{j2l}@K4w~K;I|lahx4Rt3@8OW&%LCs4NH840_TvjMFg=Cjn@BL< zZw7`>qYOzB{yN5*i)3wUY*~nwgn-z$*#FAl%Y!8X?2V^hA6Xh<>>JO&HTmXb8Kou3 z4^`aj;*wY*z`ou5PV`rRB7yyN&u@Bf^{yjpVGbN7w%v5X)gRoPP@J8~!(D9MJ*6AY zF4V~9vpT!Sv@SbEc2{WKZldj5c-U3Ba;6LpTfmqdI?-Y&dN2(jIgJDt!E`;zg0Gxq zFv`NjY_V`+X28yhl_0(mU74<<7O4LWeGaq{Ea>w%@va96W$wd}-y|U-!J=dRlZRFLF;zN5&1Y~b;Z+YJIyxsFo@2`4`kM@^Q zwtk%J;Mx}VuM>EzKfwuHY|*<;;IST%xV|f2T_^A;o#064fo0PCJGdd*1C#j|Bh*18 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/nodes.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/nodes.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..60a93ca7b2e62eb49bedf57edf570ab5635f705c GIT binary patch literal 58214 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

>b+F-ioKuzFqpr6lYYzsqc*fBfgX_0b4k+O`Y R|Hm`vG8TW|Kxftm|3B5X_%#3k literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/runtime.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/runtime.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..db6cbb1613638190a7d3dd586baf366d9b73ad8e GIT binary patch literal 48487 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 YyTc*7vx(>3>E@ja4}H#|#Ax^b0x1B{-2eap literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/tests.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/tests.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3e83878fbbff4e90406f847be01e31361b101d71 GIT binary patch literal 9045 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/utils.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/utils.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..d9017d76cf11e54ad32aa522e11fcc91ac2d77c3 GIT binary patch literal 34463 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 UeJtSd`T8nx%g=yve3AJ70UE^Dg#Z8m literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/__pycache__/visitor.cpython-312.pyc b/venv/lib/python3.12/site-packages/jinja2/__pycache__/visitor.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..6e9c016d57f7a51bbdf55ab51529ea183ad9a20f GIT binary patch literal 5348 zcmb_gO>7&-6`mz`Ns6LE%cAYrl9N$l+M#7riLJJ_)6|eHIdM{`PNk%++LT;zN7Bm6 zU3zyZnJNV+MSv=R(Wt$cMq7kw4MdJxBq$2hIVDC>#6b?B{1d4g9}F}(oq#}n7z}eZEH*ep2^M1bJCoL^O0xf#{*w~jXg!~gP5A?%Z$_r}P75 z;HsxG7vytIFc)OO8fA0N6KkG+x%bRzI%=5IHswiXTB<%q?QuqX2ZyL`D9nn})9H-H z(oDCRLPv6ZHD#nTs>Vzz>q;=qY?-RMZ5mdFrEJyEpp|{PF(wV^(7?1%_9QNsQ znk5oWFp)?bN>;;hD3Lgql{I(8M7bTocD%iM&P3-jk(t?w9cpj-s$B>MRusC|$Z}w? z7%2q?7vy)@6$XQA=RU~3pM}AV)=#&6yzO>i(B*)eH$M9tuu^~a!~Ezu;9S2UE$67~ zzjRX8vdp4W<7#T0PN~3ugmE?y<>2YcY7{3qpCp9<9ygSDkW-z3s8-mhoYibD`ucD2 zYyncBSQeE{Mw7{XoGh^~nWSBuO-hq3i=u;3W0W&Oa*%(}pfXJknYmM{4$9|}u6lfb z%>s1F$Z85_Gy?2h=5>3x9aIZ68NAXmPz#xfvr{DQLPkbAmwp$v;K?ClDU};xjs@9u~D}+kbS#T*DZ7aB~Na%Z*)eYyCNC=sJ%5;3+Iw_y@6l59 zSZVju*M@F|Pm}^D+~ihE{%cMO(=aa^8VoLyJejDS6--oGzIIMCVqSbT(<$Cw7 z*mof2akfC|HWR6FRZ|jZbj$1nfi|&mu#OJhWYyT_qwqStv)uJywUk-^yBCQ9J=9$qNLzgYly?Jt-J%>M%aQ$69{4&nj&s8FEJ5t zgAZ!FpW_DaCUl$cmo|dyOxy_)0B1i(4}n;d6UKudGG*O@`kH2@{0ZcYuYn-IbB!sB z0<=>{)s&27#KMxxJ+V^L5i>yEUc*1>VuLBbC_E)2;73FPiI=~xsd8=!=gFCeKh%M0 zPyoO&0D5FJIR&NOgkc&=FK1zBikpRag~bZ&GIjYNOsQgnMy5~+s)Yu(p)OS@Q~7`k z4n|EQ%|Def8Q_4dMK!~<0X1NwIi-R&s=d#uN~i!Ed%RA;RarQusEX*KD2lKOU2unejAf4Z#C+tc?v~A8(QAqm_ld# zdH<|%;lTgqXl>2=CYl?V!E4@s6*R>LsdxZr@Yd1L*3cwHk_SB$xJ9><3$NCFRa&oy zC0zLRrkY6WGzsJbvn@8-pSQe_7poQl>HcctWvI524^#mZtoLrzdAm4-e$Vu_~c9mpMHgD9MAYI7udv_HmuST=j}8> zbR{^}cY->ba)*{9xl;k0;wb<#A}=!7xz{;fXm&T`13*G`;Pn~UWjWBzl4ZJQi9WeV zpZts-f+|1PKY#RYcxNGYdFXa{|MKof=YyZ`-aFracSmP2`p3xa9r0zlzbL*Pd@H!{ zjS@ZaUe8T>;@USC>4}20+)fM6EO+d=+u60y|CgTIokx~C_AYfCTW9k&o^D_{8i{~YkT4JW&2L+f#vpSq36wGmyQ+HQhV=v zdv3P(Ufa9a-a8*yZfh^KJ$^URUg#@E??j&X!W}IG z;HCFp;=>QmeKdJ}@`iFf{{V?xP=eo#g}BI$5AG?AYvk$6D5f48&@{pd`8;^cGv zCto-{@T}A7(j|CKu&{iaiz9c*DdBtBG|M~IH#m63qf;1!)Ja0B%YJNa){O`b{LeG5y-Ge@1 Pzp!=w?7s*+xKjTGpVKCr literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/jinja2/_identifier.py b/venv/lib/python3.12/site-packages/jinja2/_identifier.py new file mode 100644 index 0000000..928c150 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/_identifier.py @@ -0,0 +1,6 @@ +import re + +# generated by scripts/generate_identifier_pattern.py +pattern = re.compile( + r"[\w·̀-ͯ·҃-֑҇-ׇֽֿׁׂׅׄؐ-ًؚ-ٰٟۖ-ۜ۟-۪ۤۧۨ-ܑۭܰ-݊ަ-ް߫-߽߳ࠖ-࠙ࠛ-ࠣࠥ-ࠧࠩ-࡙࠭-࡛࣓-ࣣ࣡-ःऺ-़ा-ॏ॑-ॗॢॣঁ-ঃ়া-ৄেৈো-্ৗৢৣ৾ਁ-ਃ਼ਾ-ੂੇੈੋ-੍ੑੰੱੵઁ-ઃ઼ા-ૅે-ૉો-્ૢૣૺ-૿ଁ-ଃ଼ା-ୄେୈୋ-୍ୖୗୢୣஂா-ூெ-ைொ-்ௗఀ-ఄా-ౄె-ైొ-్ౕౖౢౣಁ-ಃ಼ಾ-ೄೆ-ೈೊ-್ೕೖೢೣഀ-ഃ഻഼ാ-ൄെ-ൈൊ-്ൗൢൣංඃ්ා-ුූෘ-ෟෲෳัิ-ฺ็-๎ັິ-ູົຼ່-ໍ༹༘༙༵༷༾༿ཱ-྄྆྇ྍ-ྗྙ-ྼ࿆ါ-ှၖ-ၙၞ-ၠၢ-ၤၧ-ၭၱ-ၴႂ-ႍႏႚ-ႝ፝-፟ᜒ-᜔ᜲ-᜴ᝒᝓᝲᝳ឴-៓៝᠋-᠍ᢅᢆᢩᤠ-ᤫᤰ-᤻ᨗ-ᨛᩕ-ᩞ᩠-᩿᩼᪰-᪽ᬀ-ᬄ᬴-᭄᭫-᭳ᮀ-ᮂᮡ-ᮭ᯦-᯳ᰤ-᰷᳐-᳔᳒-᳨᳭ᳲ-᳴᳷-᳹᷀-᷹᷻-᷿‿⁀⁔⃐-⃥⃜⃡-⃰℘℮⳯-⵿⳱ⷠ-〪ⷿ-゙゚〯꙯ꙴ-꙽ꚞꚟ꛰꛱ꠂ꠆ꠋꠣ-ꠧꢀꢁꢴ-ꣅ꣠-꣱ꣿꤦ-꤭ꥇ-꥓ꦀ-ꦃ꦳-꧀ꧥꨩ-ꨶꩃꩌꩍꩻ-ꩽꪰꪲ-ꪴꪷꪸꪾ꪿꫁ꫫ-ꫯꫵ꫶ꯣ-ꯪ꯬꯭ﬞ︀-️︠-︯︳︴﹍-﹏_𐇽𐋠𐍶-𐍺𐨁-𐨃𐨅𐨆𐨌-𐨏𐨸-𐨿𐨺𐫦𐫥𐴤-𐽆𐴧-𐽐𑀀-𑀂𑀸-𑁆𑁿-𑂂𑂰-𑂺𑄀-𑄂𑄧-𑄴𑅅𑅆𑅳𑆀-𑆂𑆳-𑇀𑇉-𑇌𑈬-𑈷𑈾𑋟-𑋪𑌀-𑌃𑌻𑌼𑌾-𑍄𑍇𑍈𑍋-𑍍𑍗𑍢𑍣𑍦-𑍬𑍰-𑍴𑐵-𑑆𑑞𑒰-𑓃𑖯-𑖵𑖸-𑗀𑗜𑗝𑘰-𑙀𑚫-𑚷𑜝-𑜫𑠬-𑠺𑨁-𑨊𑨳-𑨹𑨻-𑨾𑩇𑩑-𑩛𑪊-𑪙𑰯-𑰶𑰸-𑰿𑲒-𑲧𑲩-𑲶𑴱-𑴶𑴺𑴼𑴽𑴿-𑵅𑵇𑶊-𑶎𑶐𑶑𑶓-𑶗𑻳-𑻶𖫰-𖫴𖬰-𖬶𖽑-𖽾𖾏-𖾒𛲝𛲞𝅥-𝅩𝅭-𝅲𝅻-𝆂𝆅-𝆋𝆪-𝆭𝉂-𝉄𝨀-𝨶𝨻-𝩬𝩵𝪄𝪛-𝪟𝪡-𝪯𞀀-𞀆𞀈-𞀘𞀛-𞀡𞀣𞀤𞀦-𞣐𞀪-𞣖𞥄-𞥊󠄀-󠇯]+" # noqa: B950 +) diff --git a/venv/lib/python3.12/site-packages/jinja2/async_utils.py b/venv/lib/python3.12/site-packages/jinja2/async_utils.py new file mode 100644 index 0000000..e65219e --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/async_utils.py @@ -0,0 +1,84 @@ +import inspect +import typing as t +from functools import WRAPPER_ASSIGNMENTS +from functools import wraps + +from .utils import _PassArg +from .utils import pass_eval_context + +V = t.TypeVar("V") + + +def async_variant(normal_func): # type: ignore + def decorator(async_func): # type: ignore + pass_arg = _PassArg.from_obj(normal_func) + need_eval_context = pass_arg is None + + if pass_arg is _PassArg.environment: + + def is_async(args: t.Any) -> bool: + return t.cast(bool, args[0].is_async) + + else: + + def is_async(args: t.Any) -> bool: + return t.cast(bool, args[0].environment.is_async) + + # Take the doc and annotations from the sync function, but the + # name from the async function. Pallets-Sphinx-Themes + # build_function_directive expects __wrapped__ to point to the + # sync function. + async_func_attrs = ("__module__", "__name__", "__qualname__") + normal_func_attrs = tuple(set(WRAPPER_ASSIGNMENTS).difference(async_func_attrs)) + + @wraps(normal_func, assigned=normal_func_attrs) + @wraps(async_func, assigned=async_func_attrs, updated=()) + def wrapper(*args, **kwargs): # type: ignore + b = is_async(args) + + if need_eval_context: + args = args[1:] + + if b: + return async_func(*args, **kwargs) + + return normal_func(*args, **kwargs) + + if need_eval_context: + wrapper = pass_eval_context(wrapper) + + wrapper.jinja_async_variant = True # type: ignore[attr-defined] + return wrapper + + return decorator + + +_common_primitives = {int, float, bool, str, list, dict, tuple, type(None)} + + +async def auto_await(value: t.Union[t.Awaitable["V"], "V"]) -> "V": + # Avoid a costly call to isawaitable + if type(value) in _common_primitives: + return t.cast("V", value) + + if inspect.isawaitable(value): + return await t.cast("t.Awaitable[V]", value) + + return t.cast("V", value) + + +async def auto_aiter( + iterable: "t.Union[t.AsyncIterable[V], t.Iterable[V]]", +) -> "t.AsyncIterator[V]": + if hasattr(iterable, "__aiter__"): + async for item in t.cast("t.AsyncIterable[V]", iterable): + yield item + else: + for item in iterable: + yield item + + +async def auto_to_list( + value: "t.Union[t.AsyncIterable[V], t.Iterable[V]]", +) -> t.List["V"]: + return [x async for x in auto_aiter(value)] diff --git a/venv/lib/python3.12/site-packages/jinja2/bccache.py b/venv/lib/python3.12/site-packages/jinja2/bccache.py new file mode 100644 index 0000000..ada8b09 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/bccache.py @@ -0,0 +1,408 @@ +"""The optional bytecode cache system. This is useful if you have very +complex template situations and the compilation of all those templates +slows down your application too much. + +Situations where this is useful are often forking web applications that +are initialized on the first request. +""" + +import errno +import fnmatch +import marshal +import os +import pickle +import stat +import sys +import tempfile +import typing as t +from hashlib import sha1 +from io import BytesIO +from types import CodeType + +if t.TYPE_CHECKING: + import typing_extensions as te + + from .environment import Environment + + class _MemcachedClient(te.Protocol): + def get(self, key: str) -> bytes: ... + + def set( + self, key: str, value: bytes, timeout: t.Optional[int] = None + ) -> None: ... + + +bc_version = 5 +# Magic bytes to identify Jinja bytecode cache files. Contains the +# Python major and minor version to avoid loading incompatible bytecode +# if a project upgrades its Python version. +bc_magic = ( + b"j2" + + pickle.dumps(bc_version, 2) + + pickle.dumps((sys.version_info[0] << 24) | sys.version_info[1], 2) +) + + +class Bucket: + """Buckets are used to store the bytecode for one template. It's created + and initialized by the bytecode cache and passed to the loading functions. + + The buckets get an internal checksum from the cache assigned and use this + to automatically reject outdated cache material. Individual bytecode + cache subclasses don't have to care about cache invalidation. + """ + + def __init__(self, environment: "Environment", key: str, checksum: str) -> None: + self.environment = environment + self.key = key + self.checksum = checksum + self.reset() + + def reset(self) -> None: + """Resets the bucket (unloads the bytecode).""" + self.code: t.Optional[CodeType] = None + + def load_bytecode(self, f: t.BinaryIO) -> None: + """Loads bytecode from a file or file like object.""" + # make sure the magic header is correct + magic = f.read(len(bc_magic)) + if magic != bc_magic: + self.reset() + return + # the source code of the file changed, we need to reload + checksum = pickle.load(f) + if self.checksum != checksum: + self.reset() + return + # if marshal_load fails then we need to reload + try: + self.code = marshal.load(f) + except (EOFError, ValueError, TypeError): + self.reset() + return + + def write_bytecode(self, f: t.IO[bytes]) -> None: + """Dump the bytecode into the file or file like object passed.""" + if self.code is None: + raise TypeError("can't write empty bucket") + f.write(bc_magic) + pickle.dump(self.checksum, f, 2) + marshal.dump(self.code, f) + + def bytecode_from_string(self, string: bytes) -> None: + """Load bytecode from bytes.""" + self.load_bytecode(BytesIO(string)) + + def bytecode_to_string(self) -> bytes: + """Return the bytecode as bytes.""" + out = BytesIO() + self.write_bytecode(out) + return out.getvalue() + + +class BytecodeCache: + """To implement your own bytecode cache you have to subclass this class + and override :meth:`load_bytecode` and :meth:`dump_bytecode`. Both of + these methods are passed a :class:`~jinja2.bccache.Bucket`. + + A very basic bytecode cache that saves the bytecode on the file system:: + + from os import path + + class MyCache(BytecodeCache): + + def __init__(self, directory): + self.directory = directory + + def load_bytecode(self, bucket): + filename = path.join(self.directory, bucket.key) + if path.exists(filename): + with open(filename, 'rb') as f: + bucket.load_bytecode(f) + + def dump_bytecode(self, bucket): + filename = path.join(self.directory, bucket.key) + with open(filename, 'wb') as f: + bucket.write_bytecode(f) + + A more advanced version of a filesystem based bytecode cache is part of + Jinja. + """ + + def load_bytecode(self, bucket: Bucket) -> None: + """Subclasses have to override this method to load bytecode into a + bucket. If they are not able to find code in the cache for the + bucket, it must not do anything. + """ + raise NotImplementedError() + + def dump_bytecode(self, bucket: Bucket) -> None: + """Subclasses have to override this method to write the bytecode + from a bucket back to the cache. If it unable to do so it must not + fail silently but raise an exception. + """ + raise NotImplementedError() + + def clear(self) -> None: + """Clears the cache. This method is not used by Jinja but should be + implemented to allow applications to clear the bytecode cache used + by a particular environment. + """ + + def get_cache_key( + self, name: str, filename: t.Optional[t.Union[str]] = None + ) -> str: + """Returns the unique hash key for this template name.""" + hash = sha1(name.encode("utf-8")) + + if filename is not None: + hash.update(f"|{filename}".encode()) + + return hash.hexdigest() + + def get_source_checksum(self, source: str) -> str: + """Returns a checksum for the source.""" + return sha1(source.encode("utf-8")).hexdigest() + + def get_bucket( + self, + environment: "Environment", + name: str, + filename: t.Optional[str], + source: str, + ) -> Bucket: + """Return a cache bucket for the given template. All arguments are + mandatory but filename may be `None`. + """ + key = self.get_cache_key(name, filename) + checksum = self.get_source_checksum(source) + bucket = Bucket(environment, key, checksum) + self.load_bytecode(bucket) + return bucket + + def set_bucket(self, bucket: Bucket) -> None: + """Put the bucket into the cache.""" + self.dump_bytecode(bucket) + + +class FileSystemBytecodeCache(BytecodeCache): + """A bytecode cache that stores bytecode on the filesystem. It accepts + two arguments: The directory where the cache items are stored and a + pattern string that is used to build the filename. + + If no directory is specified a default cache directory is selected. On + Windows the user's temp directory is used, on UNIX systems a directory + is created for the user in the system temp directory. + + The pattern can be used to have multiple separate caches operate on the + same directory. The default pattern is ``'__jinja2_%s.cache'``. ``%s`` + is replaced with the cache key. + + >>> bcc = FileSystemBytecodeCache('/tmp/jinja_cache', '%s.cache') + + This bytecode cache supports clearing of the cache using the clear method. + """ + + def __init__( + self, directory: t.Optional[str] = None, pattern: str = "__jinja2_%s.cache" + ) -> None: + if directory is None: + directory = self._get_default_cache_dir() + self.directory = directory + self.pattern = pattern + + def _get_default_cache_dir(self) -> str: + def _unsafe_dir() -> "te.NoReturn": + raise RuntimeError( + "Cannot determine safe temp directory. You " + "need to explicitly provide one." + ) + + tmpdir = tempfile.gettempdir() + + # On windows the temporary directory is used specific unless + # explicitly forced otherwise. We can just use that. + if os.name == "nt": + return tmpdir + if not hasattr(os, "getuid"): + _unsafe_dir() + + dirname = f"_jinja2-cache-{os.getuid()}" + actual_dir = os.path.join(tmpdir, dirname) + + try: + os.mkdir(actual_dir, stat.S_IRWXU) + except OSError as e: + if e.errno != errno.EEXIST: + raise + try: + os.chmod(actual_dir, stat.S_IRWXU) + actual_dir_stat = os.lstat(actual_dir) + if ( + actual_dir_stat.st_uid != os.getuid() + or not stat.S_ISDIR(actual_dir_stat.st_mode) + or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU + ): + _unsafe_dir() + except OSError as e: + if e.errno != errno.EEXIST: + raise + + actual_dir_stat = os.lstat(actual_dir) + if ( + actual_dir_stat.st_uid != os.getuid() + or not stat.S_ISDIR(actual_dir_stat.st_mode) + or stat.S_IMODE(actual_dir_stat.st_mode) != stat.S_IRWXU + ): + _unsafe_dir() + + return actual_dir + + def _get_cache_filename(self, bucket: Bucket) -> str: + return os.path.join(self.directory, self.pattern % (bucket.key,)) + + def load_bytecode(self, bucket: Bucket) -> None: + filename = self._get_cache_filename(bucket) + + # Don't test for existence before opening the file, since the + # file could disappear after the test before the open. + try: + f = open(filename, "rb") + except (FileNotFoundError, IsADirectoryError, PermissionError): + # PermissionError can occur on Windows when an operation is + # in progress, such as calling clear(). + return + + with f: + bucket.load_bytecode(f) + + def dump_bytecode(self, bucket: Bucket) -> None: + # Write to a temporary file, then rename to the real name after + # writing. This avoids another process reading the file before + # it is fully written. + name = self._get_cache_filename(bucket) + f = tempfile.NamedTemporaryFile( + mode="wb", + dir=os.path.dirname(name), + prefix=os.path.basename(name), + suffix=".tmp", + delete=False, + ) + + def remove_silent() -> None: + try: + os.remove(f.name) + except OSError: + # Another process may have called clear(). On Windows, + # another program may be holding the file open. + pass + + try: + with f: + bucket.write_bytecode(f) + except BaseException: + remove_silent() + raise + + try: + os.replace(f.name, name) + except OSError: + # Another process may have called clear(). On Windows, + # another program may be holding the file open. + remove_silent() + except BaseException: + remove_silent() + raise + + def clear(self) -> None: + # imported lazily here because google app-engine doesn't support + # write access on the file system and the function does not exist + # normally. + from os import remove + + files = fnmatch.filter(os.listdir(self.directory), self.pattern % ("*",)) + for filename in files: + try: + remove(os.path.join(self.directory, filename)) + except OSError: + pass + + +class MemcachedBytecodeCache(BytecodeCache): + """This class implements a bytecode cache that uses a memcache cache for + storing the information. It does not enforce a specific memcache library + (tummy's memcache or cmemcache) but will accept any class that provides + the minimal interface required. + + Libraries compatible with this class: + + - `cachelib `_ + - `python-memcached `_ + + (Unfortunately the django cache interface is not compatible because it + does not support storing binary data, only text. You can however pass + the underlying cache client to the bytecode cache which is available + as `django.core.cache.cache._client`.) + + The minimal interface for the client passed to the constructor is this: + + .. class:: MinimalClientInterface + + .. method:: set(key, value[, timeout]) + + Stores the bytecode in the cache. `value` is a string and + `timeout` the timeout of the key. If timeout is not provided + a default timeout or no timeout should be assumed, if it's + provided it's an integer with the number of seconds the cache + item should exist. + + .. method:: get(key) + + Returns the value for the cache key. If the item does not + exist in the cache the return value must be `None`. + + The other arguments to the constructor are the prefix for all keys that + is added before the actual cache key and the timeout for the bytecode in + the cache system. We recommend a high (or no) timeout. + + This bytecode cache does not support clearing of used items in the cache. + The clear method is a no-operation function. + + .. versionadded:: 2.7 + Added support for ignoring memcache errors through the + `ignore_memcache_errors` parameter. + """ + + def __init__( + self, + client: "_MemcachedClient", + prefix: str = "jinja2/bytecode/", + timeout: t.Optional[int] = None, + ignore_memcache_errors: bool = True, + ): + self.client = client + self.prefix = prefix + self.timeout = timeout + self.ignore_memcache_errors = ignore_memcache_errors + + def load_bytecode(self, bucket: Bucket) -> None: + try: + code = self.client.get(self.prefix + bucket.key) + except Exception: + if not self.ignore_memcache_errors: + raise + else: + bucket.bytecode_from_string(code) + + def dump_bytecode(self, bucket: Bucket) -> None: + key = self.prefix + bucket.key + value = bucket.bytecode_to_string() + + try: + if self.timeout is not None: + self.client.set(key, value, self.timeout) + else: + self.client.set(key, value) + except Exception: + if not self.ignore_memcache_errors: + raise diff --git a/venv/lib/python3.12/site-packages/jinja2/compiler.py b/venv/lib/python3.12/site-packages/jinja2/compiler.py new file mode 100644 index 0000000..2740717 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/compiler.py @@ -0,0 +1,1960 @@ +"""Compiles nodes from the parser into Python code.""" + +import typing as t +from contextlib import contextmanager +from functools import update_wrapper +from io import StringIO +from itertools import chain +from keyword import iskeyword as is_python_keyword + +from markupsafe import escape +from markupsafe import Markup + +from . import nodes +from .exceptions import TemplateAssertionError +from .idtracking import Symbols +from .idtracking import VAR_LOAD_ALIAS +from .idtracking import VAR_LOAD_PARAMETER +from .idtracking import VAR_LOAD_RESOLVE +from .idtracking import VAR_LOAD_UNDEFINED +from .nodes import EvalContext +from .optimizer import Optimizer +from .utils import _PassArg +from .utils import concat +from .visitor import NodeVisitor + +if t.TYPE_CHECKING: + import typing_extensions as te + + from .environment import Environment + +F = t.TypeVar("F", bound=t.Callable[..., t.Any]) + +operators = { + "eq": "==", + "ne": "!=", + "gt": ">", + "gteq": ">=", + "lt": "<", + "lteq": "<=", + "in": "in", + "notin": "not in", +} + + +def optimizeconst(f: F) -> F: + def new_func( + self: "CodeGenerator", node: nodes.Expr, frame: "Frame", **kwargs: t.Any + ) -> t.Any: + # Only optimize if the frame is not volatile + if self.optimizer is not None and not frame.eval_ctx.volatile: + new_node = self.optimizer.visit(node, frame.eval_ctx) + + if new_node != node: + return self.visit(new_node, frame) + + return f(self, node, frame, **kwargs) + + return update_wrapper(t.cast(F, new_func), f) + + +def _make_binop(op: str) -> t.Callable[["CodeGenerator", nodes.BinExpr, "Frame"], None]: + @optimizeconst + def visitor(self: "CodeGenerator", node: nodes.BinExpr, frame: Frame) -> None: + if ( + self.environment.sandboxed and op in self.environment.intercepted_binops # type: ignore + ): + self.write(f"environment.call_binop(context, {op!r}, ") + self.visit(node.left, frame) + self.write(", ") + self.visit(node.right, frame) + else: + self.write("(") + self.visit(node.left, frame) + self.write(f" {op} ") + self.visit(node.right, frame) + + self.write(")") + + return visitor + + +def _make_unop( + op: str, +) -> t.Callable[["CodeGenerator", nodes.UnaryExpr, "Frame"], None]: + @optimizeconst + def visitor(self: "CodeGenerator", node: nodes.UnaryExpr, frame: Frame) -> None: + if ( + self.environment.sandboxed and op in self.environment.intercepted_unops # type: ignore + ): + self.write(f"environment.call_unop(context, {op!r}, ") + self.visit(node.node, frame) + else: + self.write("(" + op) + self.visit(node.node, frame) + + self.write(")") + + return visitor + + +def generate( + node: nodes.Template, + environment: "Environment", + name: t.Optional[str], + filename: t.Optional[str], + stream: t.Optional[t.TextIO] = None, + defer_init: bool = False, + optimized: bool = True, +) -> t.Optional[str]: + """Generate the python source for a node tree.""" + if not isinstance(node, nodes.Template): + raise TypeError("Can't compile non template nodes") + + generator = environment.code_generator_class( + environment, name, filename, stream, defer_init, optimized + ) + generator.visit(node) + + if stream is None: + return generator.stream.getvalue() # type: ignore + + return None + + +def has_safe_repr(value: t.Any) -> bool: + """Does the node have a safe representation?""" + if value is None or value is NotImplemented or value is Ellipsis: + return True + + if type(value) in {bool, int, float, complex, range, str, Markup}: + return True + + if type(value) in {tuple, list, set, frozenset}: + return all(has_safe_repr(v) for v in value) + + if type(value) is dict: # noqa E721 + return all(has_safe_repr(k) and has_safe_repr(v) for k, v in value.items()) + + return False + + +def find_undeclared( + nodes: t.Iterable[nodes.Node], names: t.Iterable[str] +) -> t.Set[str]: + """Check if the names passed are accessed undeclared. The return value + is a set of all the undeclared names from the sequence of names found. + """ + visitor = UndeclaredNameVisitor(names) + try: + for node in nodes: + visitor.visit(node) + except VisitorExit: + pass + return visitor.undeclared + + +class MacroRef: + def __init__(self, node: t.Union[nodes.Macro, nodes.CallBlock]) -> None: + self.node = node + self.accesses_caller = False + self.accesses_kwargs = False + self.accesses_varargs = False + + +class Frame: + """Holds compile time information for us.""" + + def __init__( + self, + eval_ctx: EvalContext, + parent: t.Optional["Frame"] = None, + level: t.Optional[int] = None, + ) -> None: + self.eval_ctx = eval_ctx + + # the parent of this frame + self.parent = parent + + if parent is None: + self.symbols = Symbols(level=level) + + # in some dynamic inheritance situations the compiler needs to add + # write tests around output statements. + self.require_output_check = False + + # inside some tags we are using a buffer rather than yield statements. + # this for example affects {% filter %} or {% macro %}. If a frame + # is buffered this variable points to the name of the list used as + # buffer. + self.buffer: t.Optional[str] = None + + # the name of the block we're in, otherwise None. + self.block: t.Optional[str] = None + + else: + self.symbols = Symbols(parent.symbols, level=level) + self.require_output_check = parent.require_output_check + self.buffer = parent.buffer + self.block = parent.block + + # a toplevel frame is the root + soft frames such as if conditions. + self.toplevel = False + + # the root frame is basically just the outermost frame, so no if + # conditions. This information is used to optimize inheritance + # situations. + self.rootlevel = False + + # variables set inside of loops and blocks should not affect outer frames, + # but they still needs to be kept track of as part of the active context. + self.loop_frame = False + self.block_frame = False + + # track whether the frame is being used in an if-statement or conditional + # expression as it determines which errors should be raised during runtime + # or compile time. + self.soft_frame = False + + def copy(self) -> "Frame": + """Create a copy of the current one.""" + rv = object.__new__(self.__class__) + rv.__dict__.update(self.__dict__) + rv.symbols = self.symbols.copy() + return rv + + def inner(self, isolated: bool = False) -> "Frame": + """Return an inner frame.""" + if isolated: + return Frame(self.eval_ctx, level=self.symbols.level + 1) + return Frame(self.eval_ctx, self) + + def soft(self) -> "Frame": + """Return a soft frame. A soft frame may not be modified as + standalone thing as it shares the resources with the frame it + was created of, but it's not a rootlevel frame any longer. + + This is only used to implement if-statements and conditional + expressions. + """ + rv = self.copy() + rv.rootlevel = False + rv.soft_frame = True + return rv + + __copy__ = copy + + +class VisitorExit(RuntimeError): + """Exception used by the `UndeclaredNameVisitor` to signal a stop.""" + + +class DependencyFinderVisitor(NodeVisitor): + """A visitor that collects filter and test calls.""" + + def __init__(self) -> None: + self.filters: t.Set[str] = set() + self.tests: t.Set[str] = set() + + def visit_Filter(self, node: nodes.Filter) -> None: + self.generic_visit(node) + self.filters.add(node.name) + + def visit_Test(self, node: nodes.Test) -> None: + self.generic_visit(node) + self.tests.add(node.name) + + def visit_Block(self, node: nodes.Block) -> None: + """Stop visiting at blocks.""" + + +class UndeclaredNameVisitor(NodeVisitor): + """A visitor that checks if a name is accessed without being + declared. This is different from the frame visitor as it will + not stop at closure frames. + """ + + def __init__(self, names: t.Iterable[str]) -> None: + self.names = set(names) + self.undeclared: t.Set[str] = set() + + def visit_Name(self, node: nodes.Name) -> None: + if node.ctx == "load" and node.name in self.names: + self.undeclared.add(node.name) + if self.undeclared == self.names: + raise VisitorExit() + else: + self.names.discard(node.name) + + def visit_Block(self, node: nodes.Block) -> None: + """Stop visiting a blocks.""" + + +class CompilerExit(Exception): + """Raised if the compiler encountered a situation where it just + doesn't make sense to further process the code. Any block that + raises such an exception is not further processed. + """ + + +class CodeGenerator(NodeVisitor): + def __init__( + self, + environment: "Environment", + name: t.Optional[str], + filename: t.Optional[str], + stream: t.Optional[t.TextIO] = None, + defer_init: bool = False, + optimized: bool = True, + ) -> None: + if stream is None: + stream = StringIO() + self.environment = environment + self.name = name + self.filename = filename + self.stream = stream + self.created_block_context = False + self.defer_init = defer_init + self.optimizer: t.Optional[Optimizer] = None + + if optimized: + self.optimizer = Optimizer(environment) + + # aliases for imports + self.import_aliases: t.Dict[str, str] = {} + + # a registry for all blocks. Because blocks are moved out + # into the global python scope they are registered here + self.blocks: t.Dict[str, nodes.Block] = {} + + # the number of extends statements so far + self.extends_so_far = 0 + + # some templates have a rootlevel extends. In this case we + # can safely assume that we're a child template and do some + # more optimizations. + self.has_known_extends = False + + # the current line number + self.code_lineno = 1 + + # registry of all filters and tests (global, not block local) + self.tests: t.Dict[str, str] = {} + self.filters: t.Dict[str, str] = {} + + # the debug information + self.debug_info: t.List[t.Tuple[int, int]] = [] + self._write_debug_info: t.Optional[int] = None + + # the number of new lines before the next write() + self._new_lines = 0 + + # the line number of the last written statement + self._last_line = 0 + + # true if nothing was written so far. + self._first_write = True + + # used by the `temporary_identifier` method to get new + # unique, temporary identifier + self._last_identifier = 0 + + # the current indentation + self._indentation = 0 + + # Tracks toplevel assignments + self._assign_stack: t.List[t.Set[str]] = [] + + # Tracks parameter definition blocks + self._param_def_block: t.List[t.Set[str]] = [] + + # Tracks the current context. + self._context_reference_stack = ["context"] + + @property + def optimized(self) -> bool: + return self.optimizer is not None + + # -- Various compilation helpers + + def fail(self, msg: str, lineno: int) -> "te.NoReturn": + """Fail with a :exc:`TemplateAssertionError`.""" + raise TemplateAssertionError(msg, lineno, self.name, self.filename) + + def temporary_identifier(self) -> str: + """Get a new unique identifier.""" + self._last_identifier += 1 + return f"t_{self._last_identifier}" + + def buffer(self, frame: Frame) -> None: + """Enable buffering for the frame from that point onwards.""" + frame.buffer = self.temporary_identifier() + self.writeline(f"{frame.buffer} = []") + + def return_buffer_contents( + self, frame: Frame, force_unescaped: bool = False + ) -> None: + """Return the buffer contents of the frame.""" + if not force_unescaped: + if frame.eval_ctx.volatile: + self.writeline("if context.eval_ctx.autoescape:") + self.indent() + self.writeline(f"return Markup(concat({frame.buffer}))") + self.outdent() + self.writeline("else:") + self.indent() + self.writeline(f"return concat({frame.buffer})") + self.outdent() + return + elif frame.eval_ctx.autoescape: + self.writeline(f"return Markup(concat({frame.buffer}))") + return + self.writeline(f"return concat({frame.buffer})") + + def indent(self) -> None: + """Indent by one.""" + self._indentation += 1 + + def outdent(self, step: int = 1) -> None: + """Outdent by step.""" + self._indentation -= step + + def start_write(self, frame: Frame, node: t.Optional[nodes.Node] = None) -> None: + """Yield or write into the frame buffer.""" + if frame.buffer is None: + self.writeline("yield ", node) + else: + self.writeline(f"{frame.buffer}.append(", node) + + def end_write(self, frame: Frame) -> None: + """End the writing process started by `start_write`.""" + if frame.buffer is not None: + self.write(")") + + def simple_write( + self, s: str, frame: Frame, node: t.Optional[nodes.Node] = None + ) -> None: + """Simple shortcut for start_write + write + end_write.""" + self.start_write(frame, node) + self.write(s) + self.end_write(frame) + + def blockvisit(self, nodes: t.Iterable[nodes.Node], frame: Frame) -> None: + """Visit a list of nodes as block in a frame. If the current frame + is no buffer a dummy ``if 0: yield None`` is written automatically. + """ + try: + self.writeline("pass") + for node in nodes: + self.visit(node, frame) + except CompilerExit: + pass + + def write(self, x: str) -> None: + """Write a string into the output stream.""" + if self._new_lines: + if not self._first_write: + self.stream.write("\n" * self._new_lines) + self.code_lineno += self._new_lines + if self._write_debug_info is not None: + self.debug_info.append((self._write_debug_info, self.code_lineno)) + self._write_debug_info = None + self._first_write = False + self.stream.write(" " * self._indentation) + self._new_lines = 0 + self.stream.write(x) + + def writeline( + self, x: str, node: t.Optional[nodes.Node] = None, extra: int = 0 + ) -> None: + """Combination of newline and write.""" + self.newline(node, extra) + self.write(x) + + def newline(self, node: t.Optional[nodes.Node] = None, extra: int = 0) -> None: + """Add one or more newlines before the next write.""" + self._new_lines = max(self._new_lines, 1 + extra) + if node is not None and node.lineno != self._last_line: + self._write_debug_info = node.lineno + self._last_line = node.lineno + + def signature( + self, + node: t.Union[nodes.Call, nodes.Filter, nodes.Test], + frame: Frame, + extra_kwargs: t.Optional[t.Mapping[str, t.Any]] = None, + ) -> None: + """Writes a function call to the stream for the current node. + A leading comma is added automatically. The extra keyword + arguments may not include python keywords otherwise a syntax + error could occur. The extra keyword arguments should be given + as python dict. + """ + # if any of the given keyword arguments is a python keyword + # we have to make sure that no invalid call is created. + kwarg_workaround = any( + is_python_keyword(t.cast(str, k)) + for k in chain((x.key for x in node.kwargs), extra_kwargs or ()) + ) + + for arg in node.args: + self.write(", ") + self.visit(arg, frame) + + if not kwarg_workaround: + for kwarg in node.kwargs: + self.write(", ") + self.visit(kwarg, frame) + if extra_kwargs is not None: + for key, value in extra_kwargs.items(): + self.write(f", {key}={value}") + if node.dyn_args: + self.write(", *") + self.visit(node.dyn_args, frame) + + if kwarg_workaround: + if node.dyn_kwargs is not None: + self.write(", **dict({") + else: + self.write(", **{") + for kwarg in node.kwargs: + self.write(f"{kwarg.key!r}: ") + self.visit(kwarg.value, frame) + self.write(", ") + if extra_kwargs is not None: + for key, value in extra_kwargs.items(): + self.write(f"{key!r}: {value}, ") + if node.dyn_kwargs is not None: + self.write("}, **") + self.visit(node.dyn_kwargs, frame) + self.write(")") + else: + self.write("}") + + elif node.dyn_kwargs is not None: + self.write(", **") + self.visit(node.dyn_kwargs, frame) + + def pull_dependencies(self, nodes: t.Iterable[nodes.Node]) -> None: + """Find all filter and test names used in the template and + assign them to variables in the compiled namespace. Checking + that the names are registered with the environment is done when + compiling the Filter and Test nodes. If the node is in an If or + CondExpr node, the check is done at runtime instead. + + .. versionchanged:: 3.0 + Filters and tests in If and CondExpr nodes are checked at + runtime instead of compile time. + """ + visitor = DependencyFinderVisitor() + + for node in nodes: + visitor.visit(node) + + for id_map, names, dependency in ( + (self.filters, visitor.filters, "filters"), + ( + self.tests, + visitor.tests, + "tests", + ), + ): + for name in sorted(names): + if name not in id_map: + id_map[name] = self.temporary_identifier() + + # add check during runtime that dependencies used inside of executed + # blocks are defined, as this step may be skipped during compile time + self.writeline("try:") + self.indent() + self.writeline(f"{id_map[name]} = environment.{dependency}[{name!r}]") + self.outdent() + self.writeline("except KeyError:") + self.indent() + self.writeline("@internalcode") + self.writeline(f"def {id_map[name]}(*unused):") + self.indent() + self.writeline( + f'raise TemplateRuntimeError("No {dependency[:-1]}' + f' named {name!r} found.")' + ) + self.outdent() + self.outdent() + + def enter_frame(self, frame: Frame) -> None: + undefs = [] + for target, (action, param) in frame.symbols.loads.items(): + if action == VAR_LOAD_PARAMETER: + pass + elif action == VAR_LOAD_RESOLVE: + self.writeline(f"{target} = {self.get_resolve_func()}({param!r})") + elif action == VAR_LOAD_ALIAS: + self.writeline(f"{target} = {param}") + elif action == VAR_LOAD_UNDEFINED: + undefs.append(target) + else: + raise NotImplementedError("unknown load instruction") + if undefs: + self.writeline(f"{' = '.join(undefs)} = missing") + + def leave_frame(self, frame: Frame, with_python_scope: bool = False) -> None: + if not with_python_scope: + undefs = [] + for target in frame.symbols.loads: + undefs.append(target) + if undefs: + self.writeline(f"{' = '.join(undefs)} = missing") + + def choose_async(self, async_value: str = "async ", sync_value: str = "") -> str: + return async_value if self.environment.is_async else sync_value + + def func(self, name: str) -> str: + return f"{self.choose_async()}def {name}" + + def macro_body( + self, node: t.Union[nodes.Macro, nodes.CallBlock], frame: Frame + ) -> t.Tuple[Frame, MacroRef]: + """Dump the function def of a macro or call block.""" + frame = frame.inner() + frame.symbols.analyze_node(node) + macro_ref = MacroRef(node) + + explicit_caller = None + skip_special_params = set() + args = [] + + for idx, arg in enumerate(node.args): + if arg.name == "caller": + explicit_caller = idx + if arg.name in ("kwargs", "varargs"): + skip_special_params.add(arg.name) + args.append(frame.symbols.ref(arg.name)) + + undeclared = find_undeclared(node.body, ("caller", "kwargs", "varargs")) + + if "caller" in undeclared: + # In older Jinja versions there was a bug that allowed caller + # to retain the special behavior even if it was mentioned in + # the argument list. However thankfully this was only really + # working if it was the last argument. So we are explicitly + # checking this now and error out if it is anywhere else in + # the argument list. + if explicit_caller is not None: + try: + node.defaults[explicit_caller - len(node.args)] + except IndexError: + self.fail( + "When defining macros or call blocks the " + 'special "caller" argument must be omitted ' + "or be given a default.", + node.lineno, + ) + else: + args.append(frame.symbols.declare_parameter("caller")) + macro_ref.accesses_caller = True + if "kwargs" in undeclared and "kwargs" not in skip_special_params: + args.append(frame.symbols.declare_parameter("kwargs")) + macro_ref.accesses_kwargs = True + if "varargs" in undeclared and "varargs" not in skip_special_params: + args.append(frame.symbols.declare_parameter("varargs")) + macro_ref.accesses_varargs = True + + # macros are delayed, they never require output checks + frame.require_output_check = False + frame.symbols.analyze_node(node) + self.writeline(f"{self.func('macro')}({', '.join(args)}):", node) + self.indent() + + self.buffer(frame) + self.enter_frame(frame) + + self.push_parameter_definitions(frame) + for idx, arg in enumerate(node.args): + ref = frame.symbols.ref(arg.name) + self.writeline(f"if {ref} is missing:") + self.indent() + try: + default = node.defaults[idx - len(node.args)] + except IndexError: + self.writeline( + f'{ref} = undefined("parameter {arg.name!r} was not provided",' + f" name={arg.name!r})" + ) + else: + self.writeline(f"{ref} = ") + self.visit(default, frame) + self.mark_parameter_stored(ref) + self.outdent() + self.pop_parameter_definitions() + + self.blockvisit(node.body, frame) + self.return_buffer_contents(frame, force_unescaped=True) + self.leave_frame(frame, with_python_scope=True) + self.outdent() + + return frame, macro_ref + + def macro_def(self, macro_ref: MacroRef, frame: Frame) -> None: + """Dump the macro definition for the def created by macro_body.""" + arg_tuple = ", ".join(repr(x.name) for x in macro_ref.node.args) + name = getattr(macro_ref.node, "name", None) + if len(macro_ref.node.args) == 1: + arg_tuple += "," + self.write( + f"Macro(environment, macro, {name!r}, ({arg_tuple})," + f" {macro_ref.accesses_kwargs!r}, {macro_ref.accesses_varargs!r}," + f" {macro_ref.accesses_caller!r}, context.eval_ctx.autoescape)" + ) + + def position(self, node: nodes.Node) -> str: + """Return a human readable position for the node.""" + rv = f"line {node.lineno}" + if self.name is not None: + rv = f"{rv} in {self.name!r}" + return rv + + def dump_local_context(self, frame: Frame) -> str: + items_kv = ", ".join( + f"{name!r}: {target}" + for name, target in frame.symbols.dump_stores().items() + ) + return f"{{{items_kv}}}" + + def write_commons(self) -> None: + """Writes a common preamble that is used by root and block functions. + Primarily this sets up common local helpers and enforces a generator + through a dead branch. + """ + self.writeline("resolve = context.resolve_or_missing") + self.writeline("undefined = environment.undefined") + self.writeline("concat = environment.concat") + # always use the standard Undefined class for the implicit else of + # conditional expressions + self.writeline("cond_expr_undefined = Undefined") + self.writeline("if 0: yield None") + + def push_parameter_definitions(self, frame: Frame) -> None: + """Pushes all parameter targets from the given frame into a local + stack that permits tracking of yet to be assigned parameters. In + particular this enables the optimization from `visit_Name` to skip + undefined expressions for parameters in macros as macros can reference + otherwise unbound parameters. + """ + self._param_def_block.append(frame.symbols.dump_param_targets()) + + def pop_parameter_definitions(self) -> None: + """Pops the current parameter definitions set.""" + self._param_def_block.pop() + + def mark_parameter_stored(self, target: str) -> None: + """Marks a parameter in the current parameter definitions as stored. + This will skip the enforced undefined checks. + """ + if self._param_def_block: + self._param_def_block[-1].discard(target) + + def push_context_reference(self, target: str) -> None: + self._context_reference_stack.append(target) + + def pop_context_reference(self) -> None: + self._context_reference_stack.pop() + + def get_context_ref(self) -> str: + return self._context_reference_stack[-1] + + def get_resolve_func(self) -> str: + target = self._context_reference_stack[-1] + if target == "context": + return "resolve" + return f"{target}.resolve" + + def derive_context(self, frame: Frame) -> str: + return f"{self.get_context_ref()}.derived({self.dump_local_context(frame)})" + + def parameter_is_undeclared(self, target: str) -> bool: + """Checks if a given target is an undeclared parameter.""" + if not self._param_def_block: + return False + return target in self._param_def_block[-1] + + def push_assign_tracking(self) -> None: + """Pushes a new layer for assignment tracking.""" + self._assign_stack.append(set()) + + def pop_assign_tracking(self, frame: Frame) -> None: + """Pops the topmost level for assignment tracking and updates the + context variables if necessary. + """ + vars = self._assign_stack.pop() + if ( + not frame.block_frame + and not frame.loop_frame + and not frame.toplevel + or not vars + ): + return + public_names = [x for x in vars if x[:1] != "_"] + if len(vars) == 1: + name = next(iter(vars)) + ref = frame.symbols.ref(name) + if frame.loop_frame: + self.writeline(f"_loop_vars[{name!r}] = {ref}") + return + if frame.block_frame: + self.writeline(f"_block_vars[{name!r}] = {ref}") + return + self.writeline(f"context.vars[{name!r}] = {ref}") + else: + if frame.loop_frame: + self.writeline("_loop_vars.update({") + elif frame.block_frame: + self.writeline("_block_vars.update({") + else: + self.writeline("context.vars.update({") + for idx, name in enumerate(vars): + if idx: + self.write(", ") + ref = frame.symbols.ref(name) + self.write(f"{name!r}: {ref}") + self.write("})") + if not frame.block_frame and not frame.loop_frame and public_names: + if len(public_names) == 1: + self.writeline(f"context.exported_vars.add({public_names[0]!r})") + else: + names_str = ", ".join(map(repr, public_names)) + self.writeline(f"context.exported_vars.update(({names_str}))") + + # -- Statement Visitors + + def visit_Template( + self, node: nodes.Template, frame: t.Optional[Frame] = None + ) -> None: + assert frame is None, "no root frame allowed" + eval_ctx = EvalContext(self.environment, self.name) + + from .runtime import async_exported + from .runtime import exported + + if self.environment.is_async: + exported_names = sorted(exported + async_exported) + else: + exported_names = sorted(exported) + + self.writeline("from jinja2.runtime import " + ", ".join(exported_names)) + + # if we want a deferred initialization we cannot move the + # environment into a local name + envenv = "" if self.defer_init else ", environment=environment" + + # do we have an extends tag at all? If not, we can save some + # overhead by just not processing any inheritance code. + have_extends = node.find(nodes.Extends) is not None + + # find all blocks + for block in node.find_all(nodes.Block): + if block.name in self.blocks: + self.fail(f"block {block.name!r} defined twice", block.lineno) + self.blocks[block.name] = block + + # find all imports and import them + for import_ in node.find_all(nodes.ImportedName): + if import_.importname not in self.import_aliases: + imp = import_.importname + self.import_aliases[imp] = alias = self.temporary_identifier() + if "." in imp: + module, obj = imp.rsplit(".", 1) + self.writeline(f"from {module} import {obj} as {alias}") + else: + self.writeline(f"import {imp} as {alias}") + + # add the load name + self.writeline(f"name = {self.name!r}") + + # generate the root render function. + self.writeline( + f"{self.func('root')}(context, missing=missing{envenv}):", extra=1 + ) + self.indent() + self.write_commons() + + # process the root + frame = Frame(eval_ctx) + if "self" in find_undeclared(node.body, ("self",)): + ref = frame.symbols.declare_parameter("self") + self.writeline(f"{ref} = TemplateReference(context)") + frame.symbols.analyze_node(node) + frame.toplevel = frame.rootlevel = True + frame.require_output_check = have_extends and not self.has_known_extends + if have_extends: + self.writeline("parent_template = None") + self.enter_frame(frame) + self.pull_dependencies(node.body) + self.blockvisit(node.body, frame) + self.leave_frame(frame, with_python_scope=True) + self.outdent() + + # make sure that the parent root is called. + if have_extends: + if not self.has_known_extends: + self.indent() + self.writeline("if parent_template is not None:") + self.indent() + if not self.environment.is_async: + self.writeline("yield from parent_template.root_render_func(context)") + else: + self.writeline( + "async for event in parent_template.root_render_func(context):" + ) + self.indent() + self.writeline("yield event") + self.outdent() + self.outdent(1 + (not self.has_known_extends)) + + # at this point we now have the blocks collected and can visit them too. + for name, block in self.blocks.items(): + self.writeline( + f"{self.func('block_' + name)}(context, missing=missing{envenv}):", + block, + 1, + ) + self.indent() + self.write_commons() + # It's important that we do not make this frame a child of the + # toplevel template. This would cause a variety of + # interesting issues with identifier tracking. + block_frame = Frame(eval_ctx) + block_frame.block_frame = True + undeclared = find_undeclared(block.body, ("self", "super")) + if "self" in undeclared: + ref = block_frame.symbols.declare_parameter("self") + self.writeline(f"{ref} = TemplateReference(context)") + if "super" in undeclared: + ref = block_frame.symbols.declare_parameter("super") + self.writeline(f"{ref} = context.super({name!r}, block_{name})") + block_frame.symbols.analyze_node(block) + block_frame.block = name + self.writeline("_block_vars = {}") + self.enter_frame(block_frame) + self.pull_dependencies(block.body) + self.blockvisit(block.body, block_frame) + self.leave_frame(block_frame, with_python_scope=True) + self.outdent() + + blocks_kv_str = ", ".join(f"{x!r}: block_{x}" for x in self.blocks) + self.writeline(f"blocks = {{{blocks_kv_str}}}", extra=1) + debug_kv_str = "&".join(f"{k}={v}" for k, v in self.debug_info) + self.writeline(f"debug_info = {debug_kv_str!r}") + + def visit_Block(self, node: nodes.Block, frame: Frame) -> None: + """Call a block and register it for the template.""" + level = 0 + if frame.toplevel: + # if we know that we are a child template, there is no need to + # check if we are one + if self.has_known_extends: + return + if self.extends_so_far > 0: + self.writeline("if parent_template is None:") + self.indent() + level += 1 + + if node.scoped: + context = self.derive_context(frame) + else: + context = self.get_context_ref() + + if node.required: + self.writeline(f"if len(context.blocks[{node.name!r}]) <= 1:", node) + self.indent() + self.writeline( + f'raise TemplateRuntimeError("Required block {node.name!r} not found")', + node, + ) + self.outdent() + + if not self.environment.is_async and frame.buffer is None: + self.writeline( + f"yield from context.blocks[{node.name!r}][0]({context})", node + ) + else: + self.writeline( + f"{self.choose_async()}for event in" + f" context.blocks[{node.name!r}][0]({context}):", + node, + ) + self.indent() + self.simple_write("event", frame) + self.outdent() + + self.outdent(level) + + def visit_Extends(self, node: nodes.Extends, frame: Frame) -> None: + """Calls the extender.""" + if not frame.toplevel: + self.fail("cannot use extend from a non top-level scope", node.lineno) + + # if the number of extends statements in general is zero so + # far, we don't have to add a check if something extended + # the template before this one. + if self.extends_so_far > 0: + # if we have a known extends we just add a template runtime + # error into the generated code. We could catch that at compile + # time too, but i welcome it not to confuse users by throwing the + # same error at different times just "because we can". + if not self.has_known_extends: + self.writeline("if parent_template is not None:") + self.indent() + self.writeline('raise TemplateRuntimeError("extended multiple times")') + + # if we have a known extends already we don't need that code here + # as we know that the template execution will end here. + if self.has_known_extends: + raise CompilerExit() + else: + self.outdent() + + self.writeline("parent_template = environment.get_template(", node) + self.visit(node.template, frame) + self.write(f", {self.name!r})") + self.writeline("for name, parent_block in parent_template.blocks.items():") + self.indent() + self.writeline("context.blocks.setdefault(name, []).append(parent_block)") + self.outdent() + + # if this extends statement was in the root level we can take + # advantage of that information and simplify the generated code + # in the top level from this point onwards + if frame.rootlevel: + self.has_known_extends = True + + # and now we have one more + self.extends_so_far += 1 + + def visit_Include(self, node: nodes.Include, frame: Frame) -> None: + """Handles includes.""" + if node.ignore_missing: + self.writeline("try:") + self.indent() + + func_name = "get_or_select_template" + if isinstance(node.template, nodes.Const): + if isinstance(node.template.value, str): + func_name = "get_template" + elif isinstance(node.template.value, (tuple, list)): + func_name = "select_template" + elif isinstance(node.template, (nodes.Tuple, nodes.List)): + func_name = "select_template" + + self.writeline(f"template = environment.{func_name}(", node) + self.visit(node.template, frame) + self.write(f", {self.name!r})") + if node.ignore_missing: + self.outdent() + self.writeline("except TemplateNotFound:") + self.indent() + self.writeline("pass") + self.outdent() + self.writeline("else:") + self.indent() + + skip_event_yield = False + if node.with_context: + self.writeline( + f"{self.choose_async()}for event in template.root_render_func(" + "template.new_context(context.get_all(), True," + f" {self.dump_local_context(frame)})):" + ) + elif self.environment.is_async: + self.writeline( + "for event in (await template._get_default_module_async())" + "._body_stream:" + ) + else: + self.writeline("yield from template._get_default_module()._body_stream") + skip_event_yield = True + + if not skip_event_yield: + self.indent() + self.simple_write("event", frame) + self.outdent() + + if node.ignore_missing: + self.outdent() + + def _import_common( + self, node: t.Union[nodes.Import, nodes.FromImport], frame: Frame + ) -> None: + self.write(f"{self.choose_async('await ')}environment.get_template(") + self.visit(node.template, frame) + self.write(f", {self.name!r}).") + + if node.with_context: + f_name = f"make_module{self.choose_async('_async')}" + self.write( + f"{f_name}(context.get_all(), True, {self.dump_local_context(frame)})" + ) + else: + self.write(f"_get_default_module{self.choose_async('_async')}(context)") + + def visit_Import(self, node: nodes.Import, frame: Frame) -> None: + """Visit regular imports.""" + self.writeline(f"{frame.symbols.ref(node.target)} = ", node) + if frame.toplevel: + self.write(f"context.vars[{node.target!r}] = ") + + self._import_common(node, frame) + + if frame.toplevel and not node.target.startswith("_"): + self.writeline(f"context.exported_vars.discard({node.target!r})") + + def visit_FromImport(self, node: nodes.FromImport, frame: Frame) -> None: + """Visit named imports.""" + self.newline(node) + self.write("included_template = ") + self._import_common(node, frame) + var_names = [] + discarded_names = [] + for name in node.names: + if isinstance(name, tuple): + name, alias = name + else: + alias = name + self.writeline( + f"{frame.symbols.ref(alias)} =" + f" getattr(included_template, {name!r}, missing)" + ) + self.writeline(f"if {frame.symbols.ref(alias)} is missing:") + self.indent() + message = ( + "the template {included_template.__name__!r}" + f" (imported on {self.position(node)})" + f" does not export the requested name {name!r}" + ) + self.writeline( + f"{frame.symbols.ref(alias)} = undefined(f{message!r}, name={name!r})" + ) + self.outdent() + if frame.toplevel: + var_names.append(alias) + if not alias.startswith("_"): + discarded_names.append(alias) + + if var_names: + if len(var_names) == 1: + name = var_names[0] + self.writeline(f"context.vars[{name!r}] = {frame.symbols.ref(name)}") + else: + names_kv = ", ".join( + f"{name!r}: {frame.symbols.ref(name)}" for name in var_names + ) + self.writeline(f"context.vars.update({{{names_kv}}})") + if discarded_names: + if len(discarded_names) == 1: + self.writeline(f"context.exported_vars.discard({discarded_names[0]!r})") + else: + names_str = ", ".join(map(repr, discarded_names)) + self.writeline( + f"context.exported_vars.difference_update(({names_str}))" + ) + + def visit_For(self, node: nodes.For, frame: Frame) -> None: + loop_frame = frame.inner() + loop_frame.loop_frame = True + test_frame = frame.inner() + else_frame = frame.inner() + + # try to figure out if we have an extended loop. An extended loop + # is necessary if the loop is in recursive mode if the special loop + # variable is accessed in the body if the body is a scoped block. + extended_loop = ( + node.recursive + or "loop" + in find_undeclared(node.iter_child_nodes(only=("body",)), ("loop",)) + or any(block.scoped for block in node.find_all(nodes.Block)) + ) + + loop_ref = None + if extended_loop: + loop_ref = loop_frame.symbols.declare_parameter("loop") + + loop_frame.symbols.analyze_node(node, for_branch="body") + if node.else_: + else_frame.symbols.analyze_node(node, for_branch="else") + + if node.test: + loop_filter_func = self.temporary_identifier() + test_frame.symbols.analyze_node(node, for_branch="test") + self.writeline(f"{self.func(loop_filter_func)}(fiter):", node.test) + self.indent() + self.enter_frame(test_frame) + self.writeline(self.choose_async("async for ", "for ")) + self.visit(node.target, loop_frame) + self.write(" in ") + self.write(self.choose_async("auto_aiter(fiter)", "fiter")) + self.write(":") + self.indent() + self.writeline("if ", node.test) + self.visit(node.test, test_frame) + self.write(":") + self.indent() + self.writeline("yield ") + self.visit(node.target, loop_frame) + self.outdent(3) + self.leave_frame(test_frame, with_python_scope=True) + + # if we don't have an recursive loop we have to find the shadowed + # variables at that point. Because loops can be nested but the loop + # variable is a special one we have to enforce aliasing for it. + if node.recursive: + self.writeline( + f"{self.func('loop')}(reciter, loop_render_func, depth=0):", node + ) + self.indent() + self.buffer(loop_frame) + + # Use the same buffer for the else frame + else_frame.buffer = loop_frame.buffer + + # make sure the loop variable is a special one and raise a template + # assertion error if a loop tries to write to loop + if extended_loop: + self.writeline(f"{loop_ref} = missing") + + for name in node.find_all(nodes.Name): + if name.ctx == "store" and name.name == "loop": + self.fail( + "Can't assign to special loop variable in for-loop target", + name.lineno, + ) + + if node.else_: + iteration_indicator = self.temporary_identifier() + self.writeline(f"{iteration_indicator} = 1") + + self.writeline(self.choose_async("async for ", "for "), node) + self.visit(node.target, loop_frame) + if extended_loop: + self.write(f", {loop_ref} in {self.choose_async('Async')}LoopContext(") + else: + self.write(" in ") + + if node.test: + self.write(f"{loop_filter_func}(") + if node.recursive: + self.write("reciter") + else: + if self.environment.is_async and not extended_loop: + self.write("auto_aiter(") + self.visit(node.iter, frame) + if self.environment.is_async and not extended_loop: + self.write(")") + if node.test: + self.write(")") + + if node.recursive: + self.write(", undefined, loop_render_func, depth):") + else: + self.write(", undefined):" if extended_loop else ":") + + self.indent() + self.enter_frame(loop_frame) + + self.writeline("_loop_vars = {}") + self.blockvisit(node.body, loop_frame) + if node.else_: + self.writeline(f"{iteration_indicator} = 0") + self.outdent() + self.leave_frame( + loop_frame, with_python_scope=node.recursive and not node.else_ + ) + + if node.else_: + self.writeline(f"if {iteration_indicator}:") + self.indent() + self.enter_frame(else_frame) + self.blockvisit(node.else_, else_frame) + self.leave_frame(else_frame) + self.outdent() + + # if the node was recursive we have to return the buffer contents + # and start the iteration code + if node.recursive: + self.return_buffer_contents(loop_frame) + self.outdent() + self.start_write(frame, node) + self.write(f"{self.choose_async('await ')}loop(") + if self.environment.is_async: + self.write("auto_aiter(") + self.visit(node.iter, frame) + if self.environment.is_async: + self.write(")") + self.write(", loop)") + self.end_write(frame) + + # at the end of the iteration, clear any assignments made in the + # loop from the top level + if self._assign_stack: + self._assign_stack[-1].difference_update(loop_frame.symbols.stores) + + def visit_If(self, node: nodes.If, frame: Frame) -> None: + if_frame = frame.soft() + self.writeline("if ", node) + self.visit(node.test, if_frame) + self.write(":") + self.indent() + self.blockvisit(node.body, if_frame) + self.outdent() + for elif_ in node.elif_: + self.writeline("elif ", elif_) + self.visit(elif_.test, if_frame) + self.write(":") + self.indent() + self.blockvisit(elif_.body, if_frame) + self.outdent() + if node.else_: + self.writeline("else:") + self.indent() + self.blockvisit(node.else_, if_frame) + self.outdent() + + def visit_Macro(self, node: nodes.Macro, frame: Frame) -> None: + macro_frame, macro_ref = self.macro_body(node, frame) + self.newline() + if frame.toplevel: + if not node.name.startswith("_"): + self.write(f"context.exported_vars.add({node.name!r})") + self.writeline(f"context.vars[{node.name!r}] = ") + self.write(f"{frame.symbols.ref(node.name)} = ") + self.macro_def(macro_ref, macro_frame) + + def visit_CallBlock(self, node: nodes.CallBlock, frame: Frame) -> None: + call_frame, macro_ref = self.macro_body(node, frame) + self.writeline("caller = ") + self.macro_def(macro_ref, call_frame) + self.start_write(frame, node) + self.visit_Call(node.call, frame, forward_caller=True) + self.end_write(frame) + + def visit_FilterBlock(self, node: nodes.FilterBlock, frame: Frame) -> None: + filter_frame = frame.inner() + filter_frame.symbols.analyze_node(node) + self.enter_frame(filter_frame) + self.buffer(filter_frame) + self.blockvisit(node.body, filter_frame) + self.start_write(frame, node) + self.visit_Filter(node.filter, filter_frame) + self.end_write(frame) + self.leave_frame(filter_frame) + + def visit_With(self, node: nodes.With, frame: Frame) -> None: + with_frame = frame.inner() + with_frame.symbols.analyze_node(node) + self.enter_frame(with_frame) + for target, expr in zip(node.targets, node.values): + self.newline() + self.visit(target, with_frame) + self.write(" = ") + self.visit(expr, frame) + self.blockvisit(node.body, with_frame) + self.leave_frame(with_frame) + + def visit_ExprStmt(self, node: nodes.ExprStmt, frame: Frame) -> None: + self.newline(node) + self.visit(node.node, frame) + + class _FinalizeInfo(t.NamedTuple): + const: t.Optional[t.Callable[..., str]] + src: t.Optional[str] + + @staticmethod + def _default_finalize(value: t.Any) -> t.Any: + """The default finalize function if the environment isn't + configured with one. Or, if the environment has one, this is + called on that function's output for constants. + """ + return str(value) + + _finalize: t.Optional[_FinalizeInfo] = None + + def _make_finalize(self) -> _FinalizeInfo: + """Build the finalize function to be used on constants and at + runtime. Cached so it's only created once for all output nodes. + + Returns a ``namedtuple`` with the following attributes: + + ``const`` + A function to finalize constant data at compile time. + + ``src`` + Source code to output around nodes to be evaluated at + runtime. + """ + if self._finalize is not None: + return self._finalize + + finalize: t.Optional[t.Callable[..., t.Any]] + finalize = default = self._default_finalize + src = None + + if self.environment.finalize: + src = "environment.finalize(" + env_finalize = self.environment.finalize + pass_arg = { + _PassArg.context: "context", + _PassArg.eval_context: "context.eval_ctx", + _PassArg.environment: "environment", + }.get( + _PassArg.from_obj(env_finalize) # type: ignore + ) + finalize = None + + if pass_arg is None: + + def finalize(value: t.Any) -> t.Any: # noqa: F811 + return default(env_finalize(value)) + + else: + src = f"{src}{pass_arg}, " + + if pass_arg == "environment": + + def finalize(value: t.Any) -> t.Any: # noqa: F811 + return default(env_finalize(self.environment, value)) + + self._finalize = self._FinalizeInfo(finalize, src) + return self._finalize + + def _output_const_repr(self, group: t.Iterable[t.Any]) -> str: + """Given a group of constant values converted from ``Output`` + child nodes, produce a string to write to the template module + source. + """ + return repr(concat(group)) + + def _output_child_to_const( + self, node: nodes.Expr, frame: Frame, finalize: _FinalizeInfo + ) -> str: + """Try to optimize a child of an ``Output`` node by trying to + convert it to constant, finalized data at compile time. + + If :exc:`Impossible` is raised, the node is not constant and + will be evaluated at runtime. Any other exception will also be + evaluated at runtime for easier debugging. + """ + const = node.as_const(frame.eval_ctx) + + if frame.eval_ctx.autoescape: + const = escape(const) + + # Template data doesn't go through finalize. + if isinstance(node, nodes.TemplateData): + return str(const) + + return finalize.const(const) # type: ignore + + def _output_child_pre( + self, node: nodes.Expr, frame: Frame, finalize: _FinalizeInfo + ) -> None: + """Output extra source code before visiting a child of an + ``Output`` node. + """ + if frame.eval_ctx.volatile: + self.write("(escape if context.eval_ctx.autoescape else str)(") + elif frame.eval_ctx.autoescape: + self.write("escape(") + else: + self.write("str(") + + if finalize.src is not None: + self.write(finalize.src) + + def _output_child_post( + self, node: nodes.Expr, frame: Frame, finalize: _FinalizeInfo + ) -> None: + """Output extra source code after visiting a child of an + ``Output`` node. + """ + self.write(")") + + if finalize.src is not None: + self.write(")") + + def visit_Output(self, node: nodes.Output, frame: Frame) -> None: + # If an extends is active, don't render outside a block. + if frame.require_output_check: + # A top-level extends is known to exist at compile time. + if self.has_known_extends: + return + + self.writeline("if parent_template is None:") + self.indent() + + finalize = self._make_finalize() + body: t.List[t.Union[t.List[t.Any], nodes.Expr]] = [] + + # Evaluate constants at compile time if possible. Each item in + # body will be either a list of static data or a node to be + # evaluated at runtime. + for child in node.nodes: + try: + if not ( + # If the finalize function requires runtime context, + # constants can't be evaluated at compile time. + finalize.const + # Unless it's basic template data that won't be + # finalized anyway. + or isinstance(child, nodes.TemplateData) + ): + raise nodes.Impossible() + + const = self._output_child_to_const(child, frame, finalize) + except (nodes.Impossible, Exception): + # The node was not constant and needs to be evaluated at + # runtime. Or another error was raised, which is easier + # to debug at runtime. + body.append(child) + continue + + if body and isinstance(body[-1], list): + body[-1].append(const) + else: + body.append([const]) + + if frame.buffer is not None: + if len(body) == 1: + self.writeline(f"{frame.buffer}.append(") + else: + self.writeline(f"{frame.buffer}.extend((") + + self.indent() + + for item in body: + if isinstance(item, list): + # A group of constant data to join and output. + val = self._output_const_repr(item) + + if frame.buffer is None: + self.writeline("yield " + val) + else: + self.writeline(val + ",") + else: + if frame.buffer is None: + self.writeline("yield ", item) + else: + self.newline(item) + + # A node to be evaluated at runtime. + self._output_child_pre(item, frame, finalize) + self.visit(item, frame) + self._output_child_post(item, frame, finalize) + + if frame.buffer is not None: + self.write(",") + + if frame.buffer is not None: + self.outdent() + self.writeline(")" if len(body) == 1 else "))") + + if frame.require_output_check: + self.outdent() + + def visit_Assign(self, node: nodes.Assign, frame: Frame) -> None: + self.push_assign_tracking() + self.newline(node) + self.visit(node.target, frame) + self.write(" = ") + self.visit(node.node, frame) + self.pop_assign_tracking(frame) + + def visit_AssignBlock(self, node: nodes.AssignBlock, frame: Frame) -> None: + self.push_assign_tracking() + block_frame = frame.inner() + # This is a special case. Since a set block always captures we + # will disable output checks. This way one can use set blocks + # toplevel even in extended templates. + block_frame.require_output_check = False + block_frame.symbols.analyze_node(node) + self.enter_frame(block_frame) + self.buffer(block_frame) + self.blockvisit(node.body, block_frame) + self.newline(node) + self.visit(node.target, frame) + self.write(" = (Markup if context.eval_ctx.autoescape else identity)(") + if node.filter is not None: + self.visit_Filter(node.filter, block_frame) + else: + self.write(f"concat({block_frame.buffer})") + self.write(")") + self.pop_assign_tracking(frame) + self.leave_frame(block_frame) + + # -- Expression Visitors + + def visit_Name(self, node: nodes.Name, frame: Frame) -> None: + if node.ctx == "store" and ( + frame.toplevel or frame.loop_frame or frame.block_frame + ): + if self._assign_stack: + self._assign_stack[-1].add(node.name) + ref = frame.symbols.ref(node.name) + + # If we are looking up a variable we might have to deal with the + # case where it's undefined. We can skip that case if the load + # instruction indicates a parameter which are always defined. + if node.ctx == "load": + load = frame.symbols.find_load(ref) + if not ( + load is not None + and load[0] == VAR_LOAD_PARAMETER + and not self.parameter_is_undeclared(ref) + ): + self.write( + f"(undefined(name={node.name!r}) if {ref} is missing else {ref})" + ) + return + + self.write(ref) + + def visit_NSRef(self, node: nodes.NSRef, frame: Frame) -> None: + # NSRefs can only be used to store values; since they use the normal + # `foo.bar` notation they will be parsed as a normal attribute access + # when used anywhere but in a `set` context + ref = frame.symbols.ref(node.name) + self.writeline(f"if not isinstance({ref}, Namespace):") + self.indent() + self.writeline( + "raise TemplateRuntimeError" + '("cannot assign attribute on non-namespace object")' + ) + self.outdent() + self.writeline(f"{ref}[{node.attr!r}]") + + def visit_Const(self, node: nodes.Const, frame: Frame) -> None: + val = node.as_const(frame.eval_ctx) + if isinstance(val, float): + self.write(str(val)) + else: + self.write(repr(val)) + + def visit_TemplateData(self, node: nodes.TemplateData, frame: Frame) -> None: + try: + self.write(repr(node.as_const(frame.eval_ctx))) + except nodes.Impossible: + self.write( + f"(Markup if context.eval_ctx.autoescape else identity)({node.data!r})" + ) + + def visit_Tuple(self, node: nodes.Tuple, frame: Frame) -> None: + self.write("(") + idx = -1 + for idx, item in enumerate(node.items): + if idx: + self.write(", ") + self.visit(item, frame) + self.write(",)" if idx == 0 else ")") + + def visit_List(self, node: nodes.List, frame: Frame) -> None: + self.write("[") + for idx, item in enumerate(node.items): + if idx: + self.write(", ") + self.visit(item, frame) + self.write("]") + + def visit_Dict(self, node: nodes.Dict, frame: Frame) -> None: + self.write("{") + for idx, item in enumerate(node.items): + if idx: + self.write(", ") + self.visit(item.key, frame) + self.write(": ") + self.visit(item.value, frame) + self.write("}") + + visit_Add = _make_binop("+") + visit_Sub = _make_binop("-") + visit_Mul = _make_binop("*") + visit_Div = _make_binop("/") + visit_FloorDiv = _make_binop("//") + visit_Pow = _make_binop("**") + visit_Mod = _make_binop("%") + visit_And = _make_binop("and") + visit_Or = _make_binop("or") + visit_Pos = _make_unop("+") + visit_Neg = _make_unop("-") + visit_Not = _make_unop("not ") + + @optimizeconst + def visit_Concat(self, node: nodes.Concat, frame: Frame) -> None: + if frame.eval_ctx.volatile: + func_name = "(markup_join if context.eval_ctx.volatile else str_join)" + elif frame.eval_ctx.autoescape: + func_name = "markup_join" + else: + func_name = "str_join" + self.write(f"{func_name}((") + for arg in node.nodes: + self.visit(arg, frame) + self.write(", ") + self.write("))") + + @optimizeconst + def visit_Compare(self, node: nodes.Compare, frame: Frame) -> None: + self.write("(") + self.visit(node.expr, frame) + for op in node.ops: + self.visit(op, frame) + self.write(")") + + def visit_Operand(self, node: nodes.Operand, frame: Frame) -> None: + self.write(f" {operators[node.op]} ") + self.visit(node.expr, frame) + + @optimizeconst + def visit_Getattr(self, node: nodes.Getattr, frame: Frame) -> None: + if self.environment.is_async: + self.write("(await auto_await(") + + self.write("environment.getattr(") + self.visit(node.node, frame) + self.write(f", {node.attr!r})") + + if self.environment.is_async: + self.write("))") + + @optimizeconst + def visit_Getitem(self, node: nodes.Getitem, frame: Frame) -> None: + # slices bypass the environment getitem method. + if isinstance(node.arg, nodes.Slice): + self.visit(node.node, frame) + self.write("[") + self.visit(node.arg, frame) + self.write("]") + else: + if self.environment.is_async: + self.write("(await auto_await(") + + self.write("environment.getitem(") + self.visit(node.node, frame) + self.write(", ") + self.visit(node.arg, frame) + self.write(")") + + if self.environment.is_async: + self.write("))") + + def visit_Slice(self, node: nodes.Slice, frame: Frame) -> None: + if node.start is not None: + self.visit(node.start, frame) + self.write(":") + if node.stop is not None: + self.visit(node.stop, frame) + if node.step is not None: + self.write(":") + self.visit(node.step, frame) + + @contextmanager + def _filter_test_common( + self, node: t.Union[nodes.Filter, nodes.Test], frame: Frame, is_filter: bool + ) -> t.Iterator[None]: + if self.environment.is_async: + self.write("(await auto_await(") + + if is_filter: + self.write(f"{self.filters[node.name]}(") + func = self.environment.filters.get(node.name) + else: + self.write(f"{self.tests[node.name]}(") + func = self.environment.tests.get(node.name) + + # When inside an If or CondExpr frame, allow the filter to be + # undefined at compile time and only raise an error if it's + # actually called at runtime. See pull_dependencies. + if func is None and not frame.soft_frame: + type_name = "filter" if is_filter else "test" + self.fail(f"No {type_name} named {node.name!r}.", node.lineno) + + pass_arg = { + _PassArg.context: "context", + _PassArg.eval_context: "context.eval_ctx", + _PassArg.environment: "environment", + }.get( + _PassArg.from_obj(func) # type: ignore + ) + + if pass_arg is not None: + self.write(f"{pass_arg}, ") + + # Back to the visitor function to handle visiting the target of + # the filter or test. + yield + + self.signature(node, frame) + self.write(")") + + if self.environment.is_async: + self.write("))") + + @optimizeconst + def visit_Filter(self, node: nodes.Filter, frame: Frame) -> None: + with self._filter_test_common(node, frame, True): + # if the filter node is None we are inside a filter block + # and want to write to the current buffer + if node.node is not None: + self.visit(node.node, frame) + elif frame.eval_ctx.volatile: + self.write( + f"(Markup(concat({frame.buffer}))" + f" if context.eval_ctx.autoescape else concat({frame.buffer}))" + ) + elif frame.eval_ctx.autoescape: + self.write(f"Markup(concat({frame.buffer}))") + else: + self.write(f"concat({frame.buffer})") + + @optimizeconst + def visit_Test(self, node: nodes.Test, frame: Frame) -> None: + with self._filter_test_common(node, frame, False): + self.visit(node.node, frame) + + @optimizeconst + def visit_CondExpr(self, node: nodes.CondExpr, frame: Frame) -> None: + frame = frame.soft() + + def write_expr2() -> None: + if node.expr2 is not None: + self.visit(node.expr2, frame) + return + + self.write( + f'cond_expr_undefined("the inline if-expression on' + f" {self.position(node)} evaluated to false and no else" + f' section was defined.")' + ) + + self.write("(") + self.visit(node.expr1, frame) + self.write(" if ") + self.visit(node.test, frame) + self.write(" else ") + write_expr2() + self.write(")") + + @optimizeconst + def visit_Call( + self, node: nodes.Call, frame: Frame, forward_caller: bool = False + ) -> None: + if self.environment.is_async: + self.write("(await auto_await(") + if self.environment.sandboxed: + self.write("environment.call(context, ") + else: + self.write("context.call(") + self.visit(node.node, frame) + extra_kwargs = {"caller": "caller"} if forward_caller else None + loop_kwargs = {"_loop_vars": "_loop_vars"} if frame.loop_frame else {} + block_kwargs = {"_block_vars": "_block_vars"} if frame.block_frame else {} + if extra_kwargs: + extra_kwargs.update(loop_kwargs, **block_kwargs) + elif loop_kwargs or block_kwargs: + extra_kwargs = dict(loop_kwargs, **block_kwargs) + self.signature(node, frame, extra_kwargs) + self.write(")") + if self.environment.is_async: + self.write("))") + + def visit_Keyword(self, node: nodes.Keyword, frame: Frame) -> None: + self.write(node.key + "=") + self.visit(node.value, frame) + + # -- Unused nodes for extensions + + def visit_MarkSafe(self, node: nodes.MarkSafe, frame: Frame) -> None: + self.write("Markup(") + self.visit(node.expr, frame) + self.write(")") + + def visit_MarkSafeIfAutoescape( + self, node: nodes.MarkSafeIfAutoescape, frame: Frame + ) -> None: + self.write("(Markup if context.eval_ctx.autoescape else identity)(") + self.visit(node.expr, frame) + self.write(")") + + def visit_EnvironmentAttribute( + self, node: nodes.EnvironmentAttribute, frame: Frame + ) -> None: + self.write("environment." + node.name) + + def visit_ExtensionAttribute( + self, node: nodes.ExtensionAttribute, frame: Frame + ) -> None: + self.write(f"environment.extensions[{node.identifier!r}].{node.name}") + + def visit_ImportedName(self, node: nodes.ImportedName, frame: Frame) -> None: + self.write(self.import_aliases[node.importname]) + + def visit_InternalName(self, node: nodes.InternalName, frame: Frame) -> None: + self.write(node.name) + + def visit_ContextReference( + self, node: nodes.ContextReference, frame: Frame + ) -> None: + self.write("context") + + def visit_DerivedContextReference( + self, node: nodes.DerivedContextReference, frame: Frame + ) -> None: + self.write(self.derive_context(frame)) + + def visit_Continue(self, node: nodes.Continue, frame: Frame) -> None: + self.writeline("continue", node) + + def visit_Break(self, node: nodes.Break, frame: Frame) -> None: + self.writeline("break", node) + + def visit_Scope(self, node: nodes.Scope, frame: Frame) -> None: + scope_frame = frame.inner() + scope_frame.symbols.analyze_node(node) + self.enter_frame(scope_frame) + self.blockvisit(node.body, scope_frame) + self.leave_frame(scope_frame) + + def visit_OverlayScope(self, node: nodes.OverlayScope, frame: Frame) -> None: + ctx = self.temporary_identifier() + self.writeline(f"{ctx} = {self.derive_context(frame)}") + self.writeline(f"{ctx}.vars = ") + self.visit(node.context, frame) + self.push_context_reference(ctx) + + scope_frame = frame.inner(isolated=True) + scope_frame.symbols.analyze_node(node) + self.enter_frame(scope_frame) + self.blockvisit(node.body, scope_frame) + self.leave_frame(scope_frame) + self.pop_context_reference() + + def visit_EvalContextModifier( + self, node: nodes.EvalContextModifier, frame: Frame + ) -> None: + for keyword in node.options: + self.writeline(f"context.eval_ctx.{keyword.key} = ") + self.visit(keyword.value, frame) + try: + val = keyword.value.as_const(frame.eval_ctx) + except nodes.Impossible: + frame.eval_ctx.volatile = True + else: + setattr(frame.eval_ctx, keyword.key, val) + + def visit_ScopedEvalContextModifier( + self, node: nodes.ScopedEvalContextModifier, frame: Frame + ) -> None: + old_ctx_name = self.temporary_identifier() + saved_ctx = frame.eval_ctx.save() + self.writeline(f"{old_ctx_name} = context.eval_ctx.save()") + self.visit_EvalContextModifier(node, frame) + for child in node.body: + self.visit(child, frame) + frame.eval_ctx.revert(saved_ctx) + self.writeline(f"context.eval_ctx.revert({old_ctx_name})") diff --git a/venv/lib/python3.12/site-packages/jinja2/constants.py b/venv/lib/python3.12/site-packages/jinja2/constants.py new file mode 100644 index 0000000..41a1c23 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/constants.py @@ -0,0 +1,20 @@ +#: list of lorem ipsum words used by the lipsum() helper function +LOREM_IPSUM_WORDS = """\ +a ac accumsan ad adipiscing aenean aliquam aliquet amet ante aptent arcu at +auctor augue bibendum blandit class commodo condimentum congue consectetuer +consequat conubia convallis cras cubilia cum curabitur curae cursus dapibus +diam dictum dictumst dignissim dis dolor donec dui duis egestas eget eleifend +elementum elit enim erat eros est et etiam eu euismod facilisi facilisis fames +faucibus felis fermentum feugiat fringilla fusce gravida habitant habitasse hac +hendrerit hymenaeos iaculis id imperdiet in inceptos integer interdum ipsum +justo lacinia lacus laoreet lectus leo libero ligula litora lobortis lorem +luctus maecenas magna magnis malesuada massa mattis mauris metus mi molestie +mollis montes morbi mus nam nascetur natoque nec neque netus nibh nisi nisl non +nonummy nostra nulla nullam nunc odio orci ornare parturient pede pellentesque +penatibus per pharetra phasellus placerat platea porta porttitor posuere +potenti praesent pretium primis proin pulvinar purus quam quis quisque rhoncus +ridiculus risus rutrum sagittis sapien scelerisque sed sem semper senectus sit +sociis sociosqu sodales sollicitudin suscipit suspendisse taciti tellus tempor +tempus tincidunt torquent tortor tristique turpis ullamcorper ultrices +ultricies urna ut varius vehicula vel velit venenatis vestibulum vitae vivamus +viverra volutpat vulputate""" diff --git a/venv/lib/python3.12/site-packages/jinja2/debug.py b/venv/lib/python3.12/site-packages/jinja2/debug.py new file mode 100644 index 0000000..7ed7e92 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/debug.py @@ -0,0 +1,191 @@ +import sys +import typing as t +from types import CodeType +from types import TracebackType + +from .exceptions import TemplateSyntaxError +from .utils import internal_code +from .utils import missing + +if t.TYPE_CHECKING: + from .runtime import Context + + +def rewrite_traceback_stack(source: t.Optional[str] = None) -> BaseException: + """Rewrite the current exception to replace any tracebacks from + within compiled template code with tracebacks that look like they + came from the template source. + + This must be called within an ``except`` block. + + :param source: For ``TemplateSyntaxError``, the original source if + known. + :return: The original exception with the rewritten traceback. + """ + _, exc_value, tb = sys.exc_info() + exc_value = t.cast(BaseException, exc_value) + tb = t.cast(TracebackType, tb) + + if isinstance(exc_value, TemplateSyntaxError) and not exc_value.translated: + exc_value.translated = True + exc_value.source = source + # Remove the old traceback, otherwise the frames from the + # compiler still show up. + exc_value.with_traceback(None) + # Outside of runtime, so the frame isn't executing template + # code, but it still needs to point at the template. + tb = fake_traceback( + exc_value, None, exc_value.filename or "", exc_value.lineno + ) + else: + # Skip the frame for the render function. + tb = tb.tb_next + + stack = [] + + # Build the stack of traceback object, replacing any in template + # code with the source file and line information. + while tb is not None: + # Skip frames decorated with @internalcode. These are internal + # calls that aren't useful in template debugging output. + if tb.tb_frame.f_code in internal_code: + tb = tb.tb_next + continue + + template = tb.tb_frame.f_globals.get("__jinja_template__") + + if template is not None: + lineno = template.get_corresponding_lineno(tb.tb_lineno) + fake_tb = fake_traceback(exc_value, tb, template.filename, lineno) + stack.append(fake_tb) + else: + stack.append(tb) + + tb = tb.tb_next + + tb_next = None + + # Assign tb_next in reverse to avoid circular references. + for tb in reversed(stack): + tb.tb_next = tb_next + tb_next = tb + + return exc_value.with_traceback(tb_next) + + +def fake_traceback( # type: ignore + exc_value: BaseException, tb: t.Optional[TracebackType], filename: str, lineno: int +) -> TracebackType: + """Produce a new traceback object that looks like it came from the + template source instead of the compiled code. The filename, line + number, and location name will point to the template, and the local + variables will be the current template context. + + :param exc_value: The original exception to be re-raised to create + the new traceback. + :param tb: The original traceback to get the local variables and + code info from. + :param filename: The template filename. + :param lineno: The line number in the template source. + """ + if tb is not None: + # Replace the real locals with the context that would be + # available at that point in the template. + locals = get_template_locals(tb.tb_frame.f_locals) + locals.pop("__jinja_exception__", None) + else: + locals = {} + + globals = { + "__name__": filename, + "__file__": filename, + "__jinja_exception__": exc_value, + } + # Raise an exception at the correct line number. + code: CodeType = compile( + "\n" * (lineno - 1) + "raise __jinja_exception__", filename, "exec" + ) + + # Build a new code object that points to the template file and + # replaces the location with a block name. + location = "template" + + if tb is not None: + function = tb.tb_frame.f_code.co_name + + if function == "root": + location = "top-level template code" + elif function.startswith("block_"): + location = f"block {function[6:]!r}" + + if sys.version_info >= (3, 8): + code = code.replace(co_name=location) + else: + code = CodeType( + code.co_argcount, + code.co_kwonlyargcount, + code.co_nlocals, + code.co_stacksize, + code.co_flags, + code.co_code, + code.co_consts, + code.co_names, + code.co_varnames, + code.co_filename, + location, + code.co_firstlineno, + code.co_lnotab, + code.co_freevars, + code.co_cellvars, + ) + + # Execute the new code, which is guaranteed to raise, and return + # the new traceback without this frame. + try: + exec(code, globals, locals) + except BaseException: + return sys.exc_info()[2].tb_next # type: ignore + + +def get_template_locals(real_locals: t.Mapping[str, t.Any]) -> t.Dict[str, t.Any]: + """Based on the runtime locals, get the context that would be + available at that point in the template. + """ + # Start with the current template context. + ctx: "t.Optional[Context]" = real_locals.get("context") + + if ctx is not None: + data: t.Dict[str, t.Any] = ctx.get_all().copy() + else: + data = {} + + # Might be in a derived context that only sets local variables + # rather than pushing a context. Local variables follow the scheme + # l_depth_name. Find the highest-depth local that has a value for + # each name. + local_overrides: t.Dict[str, t.Tuple[int, t.Any]] = {} + + for name, value in real_locals.items(): + if not name.startswith("l_") or value is missing: + # Not a template variable, or no longer relevant. + continue + + try: + _, depth_str, name = name.split("_", 2) + depth = int(depth_str) + except ValueError: + continue + + cur_depth = local_overrides.get(name, (-1,))[0] + + if cur_depth < depth: + local_overrides[name] = (depth, value) + + # Modify the context with any derived context. + for name, (_, value) in local_overrides.items(): + if value is missing: + data.pop(name, None) + else: + data[name] = value + + return data diff --git a/venv/lib/python3.12/site-packages/jinja2/defaults.py b/venv/lib/python3.12/site-packages/jinja2/defaults.py new file mode 100644 index 0000000..638cad3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/defaults.py @@ -0,0 +1,48 @@ +import typing as t + +from .filters import FILTERS as DEFAULT_FILTERS # noqa: F401 +from .tests import TESTS as DEFAULT_TESTS # noqa: F401 +from .utils import Cycler +from .utils import generate_lorem_ipsum +from .utils import Joiner +from .utils import Namespace + +if t.TYPE_CHECKING: + import typing_extensions as te + +# defaults for the parser / lexer +BLOCK_START_STRING = "{%" +BLOCK_END_STRING = "%}" +VARIABLE_START_STRING = "{{" +VARIABLE_END_STRING = "}}" +COMMENT_START_STRING = "{#" +COMMENT_END_STRING = "#}" +LINE_STATEMENT_PREFIX: t.Optional[str] = None +LINE_COMMENT_PREFIX: t.Optional[str] = None +TRIM_BLOCKS = False +LSTRIP_BLOCKS = False +NEWLINE_SEQUENCE: "te.Literal['\\n', '\\r\\n', '\\r']" = "\n" +KEEP_TRAILING_NEWLINE = False + +# default filters, tests and namespace + +DEFAULT_NAMESPACE = { + "range": range, + "dict": dict, + "lipsum": generate_lorem_ipsum, + "cycler": Cycler, + "joiner": Joiner, + "namespace": Namespace, +} + +# default policies +DEFAULT_POLICIES: t.Dict[str, t.Any] = { + "compiler.ascii_str": True, + "urlize.rel": "noopener", + "urlize.target": None, + "urlize.extra_schemes": None, + "truncate.leeway": 5, + "json.dumps_function": None, + "json.dumps_kwargs": {"sort_keys": True}, + "ext.i18n.trimmed": False, +} diff --git a/venv/lib/python3.12/site-packages/jinja2/environment.py b/venv/lib/python3.12/site-packages/jinja2/environment.py new file mode 100644 index 0000000..1d3be0b --- /dev/null +++ b/venv/lib/python3.12/site-packages/jinja2/environment.py @@ -0,0 +1,1675 @@ +"""Classes for managing templates and their runtime and compile time +options. +""" + +import os +import typing +import typing as t +import weakref +from collections import ChainMap +from functools import lru_cache +from functools import partial +from functools import reduce +from types import CodeType + +from markupsafe import Markup + +from . import nodes +from .compiler import CodeGenerator +from .compiler import generate +from .defaults import BLOCK_END_STRING +from .defaults import BLOCK_START_STRING +from .defaults import COMMENT_END_STRING +from .defaults import COMMENT_START_STRING +from .defaults import DEFAULT_FILTERS # type: ignore[attr-defined] +from .defaults import DEFAULT_NAMESPACE +from .defaults import DEFAULT_POLICIES +from .defaults import DEFAULT_TESTS # type: ignore[attr-defined] +from .defaults import KEEP_TRAILING_NEWLINE +from .defaults import LINE_COMMENT_PREFIX +from .defaults import LINE_STATEMENT_PREFIX +from .defaults import LSTRIP_BLOCKS +from .defaults import NEWLINE_SEQUENCE +from .defaults import TRIM_BLOCKS +from .defaults import VARIABLE_END_STRING +from .defaults import VARIABLE_START_STRING +from .exceptions import TemplateNotFound +from .exceptions import TemplateRuntimeError +from .exceptions import TemplatesNotFound +from .exceptions import TemplateSyntaxError +from .exceptions import UndefinedError +from .lexer import get_lexer +from .lexer import Lexer +from .lexer import TokenStream +from .nodes import EvalContext +from .parser import Parser +from .runtime import Context +from .runtime import new_context +from .runtime import Undefined +from .utils import _PassArg +from .utils import concat +from .utils import consume +from .utils import import_string +from .utils import internalcode +from .utils import LRUCache +from .utils import missing + +if t.TYPE_CHECKING: + import typing_extensions as te + + from .bccache import BytecodeCache + from .ext import Extension + from .loaders import BaseLoader + +_env_bound = t.TypeVar("_env_bound", bound="Environment") + + +# for direct template usage we have up to ten living environments +@lru_cache(maxsize=10) +def get_spontaneous_environment(cls: t.Type[_env_bound], *args: t.Any) -> _env_bound: + """Return a new spontaneous environment. A spontaneous environment + is used for templates created directly rather than through an + existing environment. + + :param cls: Environment class to create. + :param args: Positional arguments passed to environment. + """ + env = cls(*args) + env.shared = True + return env + + +def create_cache( + size: int, +) -> t.Optional[t.MutableMapping[t.Tuple["weakref.ref[t.Any]", str], "Template"]]: + """Return the cache class for the given size.""" + if size == 0: + return None + + if size < 0: + return {} + + return LRUCache(size) # type: ignore + + +def copy_cache( + cache: t.Optional[t.MutableMapping[t.Any, t.Any]], +) -> t.Optional[t.MutableMapping[t.Tuple["weakref.ref[t.Any]", str], "Template"]]: + """Create an empty copy of the given cache.""" + if cache is None: + return None + + if type(cache) is dict: # noqa E721 + return {} + + return LRUCache(cache.capacity) # type: ignore + + +def load_extensions( + environment: "Environment", + extensions: t.Sequence[t.Union[str, t.Type["Extension"]]], +) -> t.Dict[str, "Extension"]: + """Load the extensions from the list and bind it to the environment. + Returns a dict of instantiated extensions. + """ + result = {} + + for extension in extensions: + if isinstance(extension, str): + extension = t.cast(t.Type["Extension"], import_string(extension)) + + result[extension.identifier] = extension(environment) + + return result + + +def _environment_config_check(environment: "Environment") -> "Environment": + """Perform a sanity check on the environment.""" + assert issubclass( + environment.undefined, Undefined + ), "'undefined' must be a subclass of 'jinja2.Undefined'." + assert ( + environment.block_start_string + != environment.variable_start_string + != environment.comment_start_string + ), "block, variable and comment start strings must be different." + assert environment.newline_sequence in { + "\r", + "\r\n", + "\n", + }, "'newline_sequence' must be one of '\\n', '\\r\\n', or '\\r'." + return environment + + +class Environment: + r"""The core component of Jinja is the `Environment`. It contains + important shared variables like configuration, filters, tests, + globals and others. Instances of this class may be modified if + they are not shared and if no template was loaded so far. + Modifications on environments after the first template was loaded + will lead to surprising effects and undefined behavior. + + Here are the possible initialization parameters: + + `block_start_string` + The string marking the beginning of a block. Defaults to ``'{%'``. + + `block_end_string` + The string marking the end of a block. Defaults to ``'%}'``. + + `variable_start_string` + The string marking the beginning of a print statement. + Defaults to ``'{{'``. + + `variable_end_string` + The string marking the end of a print statement. Defaults to + ``'}}'``. + + `comment_start_string` + The string marking the beginning of a comment. Defaults to ``'{#'``. + + `comment_end_string` + The string marking the end of a comment. Defaults to ``'#}'``. + + `line_statement_prefix` + If given and a string, this will be used as prefix for line based + statements. See also :ref:`line-statements`. + + `line_comment_prefix` + If given and a string, this will be used as prefix for line based + comments. See also :ref:`line-statements`. + + .. versionadded:: 2.2 + + `trim_blocks` + If this is set to ``True`` the first newline after a block is + removed (block, not variable tag!). Defaults to `False`. + + `lstrip_blocks` + If this is set to ``True`` leading spaces and tabs are stripped + from the start of a line to a block. Defaults to `False`. + + `newline_sequence` + The sequence that starts a newline. Must be one of ``'\r'``, + ``'\n'`` or ``'\r\n'``. The default is ``'\n'`` which is a + useful default for Linux and OS X systems as well as web + applications. + + `keep_trailing_newline` + Preserve the trailing newline when rendering templates. + The default is ``False``, which causes a single newline, + if present, to be stripped from the end of the template. + + .. versionadded:: 2.7 + + `extensions` + List of Jinja extensions to use. This can either be import paths + as strings or extension classes. For more information have a + look at :ref:`the extensions documentation `. + + `optimized` + should the optimizer be enabled? Default is ``True``. + + `undefined` + :class:`Undefined` or a subclass of it that is used to represent + undefined values in the template. + + `finalize` + A callable that can be used to process the result of a variable + expression before it is output. For example one can convert + ``None`` implicitly into an empty string here. + + `autoescape` + If set to ``True`` the XML/HTML autoescaping feature is enabled by + default. For more details about autoescaping see + :class:`~markupsafe.Markup`. As of Jinja 2.4 this can also + be a callable that is passed the template name and has to + return ``True`` or ``False`` depending on autoescape should be + enabled by default. + + .. versionchanged:: 2.4 + `autoescape` can now be a function + + `loader` + The template loader for this environment. + + `cache_size` + The size of the cache. Per default this is ``400`` which means + that if more than 400 templates are loaded the loader will clean + out the least recently used template. If the cache size is set to + ``0`` templates are recompiled all the time, if the cache size is + ``-1`` the cache will not be cleaned. + + .. versionchanged:: 2.8 + The cache size was increased to 400 from a low 50. + + `auto_reload` + Some loaders load templates from locations where the template + sources may change (ie: file system or database). If + ``auto_reload`` is set to ``True`` (default) every time a template is + requested the loader checks if the source changed and if yes, it + will reload the template. For higher performance it's possible to + disable that. + + `bytecode_cache` + If set to a bytecode cache object, this object will provide a + cache for the internal Jinja bytecode so that templates don't + have to be parsed if they were not changed. + + See :ref:`bytecode-cache` for more information. + + `enable_async` + If set to true this enables async template execution which + allows using async functions and generators. + """ + + #: if this environment is sandboxed. Modifying this variable won't make + #: the environment sandboxed though. For a real sandboxed environment + #: have a look at jinja2.sandbox. This flag alone controls the code + #: generation by the compiler. + sandboxed = False + + #: True if the environment is just an overlay + overlayed = False + + #: the environment this environment is linked to if it is an overlay + linked_to: t.Optional["Environment"] = None + + #: shared environments have this set to `True`. A shared environment + #: must not be modified + shared = False + + #: the class that is used for code generation. See + #: :class:`~jinja2.compiler.CodeGenerator` for more information. + code_generator_class: t.Type["CodeGenerator"] = CodeGenerator + + concat = "".join + + #: the context class that is used for templates. See + #: :class:`~jinja2.runtime.Context` for more information. + context_class: t.Type[Context] = Context + + template_class: t.Type["Template"] + + def __init__( + self, + block_start_string: str = BLOCK_START_STRING, + block_end_string: str = BLOCK_END_STRING, + variable_start_string: str = VARIABLE_START_STRING, + variable_end_string: str = VARIABLE_END_STRING, + comment_start_string: str = COMMENT_START_STRING, + comment_end_string: str = COMMENT_END_STRING, + line_statement_prefix: t.Optional[str] = LINE_STATEMENT_PREFIX, + line_comment_prefix: t.Optional[str] = LINE_COMMENT_PREFIX, + trim_blocks: bool = TRIM_BLOCKS, + lstrip_blocks: bool = LSTRIP_BLOCKS, + newline_sequence: "te.Literal['\\n', '\\r\\n', '\\r']" = NEWLINE_SEQUENCE, + keep_trailing_newline: bool = KEEP_TRAILING_NEWLINE, + extensions: t.Sequence[t.Union[str, t.Type["Extension"]]] = (), + optimized: bool = True, + undefined: t.Type[Undefined] = Undefined, + finalize: t.Optional[t.Callable[..., t.Any]] = None, + autoescape: t.Union[bool, t.Callable[[t.Optional[str]], bool]] = False, + loader: t.Optional["BaseLoader"] = None, + cache_size: int = 400, + auto_reload: bool = True, + bytecode_cache: t.Optional["BytecodeCache"] = None, + enable_async: bool = False, + ): + # !!Important notice!! + # The constructor accepts quite a few arguments that should be + # passed by keyword rather than position. However it's important to + # not change the order of arguments because it's used at least + # internally in those cases: + # - spontaneous environments (i18n extension and Template) + # - unittests + # If parameter changes are required only add parameters at the end + # and don't change the arguments (or the defaults!) of the arguments + # existing already. + + # lexer / parser information + self.block_start_string = block_start_string + self.block_end_string = block_end_string + self.variable_start_string = variable_start_string + self.variable_end_string = variable_end_string + self.comment_start_string = comment_start_string + self.comment_end_string = comment_end_string + self.line_statement_prefix = line_statement_prefix + self.line_comment_prefix = line_comment_prefix + self.trim_blocks = trim_blocks + self.lstrip_blocks = lstrip_blocks + self.newline_sequence = newline_sequence + self.keep_trailing_newline = keep_trailing_newline + + # runtime information + self.undefined: t.Type[Undefined] = undefined + self.optimized = optimized + self.finalize = finalize + self.autoescape = autoescape + + # defaults + self.filters = DEFAULT_FILTERS.copy() + self.tests = DEFAULT_TESTS.copy() + self.globals = DEFAULT_NAMESPACE.copy() + + # set the loader provided + self.loader = loader + self.cache = create_cache(cache_size) + self.bytecode_cache = bytecode_cache + self.auto_reload = auto_reload + + # configurable policies + self.policies = DEFAULT_POLICIES.copy() + + # load extensions + self.extensions = load_extensions(self, extensions) + + self.is_async = enable_async + _environment_config_check(self) + + def add_extension(self, extension: t.Union[str, t.Type["Extension"]]) -> None: + """Adds an extension after the environment was created. + + .. versionadded:: 2.5 + """ + self.extensions.update(load_extensions(self, [extension])) + + def extend(self, **attributes: t.Any) -> None: + """Add the items to the instance of the environment if they do not exist + yet. This is used by :ref:`extensions ` to register + callbacks and configuration values without breaking inheritance. + """ + for key, value in attributes.items(): + if not hasattr(self, key): + setattr(self, key, value) + + def overlay( + self, + block_start_string: str = missing, + block_end_string: str = missing, + variable_start_string: str = missing, + variable_end_string: str = missing, + comment_start_string: str = missing, + comment_end_string: str = missing, + line_statement_prefix: t.Optional[str] = missing, + line_comment_prefix: t.Optional[str] = missing, + trim_blocks: bool = missing, + lstrip_blocks: bool = missing, + newline_sequence: "te.Literal['\\n', '\\r\\n', '\\r']" = missing, + keep_trailing_newline: bool = missing, + extensions: t.Sequence[t.Union[str, t.Type["Extension"]]] = missing, + optimized: bool = missing, + undefined: t.Type[Undefined] = missing, + finalize: t.Optional[t.Callable[..., t.Any]] = missing, + autoescape: t.Union[bool, t.Callable[[t.Optional[str]], bool]] = missing, + loader: t.Optional["BaseLoader"] = missing, + cache_size: int = missing, + auto_reload: bool = missing, + bytecode_cache: t.Optional["BytecodeCache"] = missing, + enable_async: bool = False, + ) -> "Environment": + """Create a new overlay environment that shares all the data with the + current environment except for cache and the overridden attributes. + Extensions cannot be removed for an overlayed environment. An overlayed + environment automatically gets all the extensions of the environment it + is linked to plus optional extra extensions. + + Creating overlays should happen after the initial environment was set + up completely. Not all attributes are truly linked, some are just + copied over so modifications on the original environment may not shine + through. + + .. versionchanged:: 3.1.2 + Added the ``newline_sequence``,, ``keep_trailing_newline``, + and ``enable_async`` parameters to match ``__init__``. + """ + args = dict(locals()) + del args["self"], args["cache_size"], args["extensions"], args["enable_async"] + + rv = object.__new__(self.__class__) + rv.__dict__.update(self.__dict__) + rv.overlayed = True + rv.linked_to = self + + for key, value in args.items(): + if value is not missing: + setattr(rv, key, value) + + if cache_size is not missing: + rv.cache = create_cache(cache_size) + else: + rv.cache = copy_cache(self.cache) + + rv.extensions = {} + for key, value in self.extensions.items(): + rv.extensions[key] = value.bind(rv) + if extensions is not missing: + rv.extensions.update(load_extensions(rv, extensions)) + + if enable_async is not missing: + rv.is_async = enable_async + + return _environment_config_check(rv) + + @property + def lexer(self) -> Lexer: + """The lexer for this environment.""" + return get_lexer(self) + + def iter_extensions(self) -> t.Iterator["Extension"]: + """Iterates over the extensions by priority.""" + return iter(sorted(self.extensions.values(), key=lambda x: x.priority)) + + def getitem( + self, obj: t.Any, argument: t.Union[str, t.Any] + ) -> t.Union[t.Any, Undefined]: + """Get an item or attribute of an object but prefer the item.""" + try: + return obj[argument] + except (AttributeError, TypeError, LookupError): + if isinstance(argument, str): + try: + attr = str(argument) + except Exception: + pass + else: + try: + return getattr(obj, attr) + except AttributeError: + pass + return self.undefined(obj=obj, name=argument) + + def getattr(self, obj: t.Any, attribute: str) -> t.Any: + """Get an item or attribute of an object but prefer the attribute. + Unlike :meth:`getitem` the attribute *must* be a string. + """ + try: + return getattr(obj, attribute) + except AttributeError: + pass + try: + return obj[attribute] + except (TypeError, LookupError, AttributeError): + return self.undefined(obj=obj, name=attribute) + + def _filter_test_common( + self, + name: t.Union[str, Undefined], + value: t.Any, + args: t.Optional[t.Sequence[t.Any]], + kwargs: t.Optional[t.Mapping[str, t.Any]], + context: t.Optional[Context], + eval_ctx: t.Optional[EvalContext], + is_filter: bool, + ) -> t.Any: + if is_filter: + env_map = self.filters + type_name = "filter" + else: + env_map = self.tests + type_name = "test" + + func = env_map.get(name) # type: ignore + + if func is None: + msg = f"No {type_name} named {name!r}." + + if isinstance(name, Undefined): + try: + name._fail_with_undefined_error() + except Exception as e: + msg = f"{msg} ({e}; did you forget to quote the callable name?)" + + raise TemplateRuntimeError(msg) + + args = [value, *(args if args is not None else ())] + kwargs = kwargs if kwargs is not None else {} + pass_arg = _PassArg.from_obj(func) + + if pass_arg is _PassArg.context: + if context is None: + raise TemplateRuntimeError( + f"Attempted to invoke a context {type_name} without context." + ) + + args.insert(0, context) + elif pass_arg is _PassArg.eval_context: + if eval_ctx is None: + if context is not None: + eval_ctx = context.eval_ctx + else: + eval_ctx = EvalContext(self) + + args.insert(0, eval_ctx) + elif pass_arg is _PassArg.environment: + args.insert(0, self) + + return func(*args, **kwargs) + + def call_filter( + self, + name: str, + value: t.Any, + args: t.Optional[t.Sequence[t.Any]] = None, + kwargs: t.Optional[t.Mapping[str, t.Any]] = None, + context: t.Optional[Context] = None, + eval_ctx: t.Optional[EvalContext] = None, + ) -> t.Any: + """Invoke a filter on a value the same way the compiler does. + + This might return a coroutine if the filter is running from an + environment in async mode and the filter supports async + execution. It's your responsibility to await this if needed. + + .. versionadded:: 2.7 + """ + return self._filter_test_common( + name, value, args, kwargs, context, eval_ctx, True + ) + + def call_test( + self, + name: str, + value: t.Any, + args: t.Optional[t.Sequence[t.Any]] = None, + kwargs: t.Optional[t.Mapping[str, t.Any]] = None, + context: t.Optional[Context] = None, + eval_ctx: t.Optional[EvalContext] = None, + ) -> t.Any: + """Invoke a test on a value the same way the compiler does. + + This might return a coroutine if the test is running from an + environment in async mode and the test supports async execution. + It's your responsibility to await this if needed. + + .. versionchanged:: 3.0 + Tests support ``@pass_context``, etc. decorators. Added + the ``context`` and ``eval_ctx`` parameters. + + .. versionadded:: 2.7 + """ + return self._filter_test_common( + name, value, args, kwargs, context, eval_ctx, False + ) + + @internalcode + def parse( + self, + source: str, + name: t.Optional[str] = None, + filename: t.Optional[str] = None, + ) -> nodes.Template: + """Parse the sourcecode and return the abstract syntax tree. This + tree of nodes is used by the compiler to convert the template into + executable source- or bytecode. This is useful for debugging or to + extract information from templates. + + If you are :ref:`developing Jinja extensions ` + this gives you a good overview of the node tree generated. + """ + try: + return self._parse(source, name, filename) + except TemplateSyntaxError: + self.handle_exception(source=source) + + def _parse( + self, source: str, name: t.Optional[str], filename: t.Optional[str] + ) -> nodes.Template: + """Internal parsing function used by `parse` and `compile`.""" + return Parser(self, source, name, filename).parse() + + def lex( + self, + source: str, + name: t.Optional[str] = None, + filename: t.Optional[str] = None, + ) -> t.Iterator[t.Tuple[int, str, str]]: + """Lex the given sourcecode and return a generator that yields + tokens as tuples in the form ``(lineno, token_type, value)``. + This can be useful for :ref:`extension development ` + and debugging templates. + + This does not perform preprocessing. If you want the preprocessing + of the extensions to be applied you have to filter source through + the :meth:`preprocess` method. + """ + source = str(source) + try: + return self.lexer.tokeniter(source, name, filename) + except TemplateSyntaxError: + self.handle_exception(source=source) + + def preprocess( + self, + source: str, + name: t.Optional[str] = None, + filename: t.Optional[str] = None, + ) -> str: + """Preprocesses the source with all extensions. This is automatically + called for all parsing and compiling methods but *not* for :meth:`lex` + because there you usually only want the actual source tokenized. + """ + return reduce( + lambda s, e: e.preprocess(s, name, filename), + self.iter_extensions(), + str(source), + ) + + def _tokenize( + self, + source: str, + name: t.Optional[str], + filename: t.Optional[str] = None, + state: t.Optional[str] = None, + ) -> TokenStream: + """Called by the parser to do the preprocessing and filtering + for all the extensions. Returns a :class:`~jinja2.lexer.TokenStream`. + """ + source = self.preprocess(source, name, filename) + stream = self.lexer.tokenize(source, name, filename, state) + + for ext in self.iter_extensions(): + stream = ext.filter_stream(stream) # type: ignore + + if not isinstance(stream, TokenStream): + stream = TokenStream(stream, name, filename) + + return stream + + def _generate( + self, + source: nodes.Template, + name: t.Optional[str], + filename: t.Optional[str], + defer_init: bool = False, + ) -> str: + """Internal hook that can be overridden to hook a different generate + method in. + + .. versionadded:: 2.5 + """ + return generate( # type: ignore + source, + self, + name, + filename, + defer_init=defer_init, + optimized=self.optimized, + ) + + def _compile(self, source: str, filename: str) -> CodeType: + """Internal hook that can be overridden to hook a different compile + method in. + + .. versionadded:: 2.5 + """ + return compile(source, filename, "exec") + + @typing.overload + def compile( # type: ignore + self, + source: t.Union[str, nodes.Template], + name: t.Optional[str] = None, + filename: t.Optional[str] = None, + raw: "te.Literal[False]" = False, + defer_init: bool = False, + ) -> CodeType: ... + + @typing.overload + def compile( + self, + source: t.Union[str, nodes.Template], + name: t.Optional[str] = None, + filename: t.Optional[str] = None, + raw: "te.Literal[True]" = ..., + defer_init: bool = False, + ) -> str: ... + + @internalcode + def compile( + self, + source: t.Union[str, nodes.Template], + name: t.Optional[str] = None, + filename: t.Optional[str] = None, + raw: bool = False, + defer_init: bool = False, + ) -> t.Union[str, CodeType]: + """Compile a node or template source code. The `name` parameter is + the load name of the template after it was joined using + :meth:`join_path` if necessary, not the filename on the file system. + the `filename` parameter is the estimated filename of the template on + the file system. If the template came from a database or memory this + can be omitted. + + The return value of this method is a python code object. If the `raw` + parameter is `True` the return value will be a string with python + code equivalent to the bytecode returned otherwise. This method is + mainly used internally. + + `defer_init` is use internally to aid the module code generator. This + causes the generated code to be able to import without the global + environment variable to be set. + + .. versionadded:: 2.4 + `defer_init` parameter added. + """ + source_hint = None + try: + if isinstance(source, str): + source_hint = source + source = self._parse(source, name, filename) + source = self._generate(source, name, filename, defer_init=defer_init) + if raw: + return source + if filename is None: + filename = "

yS2oLS46Z62ABB&!iWok{ zUF+eXK&X~SFVGN$HTApn_J@{$s11Hc=9mMh3Jt)x6Bq?NPL>wP$dJjR*w~oyvKIkU zh&krEmy|l?0CZ{(o`AOUL}lP_fHM0ywI+hqmaPe)nya2nu#uSkd&JUaJ7xo+KP1%d zBWn_(W9e5^(nySbHe1eyvSkCg&4e|S8jc$;S{^iQH0 zSYD^t!fNPwi`e3k@DGbe_MswV_%uWe=Un0I9tYsPNgX#SliWI8pw^$c-)h^*niKv2 zQnp5d{7g~|-F+$~8gSq`tj0m`WiVfQm$32#Kg-Z|yAig9Y6u2}$;Iky{h;KHgX+a{ zUpnJjUSXQ)npfBjc-<>({KR)8Gm*wWsuCbgB)YnUVviEIv{|INq?RvZ&v;obgW{h@ z4^RH*sQ2pd8Ph2{+8x`x#(=*4^{AZ1VphNv2@k}eGE}%c-}A?fxP|0mcp_;S=&dn4 z47u6;eB4L23Rd$_dUbRB3dSGvIKm|{w}belJLda(Uvxaq(M!99(S$v$-n04t(R-aT z92x^;qKzH)rP#Ik8fr=$KCK44wz;LV<&NuY`TX!-z2lPuu+AmHl9_@LQZ(tw&VotW z?wHw4ra6T3YD;H)t~vjhvKfUcZYu4HDAy#UAt~%Wvsy_ZSQDzxd`3`eLqMdjqTeqS zBM{RV8aq-zh)<0eF_PYX{4qWeX?FGC|NH-034MXuZg527qpbU58=7s#I1B3u(j^MP zPTW(Wu~Rm{PNzGP#vX)PIHQJk3p4UUM;D6?gYPY{Mws+yfb?}-fr9L1o^$rHf!tXM z(0!teqDU?csI*+^;HU@2N;r#TLEN%!;k)U=G0ldX4q6!}>qQPkakUy153vbh&NXOs z1EAO>slnp&9L*MoQ(ge5u<_CEmPNYSL@KmX4MDg7 zvgD2w7j^x-7u?MOs)c`PijFcRSr|b`uDPJ}P>_e)q)S-tfXQ*-fJ}F>f$%#+Y=%rd zTKcAVZvPTMzuWy&ay4Lnq`3(MPLO4=9towBe$4Ge{tS>P(#!RI>+B-01uD)Ji}cyU z?dU1$-gr4%+N_Ot5F4OhhnOUDL8M9sl`@x(1 zHnHg=Y(;BHoa6*)CcF+BiUbeTXHBd>P^>mtNgL}5vZh2BZ;H1!Xde&CefJctWlldM zfJMzps-oa~?@xe6Y<+<)qexdJ$`C6zJVTQ&26vM5c|~Ie*g^}N@4q<;;UpmM(V8yW`9Z6B0s`Gce9vlmym^^XWfHIo`IUJBccPM2&n z+Ib9tGnPJ}$Y(P>TG?0B^ag#4`?^efP;wP3%c$GKKM8jgJrL%iV(#Sc?v7RTJLFwH zfB*KubT<4n7|xeJ!RR#*3VRfY9H%*h(hE#j%qp<@n!UnVb%Kls82VDm zC+=r^{94C1TZ|xU;5|bV_yT4?;BHC(s><|4Q~XDFg%RR@{Pv*?>=>h+fvKW3dRzSr z!&3VM$sU^+VlNJMG#TIIb32~1i(dER*+=-oPpK1^*bcdoo8R*UUjCpQX`K}4S}8y# zj()!L(Qq*QID&`8QB1W=r2@Jkh)^IGmT79RV)AzMDYo4r3PAgtHlHfrn2=$w90|9wydF9-b)X2egc4}yODGwj zGU){CXpOwr=ouLc%E^H6qHnp`NqV^`2?pFJk1Ka3rLg)wa;wnXm=<>HQDzzKhI&Hd z>Z<~}+-8pT$^cbAt3_IMEAS9F#&8SCV!bJu0(lf|G@1m8&DXSD9Fjm&=)Gm#GCi;f z?-#O54IeSV{O5tKqdp~1{rH1L-6I>E%~9rn@Cs<6rDD}{1q%t@)lX6oILt|1-vOSRuWF z5Z66Bdc=Ovta?AXlm;Q8lUDTm>xWV3nKzb;mL%lOTZOHXP>X}`-EmD9VS}T;4B!%6 z;f8b{G*DZQGrh#EU!c(2oiPn)Z3`)8u~W2cGE}S_a15{jC(8kYv)WJA!}{8H`;fD!y~~2Ku=+E4UXKCIT{2nw`Fx_(az*;hZBHQb#;mbW}}Q zA!OS1J&C$xC5{I1o}xItU^kfl>n#q{?%g?1MRSNkFHSw|Swy*)V+nla5?uw;7j|Ox znXFVXD+(->tS0KoC_4&74YW|xAs-gZM(am9)ieq# zDnSW3PfMHHd@9cJ-Re|1EfqbC687J;gBQa&J?+cMb~JjA+Z|wL7OE=mjC4lhRcqAo zdIMfifC4m102{ZVanJp9x9PaImJ<5jF!!*Ar9@A#`|tFK8ENoV)%$9?@#eFLs6#DK z+E4|a9oz@@{^$~ey_Xg<{AD(0_b5C%1()BylJ>$>S73d>CE&Uae!rGhxvav;dNeHY z%*li>xTR8^XCv2Er%U>@^%=o(wGkW!>fUOe&hc{iJJg&!YI^`=F$R80UNJ5?Y}ZsS zIptcPG>uNo@en>~YL^=;p$DRbKEFprlO{jtqKCfUB^3jtLe6v;L|(%a*x+&n#NQ(h zHW?WYcY$q5``66Hh=4WP_G2^~a({wUON0>H#O1ZI@4E-v(g)Eo0!et$P#zW6(eD*> z9!c%-mxwijc}k0M7=K#=5YjRREQboYG7|50vwBL7JFi7yC1LP@dS5RylxgQ?-#3A{u&NFcWKpYDW_3h+ldo5v%xrzM9} zcr^7dF(MEUA+Lid%)iG>u7KjHbGWzL^xM%VbMZZGE*C62g#Wi^$1|r94C#Xam+Ww0 zA^`!4ZQxzFXGWOOV-=2wXB#-$!hze`_9lY3#uZkQDrCP1cXkGS4<8B8bEFadl z;Vi29i8~sMvTxdGIkN~G3>1yRyclW&8{5VR?nSBGfUn+w~R3AGX z^$@x*Q`Xk2pc;)oFdAs@O8ovO)Guueqy|hACud@HCfQGk_A zE`$gaytU5VtsN_B$u(-hQ8Q(4+jZV>-d8#Z8 zMETG-Q`F8tz!(0L8oJ#FbUIl~dCG0dIUs7B&w3VZao%oAoHu{o%nMEfz0PX<=TBnt zT-P+jjzB(X*G_LsY+5)cszhRu1h!%9j0Q}DBz)SL55CD|kLsXdh+RuXtf2!{yg@Mq z$(I+on<>?uyT}T(m_`&T3+US{GnUU`R4a6CTtB#_o(`*d17tZ%evK%^IXO`X`d9hv ztk-ouhr*c_sARK4#SMvBt9ZjiK;!*l{ykV4EsZQ#Bof-96XJJG7R-1wK-$7^ZmKN% zlnvvmFuF{kG9eHb*U!r+90dU5S3!|2E6H7n=rY*Co9UGPbLh5~+rv^QFkd67+eaGcGnKvYIUv-D$C3_QNu*ClWWTJEH6dC`}k(q#p zDUmHBSvi3}4J?{2Hq6=GXM$ipNgQzmyb%a`DwHkq9n%^4eiL6#Aw(!}NnLnrw0s*x zY9x7ew@uu`8E)t|a+|(EmgP3DBuwW?WaREk)ZhPUcWIg3vI5xBKy93P!Q0Y%-H2ttp(?qdeou7|BCH(t3 zJIgZ^DXug@0c*4x7Y|X2&ZLvooR=lx$^Z>bfjhPdg+Qh{&AXtuwF%tVA9Le~ha?l2 z$d_^@yG!*Tp_~bV-}|y$0SpR*b~jD94zsOwlKa3B`fgB>RR0MjrOx~9Rlz(u-Bk>u z0KfdCn~_*xB_x5*D4-eG`!3r%c|R#9G5YH-tOiE)DwN2;ja%|(-)1N45y1(=+xcFv zt0{d6LAYMwY;#ZL!JhF>i2-*HSQtej-S|Ge^d17d`|h$!3ToB;ndjfcks~3;1zL_#n@V32UV}h&GBx$y|HlI-y8K6pDZOgm98Lnh@Kk*JS+KG?eMHW+J zo@{0y!C0(^{l(zYWJyb2p(!eMD#jhAY9UsPawv7jsKH9law=}14FlC&Fh}~o1vxyp^{0ohItnj#n{3h#b#_2TGF`Gt_ zM+LI+4H`UcTn~6Z`AnTo*y%+MQq|U&ar#(zdNC&Ck!7F(*UbCEtxDW9f{mYuLXdu< zKr_38GN*tkzJp%S5}HX;FIupEo&02iEH;(bAIZ;b9@&=m-M8f_hVN3c20HUyIOn3w zA+4RG$J+&1@58+S5&pVbj4m#%v$xF_E-0Uy(NQxyw#1^n1L{6lDa%Vup=5x>VqV-q zRTN-Rq#f&HZBNcYR~)uTA0mHV$kh~Ee{Ig4EK63mT`osmw;v?0i!JEt{cn-REWUn- z)}VoEo5#EC_qY{x1R7Q3_<)grwFSExrF#phPx}nUvwuEC<8t;b7o`hQ%vJVn=*6Z& zwr6uTZPyKS*X!(^jVPptQ(WjI8Immf!GFu{K6?G1%_dcUFyM7o{$s?Q$uw#pu9QBb z=7cLVTB>cFCjIzwf-6YB!co}Nxwd%FuFDJW$PJZAS|1y&xXOpDI&iC#3feo!c2tjn zzF8O*$zS)_O0#iau7S62eOzQmt`4fnvmz%swJlfm6IzLAP+O)HOHn@hetV~#YA0*_ zmW5*oQ+y^{{|CXEppCJitVtFHT&eX)_b6xKBw+z|hq|7L^OD7Mfyv|w;;*0iCiRoz z=Vhx?@8=b=v~6YbU|Ex!iz+T@p5LYvWEnXV%{I}knX(vEN!&22tzePb@Lso@H=4;P zv>Vg=qZcFGp=4`~S(3_LO{b>b_&yXb&%}fmC*_U4KT|L8DYY?08}YhhomAwHu=m~i zV}A~G5IQNlO7eKNAwDF&l6#W1k6^us%3Dm5qowVNP)#+uQd2=Ay$um~b@v82H2I0) z1-_p^MBrX295g-A_trVu+OZk#t?nP%b72c{U#@OCh69xY3b|3FBk50bD-%@O1C>os z;k%7=b?dziqSsn*P;@}#v1CIY?Hx;zX6n)Q7Rq-dVD1wA3mIfSgy`~^?x_EZaXLrC z`ew(Gl)GjvVBoa50~N}wQ+=vpKbhi@{&>{CM?Z3xqCW6oYH_zXF9V-eQ(4u_9V%eJ z@l5(Tdu5R|gYs{IhjCGYwXfv%kT5ECCtjYUx;3*WfC(p&cA8O(mwU~Uvq- zX^78ZXWoo}z7`wF2(PHPRWuf_1n$wdin}so3Q$HE_D^1owY)VxhXSIiW=`Zb-j%`}R;Qp}3ez^m`Kh5Y^3dWsq`ho3ljfw;w-M$o(TQ?J+I_#wA>G6AIc%neP0Z zPXFxv3fz+z~f!L<)a&<{EWv%3|W6BQJgQ-jS?8(!##SilX_5RoYZ zYyI~&weG(uUqpghg35V+w&dp_hh2MmfS1`;B-!&+h25l@W(U-Szs7*3u_kX$M#BP| zkmgOb{OPQ5O2@X^Jy9ZBWvRLP2I;iEE3P$JQKdFK8}``3_M<6)yURnLf3#G(iX}D0iAc7YGi?#c^#uXk8n}_x5=9aUfsf< z;FBG=sT}|Ed?!nCy`EgH<6GyMax8|xLQNzm=Kavc?Y3wy{$4fVA8Xm8HCS$wdE9>R zaDXxeaXiEwO@;vLK+iDB{4Gu^O|g~n%`Mli8TsI!_}Mz{2I9-GEuThjq~DfnVSGJ-ng~*N9G9_IDMlC zXrut;$lGc0LZ5f(G*4niIAkUgV?O+kEy51V-P*Xd*Oh_5w(s;kWv3YV*>oOv(2if`Vw;;rjiK^)KBwJLxzx>dnc%%l5;G1Z&f6e*RjH7b1ntR!0$ zB5RC$0y}%G>YrXzxbSz#`$i#TA;{BP^?EK}Rn901sod7PA&vTjyuYZV$f~x&h#AN% zR0~_pAb&1v*ic^BY+#4DJfho4+5(PcadT4?%cUsexQn;NAAU2TeT}_LO^P@B=-` z0Z+`=cC?AI4bcwvRR@3J>VwxWH~q7QbP zyQV_#gX1+;dUCh1{=H>b2(t&K^G!lP*9wdjI7Q>0AVx+QyH0X472E}W za2qg5uf!k@Q_2K8Zo2^L-Xxqlb8jQyyuippDZuSqOV)jb3@gWI07#ows%pb&|CHTf z&JTZ+JKFbg7mkZUjPTPTQpJBk8o9ltT?WYeKlZBLY0uE^ThzYmQ9Ex#cG*F%*n7Z< z^=W~SPITvZ0j6P<_5PNm*goKK@A4aM;dpTc)SA#rk^aP_&Ue%GWha4PX_JN!FIoTI zU$LXeJ>ZSg(?k~jBz0rB>~6O30dgbo69YBQviGs2EJ~>AV8~>RN3nG3^SSk3uL-k4 z`CtxbzRS%Tl*_IjCW~O4)wCe26INfF(!+Z=pgSp^CGBr2IZN=5L?<~(DqHEj(P&&hi3N_=mhP36*}ld zB{!8vP29?PS`szgH=wO--xBe801(y{BKZPv^{%l9^T)j*h_wv|fUkF5d9@!pN2hr? zAM^`V`ArWO%47#f>MNd*3gF*tT|tG$ri7mdL);q&n<}g}|Mg~z{Zd{&r|x}W-5^i; z*UdeGiP_A5W)eUl;luFI?!IJ5RQ)*;+RiFCG2y#3*Hf9G4!NS#8ATx+8XGO~7IWNn@lv{!LqJma z9zTYLo^9Cw*DCsGxsJTP>~~l_-23-Y#ed5`Y!&x>!J9mmBV3*e+y8ttuhC0^P65_n zbRI3yC#b4xUUrCIc)2Q4ZRyu>eW8SGXXLJ4v3)tJoXs$NV;~WLDlG+vz^4X6Gyv?L354 z!$+o|75zi>&e`O?S-!e!-#I(y9iaN&d#HrXTWHT#6UG`=(*ZBVt)|1_8B+F6KUbgT z;}!0N*?NY1;(2xV>1bBb1Z7eUm%%r2Oe}?$71${;-6bbXmX)2HNYI-O7N6(K7o%x^ zjInmQ>sEASSAZ@8{4#>o;QX{>eT2i?7WJ^;|=(et59 za5x?LN#vDN#ovR&qn~l$oM&`}EYIo1@=`uDKOCI=hHhH8HUM%4B3*tm+x>M80iY`j zMma^ozbb4TZ)Omk3W`nTNa)eqw zP*sH+&4I5#R#DZnhCcL6)UBa9(ZLbDR}5^YRYz{Z>%nk0 zulV1PKRxO7&>b9_faJY%JGOCNAKNiG$I+1+r&j?=%t3W9k_`ohXui5GJq*+3$`;!t zM+GSuO4j_mm6y~OO9xw>d4EM>;wUELoRI&bhw$F4NGZ?*K+*6c{+ zxg8lC<`ZRYM%)eXK@1^_4+X@_kO$3#df7+a659CHe`JpXQMKdhZ06Vw=o)4b{v!-Q z4i9mw^YCKPA8XX8KV2T`y_3mtSyCZK*bTWD=nvQjvQ9%$2zyc?JsmASju8Dde2?lJ zx}sj$aMTfvG_{Y=&PD$VkQn18_$7vhrGC#5z+8YK!eYxjMvllbX|VDvuLS%-Zo*W- zPkYihN%&T>5PROj&bdH1|{@ow1hGK^AD-nPeOKjGOt1+_09;~MI=wdoN zdjRzD#Mp&o+LrgwL8k#98N;cyePjPud%%J7Q;@Szg404=Owg)-R z(!<_x=Z4&ATTLiyS{G-71@U3gkhh0r5R5l6iMEhs0Ct!LA;F6)#Y7^+;z_haGX#kG zRB~chM5~n^I&m3bPGFMhU_P%JsrxRwaQKB%<;KdN0Ly@}PB^qcVNbBjhT0PRg6qiK z>;X_pBSKe=>d-WzRQHs~tG*ReR#(QFsFNh&Kn2Tg#LF-c&NtLEmp7AMDQ#O%5~$E} zU}&B=JaT{0`yl*uw=pk)75-ShvwD7hh+{J_M&xfA|!#Q0DHU5AkAAI;8-khZ<=ih5yE`G3nhVN_qU|yzr9R7WDcz`#r zM)l})G#)KK|MPNmb~cYM4R>~%8C~K zfBZ2Xoy!0DUcj^S58iW2ZS04^)(`)foxcA^{yjUxAuSX1OB@duJ6-$mcnQECP{?l8 z;}OcaF8lT6)_5Xz%+?>cXJ;{~ae1CD@?bXqy!FRGOmFk(9jnH-q{kvOm$RXLRi3{b z4(Im4@o>r8LgC;tUmh(+6Zd*`i3Z5-7lH~F;Brx&kELdot_AxmrkQ`19#!s1jW)pY zI@NM|faHDS)X-(&7P#Zf*<$(n_?i9eU&H0|k(^|I@!38UBMB}$v&ibaU$dr5&gcZ# z2JHs*{5V4U@CacK`bVyLcxFhP9k)sS$qooW1Vd$dvSv5} zrgE@Y$7(b-U*p%s@M^fIhe*^>;xKF1mrixJ za6xiH?8=PN!#S9LZkZoJsyGKw@xQS`@Q~DShDbGUEcC zg~4mJ;GVtWI?5^O^O)$!a$FPqi}1j#dmv=+Iv@i156P~I#iRj^oF#+LT$9k0v*{d9(oDdZ8f!UU!j_@p^ zA>k0rz!!Si2zuF2_T<5Ck3Tv|@)f}-oDRHLQ1)eU!9g{Txpr78i^d@=&Y>M2%ogmC zet7;yVx;DvqV*O*5X^TV_-?)yR1{l4rs8Hp0EdkI=@Ld2E@lZ?JHJfP+y70b>S!Ui z+!Vak>Fn%t@}lP^ib5$2VJoZ#Ly$eff-g|AEu^D+thhTJE{7GP+GDI070|K;5Qaxi zmV@P|WI;SleH83e02RNef1TIEXTau}6=Qz^gr_L|)?j!%rLG!CB(4Gd%_HcG1#}RCLVqv^hQsNP{Zj#q<;aHh zS)d5r;X-0j#K1Ee@+92G>F0NrW9od=j}8oT-a2&@KAk-ujz{oMK+#lK2!++?0fe~v z9E=AV$?q#%c3@RD3*QvaV|8paz2b?3>7-ImOsP=fM|-9e3K!ziKy)$TPeftd%Td7# z0WM>9c{U*tzs{qCUos)y;BLZasWXd*qmpt@9Tr3Ki^J!rF^x`981d7woS-=_%VJ^` z)IyDbw`Z8uM!Z}jiL=MIB|XcWkV6t_z9M}fvURDy{r2|Fqwwqc zWT}D!@wV)m6zyaEZ8Uu*cUR#u9;iHLFX*r_yOoLTNS0GnbGVp>qC@4`ZF4d)afBjB zIsXfri5LJ|j(!_??)Z{I*2~oat)G(x@|Pfd{&%>T)%FORzwGboV4_y{U{}vBRz}vx zYqDF?*M(%oGbT&%TqeN{@Wz8z@J<;1imS<%M+@{At80sA_>=Nz@ordyRT?0E#tAy5 zX&@jKwJ|Wx<%rbVa!`SADzJOL*fNN3#_T)!U-mh(CoE8OflLc}G( zc}6H}w&ZOwz^owEZ$)szN`mXgFNKz6V>!zH&7LEAI|nLS{{4pj8#o1?eMah@zHAxr zi%^q_cX29xLgQWN$IF>e-y5s3dQ=pFmzWX@oIwp1pJJbm6_|vjv-g%YKpw)>>^njf zS+yV9s^}?`Qf)NM?FQ!GeczJgFDJxgq zFw0NrwhZ{G-DiZ;!r-V;8I_qRrhbN=btyQeg>{l+C1jAEx@u23NXMqsueHUmcm$Fv z6udDv)lyrl^ZdaZa8!OHoM|=Pj&ZFsS zm}e9sq;=^Lj(J`qBm)KZ2>(0!R5)d20LJ&A^Sgyw@GCC5RW^2t@b;L7oP3YZWepl{Y#J3UaIDZ5x2`^hZOw{)47cMs1L5s2buwCDh>F3ON3+;YY=BOQ)v zKofy2=wPG%R9MUYF5CwOS@EyQ$ee*;p|n#R1v@=?&NPVA$;fy&2Ey>A-z8Lk#v2pW zoTtZ&fhT0U8-u!&QJny#L0}h$x0KPsaHJ&{}wkRu`gEtdht|m{L8h#1fDF^oVq$<_ zgN%*qLev2>G6FnwHQRML2wC(r+fgP$b+=m1G}u(lm&VH=h;P5t4+2(~I(lmqLJyXB zUEm7)Ym|5^B-Y`CIP3?w z90Ja=6Ji4KKd<{3#5OQJnL$^8(be!1VD${xP}GIi?ik8fGb$k{%4tKLH->-WRT&~i zEni961Os4}|LSAG=9n%MLFnjObYC|anaEDp^BVgaSdosLLsp60$1Y_1okf3lnmS6L zqF0e>Co<&~RDi(fcLDv4L${&^yWp+-h48HcOps5wnMHX7^5v(Gh@VhH(!cBul<|pB z&bpfX@7=61Wj%Nn-*xoK5VBA{b)G{*j}5|62Y74(3Bk!Br)F5Z?6SIKpwT}ca?3IH z#A9&lU9VkneXnAF>tMbzKK1&UlQzOUgE$r_7;z}_AQMM9UY!a6LRkYoM3NEybU0nk zxW)K592$F!Vo=W!uVJr{Vjy9WiBu>pR|Z>+*%UYLCn0�I+9eS)`5p#GFB?)yv&i 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/LICENSE b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/LICENSE new file mode 100644 index 0000000..d1cc6f8 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/LICENSE @@ -0,0 +1,376 @@ +Mozilla Public License Version 2.0 +================================== + +Copyright 2009-2024 Joshua Bronson. All rights reserved. + + +1. Definitions +-------------- + +1.1. "Contributor" + means each individual or legal entity that creates, contributes to + the creation of, or owns Covered Software. + +1.2. "Contributor Version" + means the combination of the Contributions of others (if any) used + by a Contributor and that particular Contributor's Contribution. + +1.3. "Contribution" + means Covered Software of a particular Contributor. + +1.4. "Covered Software" + means Source Code Form to which the initial Contributor has attached + the notice in Exhibit A, the Executable Form of such Source Code + Form, and Modifications of such Source Code Form, in each case + including portions thereof. + +1.5. "Incompatible With Secondary Licenses" + means + + (a) that the initial Contributor has attached the notice described + in Exhibit B to the Covered Software; or + + (b) that the Covered Software was made available under the terms of + version 1.1 or earlier of the License, but not also under the + terms of a Secondary License. + +1.6. "Executable Form" + means any form of the work other than Source Code Form. + +1.7. "Larger Work" + means a work that combines Covered Software with other material, in + a separate file or files, that is not Covered Software. + +1.8. "License" + means this document. + +1.9. "Licensable" + means having the right to grant, to the maximum extent possible, + whether at the time of the initial grant or subsequently, any and + all of the rights conveyed by this License. + +1.10. "Modifications" + means any of the following: + + (a) any file in Source Code Form that results from an addition to, + deletion from, or modification of the contents of Covered + Software; or + + (b) any new file in Source Code Form that contains any Covered + Software. + +1.11. "Patent Claims" of a Contributor + means any patent claim(s), including without limitation, method, + process, and apparatus claims, in any patent Licensable by such + Contributor that would be infringed, but for the grant of the + License, by the making, using, selling, offering for sale, having + made, import, or transfer of either its Contributions or its + Contributor Version. + +1.12. "Secondary License" + means either the GNU General Public License, Version 2.0, the GNU + Lesser General Public License, Version 2.1, the GNU Affero General + Public License, Version 3.0, or any later versions of those + licenses. + +1.13. "Source Code Form" + means the form of the work preferred for making modifications. + +1.14. "You" (or "Your") + means an individual or a legal entity exercising rights under this + License. For legal entities, "You" includes any entity that + controls, is controlled by, or is under common control with You. For + purposes of this definition, "control" means (a) the power, direct + or indirect, to cause the direction or management of such entity, + whether by contract or otherwise, or (b) ownership of more than + fifty percent (50%) of the outstanding shares or beneficial + ownership of such entity. + +2. License Grants and Conditions +-------------------------------- + +2.1. Grants + +Each Contributor hereby grants You a world-wide, royalty-free, +non-exclusive license: + +(a) under intellectual property rights (other than patent or trademark) + Licensable by such Contributor to use, reproduce, make available, + modify, display, perform, distribute, and otherwise exploit its + Contributions, either on an unmodified basis, with Modifications, or + as part of a Larger Work; and + +(b) under Patent Claims of such Contributor to make, use, sell, offer + for sale, have made, import, and otherwise transfer either its + Contributions or its Contributor Version. + +2.2. Effective Date + +The licenses granted in Section 2.1 with respect to any Contribution +become effective for each Contribution on the date the Contributor first +distributes such Contribution. + +2.3. Limitations on Grant Scope + +The licenses granted in this Section 2 are the only rights granted under +this License. No additional rights or licenses will be implied from the +distribution or licensing of Covered Software under this License. +Notwithstanding Section 2.1(b) above, no patent license is granted by a +Contributor: + +(a) for any code that a Contributor has removed from Covered Software; + or + +(b) for infringements caused by: (i) Your and any other third party's + modifications of Covered Software, or (ii) the combination of its + Contributions with other software (except as part of its Contributor + Version); or + +(c) under Patent Claims infringed by Covered Software in the absence of + its Contributions. + +This License does not grant any rights in the trademarks, service marks, +or logos of any Contributor (except as may be necessary to comply with +the notice requirements in Section 3.4). + +2.4. Subsequent Licenses + +No Contributor makes additional grants as a result of Your choice to +distribute the Covered Software under a subsequent version of this +License (see Section 10.2) or under the terms of a Secondary License (if +permitted under the terms of Section 3.3). + +2.5. Representation + +Each Contributor represents that the Contributor believes its +Contributions are its original creation(s) or it has sufficient rights +to grant the rights to its Contributions conveyed by this License. + +2.6. Fair Use + +This License is not intended to limit any rights You have under +applicable copyright doctrines of fair use, fair dealing, or other +equivalents. + +2.7. Conditions + +Sections 3.1, 3.2, 3.3, and 3.4 are conditions of the licenses granted +in Section 2.1. + +3. Responsibilities +------------------- + +3.1. Distribution of Source Form + +All distribution of Covered Software in Source Code Form, including any +Modifications that You create or to which You contribute, must be under +the terms of this License. You must inform recipients that the Source +Code Form of the Covered Software is governed by the terms of this +License, and how they can obtain a copy of this License. You may not +attempt to alter or restrict the recipients' rights in the Source Code +Form. + +3.2. Distribution of Executable Form + +If You distribute Covered Software in Executable Form then: + +(a) such Covered Software must also be made available in Source Code + Form, as described in Section 3.1, and You must inform recipients of + the Executable Form how they can obtain a copy of such Source Code + Form by reasonable means in a timely manner, at a charge no more + than the cost of distribution to the recipient; and + +(b) You may distribute such Executable Form under the terms of this + License, or sublicense it under different terms, provided that the + license for the Executable Form does not attempt to limit or alter + the recipients' rights in the Source Code Form under this License. + +3.3. Distribution of a Larger Work + +You may create and distribute a Larger Work under terms of Your choice, +provided that You also comply with the requirements of this License for +the Covered Software. If the Larger Work is a combination of Covered +Software with a work governed by one or more Secondary Licenses, and the +Covered Software is not Incompatible With Secondary Licenses, this +License permits You to additionally distribute such Covered Software +under the terms of such Secondary License(s), so that the recipient of +the Larger Work may, at their option, further distribute the Covered +Software under the terms of either this License or such Secondary +License(s). + +3.4. Notices + +You may not remove or alter the substance of any license notices +(including copyright notices, patent notices, disclaimers of warranty, +or limitations of liability) contained within the Source Code Form of +the Covered Software, except that You may alter any license notices to +the extent required to remedy known factual inaccuracies. + +3.5. Application of Additional Terms + +You may choose to offer, and to charge a fee for, warranty, support, +indemnity or liability obligations to one or more recipients of Covered +Software. However, You may do so only on Your own behalf, and not on +behalf of any Contributor. You must make it absolutely clear that any +such warranty, support, indemnity, or liability obligation is offered by +You alone, and You hereby agree to indemnify every Contributor for any +liability incurred by such Contributor as a result of warranty, support, +indemnity or liability terms You offer. You may include additional +disclaimers of warranty and limitations of liability specific to any +jurisdiction. + +4. Inability to Comply Due to Statute or Regulation +--------------------------------------------------- + +If it is impossible for You to comply with any of the terms of this +License with respect to some or all of the Covered Software due to +statute, judicial order, or regulation then You must: (a) comply with +the terms of this License to the maximum extent possible; and (b) +describe the limitations and the code they affect. Such description must +be placed in a text file included with all distributions of the Covered +Software under this License. Except to the extent prohibited by statute +or regulation, such description must be sufficiently detailed for a +recipient of ordinary skill to be able to understand it. + +5. Termination +-------------- + +5.1. The rights granted under this License will terminate automatically +if You fail to comply with any of its terms. However, if You become +compliant, then the rights granted under this License from a particular +Contributor are reinstated (a) provisionally, unless and until such +Contributor explicitly and finally terminates Your grants, and (b) on an +ongoing basis, if such Contributor fails to notify You of the +non-compliance by some reasonable means prior to 60 days after You have +come back into compliance. Moreover, Your grants from a particular +Contributor are reinstated on an ongoing basis if such Contributor +notifies You of the non-compliance by some reasonable means, this is the +first time You have received notice of non-compliance with this License +from such Contributor, and You become compliant prior to 30 days after +Your receipt of the notice. + +5.2. If You initiate litigation against any entity by asserting a patent +infringement claim (excluding declaratory judgment actions, +counter-claims, and cross-claims) alleging that a Contributor Version +directly or indirectly infringes any patent, then the rights granted to +You by any and all Contributors for the Covered Software under Section +2.1 of this License shall terminate. + +5.3. In the event of termination under Sections 5.1 or 5.2 above, all +end user license agreements (excluding distributors and resellers) which +have been validly granted by You or Your distributors under this License +prior to termination shall survive termination. + +************************************************************************ +* * +* 6. Disclaimer of Warranty * +* ------------------------- * +* * +* Covered Software is provided under this License on an "as is" * +* basis, without warranty of any kind, either expressed, implied, or * +* statutory, including, without limitation, warranties that the * +* Covered Software is free of defects, merchantable, fit for a * +* particular purpose or non-infringing. The entire risk as to the * +* quality and performance of the Covered Software is with You. * +* Should any Covered Software prove defective in any respect, You * +* (not any Contributor) assume the cost of any necessary servicing, * +* repair, or correction. This disclaimer of warranty constitutes an * +* essential part of this License. No use of any Covered Software is * +* authorized under this License except under this disclaimer. * +* * +************************************************************************ + +************************************************************************ +* * +* 7. Limitation of Liability * +* -------------------------- * +* * +* Under no circumstances and under no legal theory, whether tort * +* (including negligence), contract, or otherwise, shall any * +* Contributor, or anyone who distributes Covered Software as * +* permitted above, be liable to You for any direct, indirect, * +* special, incidental, or consequential damages of any character * +* including, without limitation, damages for lost profits, loss of * +* goodwill, work stoppage, computer failure or malfunction, or any * +* and all other commercial damages or losses, even if such party * +* shall have been informed of the possibility of such damages. This * +* limitation of liability shall not apply to liability for death or * +* personal injury resulting from such party's negligence to the * +* extent applicable law prohibits such limitation. Some * +* jurisdictions do not allow the exclusion or limitation of * +* incidental or consequential damages, so this exclusion and * +* limitation may not apply to You. * +* * +************************************************************************ + +8. Litigation +------------- + +Any litigation relating to this License may be brought only in the +courts of a jurisdiction where the defendant maintains its principal +place of business and such litigation shall be governed by laws of that +jurisdiction, without reference to its conflict-of-law provisions. +Nothing in this Section shall prevent a party's ability to bring +cross-claims or counter-claims. + +9. Miscellaneous +---------------- + +This License represents the complete agreement concerning the subject +matter hereof. If any provision of this License is held to be +unenforceable, such provision shall be reformed only to the extent +necessary to make it enforceable. Any law or regulation which provides +that the language of a contract shall be construed against the drafter +shall not be used to construe this License against a Contributor. + +10. Versions of the License +--------------------------- + +10.1. New Versions + +Mozilla Foundation is the license steward. Except as provided in Section +10.3, no one other than the license steward has the right to modify or +publish new versions of this License. Each version will be given a +distinguishing version number. + +10.2. Effect of New Versions + +You may distribute the Covered Software under the terms of the version +of the License under which You originally received the Covered Software, +or under the terms of any subsequent version published by the license +steward. + +10.3. Modified Versions + +If you create software not governed by this License, and you want to +create a new license for such software, you may create and use a +modified version of this License if you rename the license and remove +any references to the name of the license steward (except to note that +such modified license differs from this License). + +10.4. Distributing Source Code Form that is Incompatible With Secondary +Licenses + +If You choose to distribute Source Code Form that is Incompatible With +Secondary Licenses under the terms of this version of the License, the +notice described in Exhibit B of this License must be attached. + +Exhibit A - Source Code Form License Notice +------------------------------------------- + + This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. + +If it is not possible or desirable to put the notice in a particular +file, then You may include the notice in a location (such as a LICENSE +file in a relevant directory) where a recipient would be likely to look +for such a notice. + +You may add additional accurate notices of copyright ownership. + +Exhibit B - "Incompatible With Secondary Licenses" Notice +--------------------------------------------------------- + + This Source Code Form is "Incompatible With Secondary Licenses", as + defined by the Mozilla Public License, v. 2.0. diff --git a/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/METADATA b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/METADATA new file mode 100644 index 0000000..5356d23 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/METADATA @@ -0,0 +1,260 @@ +Metadata-Version: 2.1 +Name: bidict +Version: 0.23.1 +Summary: The bidirectional mapping library for Python. +Author-email: Joshua Bronson +License: MPL 2.0 +Project-URL: Changelog, https://bidict.readthedocs.io/changelog.html +Project-URL: Documentation, https://bidict.readthedocs.io +Project-URL: Funding, https://bidict.readthedocs.io/#sponsoring +Project-URL: Repository, https://github.com/jab/bidict +Keywords: bidict,bimap,bidirectional,dict,dictionary,mapping,collections +Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python :: Implementation :: CPython +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Typing :: Typed +Requires-Python: >=3.8 +Description-Content-Type: text/x-rst +License-File: LICENSE + +.. role:: doc +.. (Forward declaration for the "doc" role that Sphinx defines for interop with renderers that + are often used to show this doc and that are unaware of Sphinx (GitHub.com, PyPI.org, etc.). + Use :doc: rather than :ref: here for better interop as well.) + + +bidict +====== + +*The bidirectional mapping library for Python.* + + +Status +------ + +.. image:: https://img.shields.io/pypi/v/bidict.svg + :target: https://pypi.org/project/bidict + :alt: Latest release + +.. image:: https://img.shields.io/readthedocs/bidict/main.svg + :target: https://bidict.readthedocs.io/en/main/ + :alt: Documentation + +.. image:: https://github.com/jab/bidict/actions/workflows/test.yml/badge.svg + :target: https://github.com/jab/bidict/actions/workflows/test.yml?query=branch%3Amain + :alt: GitHub Actions CI status + +.. image:: https://img.shields.io/pypi/l/bidict.svg + :target: https://raw.githubusercontent.com/jab/bidict/main/LICENSE + :alt: License + +.. image:: https://static.pepy.tech/badge/bidict + :target: https://pepy.tech/project/bidict + :alt: PyPI Downloads + +.. image:: https://img.shields.io/badge/GitHub-sponsor-ff69b4 + :target: https://github.com/sponsors/jab + :alt: Sponsor + + +Features +-------- + +- Mature: Depended on by + Google, Venmo, CERN, Baidu, Tencent, + and teams across the world since 2009 + +- Familiar, Pythonic APIs + that are carefully designed for + safety, simplicity, flexibility, and ergonomics + +- Lightweight, with no runtime dependencies + outside Python's standard library + +- Implemented in + concise, well-factored, fully type-hinted Python code + that is optimized for running efficiently + as well as for long-term maintenance and stability + (as well as `joy <#learning-from-bidict>`__) + +- Extensively `documented `__ + +- 100% test coverage + running continuously across all supported Python versions + (including property-based tests and benchmarks) + + +Installation +------------ + +``pip install bidict`` + + +Quick Start +----------- + +.. code:: python + + >>> from bidict import bidict + >>> element_by_symbol = bidict({'H': 'hydrogen'}) + >>> element_by_symbol['H'] + 'hydrogen' + >>> element_by_symbol.inverse['hydrogen'] + 'H' + + +For more usage documentation, +head to the :doc:`intro` [#fn-intro]_ +and proceed from there. + + +Enterprise Support +------------------ + +Enterprise-level support for bidict can be obtained via the +`Tidelift subscription `__ +or by `contacting me directly `__. + +I have a US-based LLC set up for invoicing, +and I have 15+ years of professional experience +delivering software and support to companies successfully. + +You can also sponsor my work through several platforms, including GitHub Sponsors. +See the `Sponsoring <#sponsoring>`__ section below for details, +including rationale and examples of companies +supporting the open source projects they depend on. + + +Voluntary Community Support +--------------------------- + +Please search through already-asked questions and answers +in `GitHub Discussions `__ +and the `issue tracker `__ +in case your question has already been addressed. + +Otherwise, please feel free to +`start a new discussion `__ +or `create a new issue `__ on GitHub +for voluntary community support. + + +Notice of Usage +--------------- + +If you use bidict, +and especially if your usage or your organization is significant in some way, +please let me know in any of the following ways: + +- `star bidict on GitHub `__ +- post in `GitHub Discussions `__ +- `email me `__ + + +Changelog +--------- + +For bidict release notes, see the :doc:`changelog`. [#fn-changelog]_ + + +Release Notifications +--------------------- + +.. duplicated in CHANGELOG.rst: + (Would use `.. include::` but GitHub's renderer doesn't support it.) + +Watch `bidict releases on GitHub `__ +to be notified when new versions of bidict are published. +Click the "Watch" dropdown, choose "Custom", and then choose "Releases". + + +Learning from bidict +-------------------- + +One of the best things about bidict +is that it touches a surprising number of +interesting Python corners, +especially given its small size and scope. + +Check out :doc:`learning-from-bidict` [#fn-learning]_ +if you're interested in learning more. + + +Contributing +------------ + +I have been bidict's sole maintainer +and `active contributor `__ +since I started the project ~15 years ago. + +Your help would be most welcome! +See the :doc:`contributors-guide` [#fn-contributing]_ +for more information. + + +Sponsoring +---------- + +.. duplicated in CONTRIBUTING.rst + (Would use `.. include::` but GitHub's renderer doesn't support it.) + +.. image:: https://img.shields.io/badge/GitHub-sponsor-ff69b4 + :target: https://github.com/sponsors/jab + :alt: Sponsor through GitHub + +Bidict is the product of thousands of hours of my unpaid work +over the 15+ years that I've been the sole maintainer. + +If bidict has helped you or your company accomplish your work, +please sponsor my work through one of the following, +and/or ask your company to do the same: + +- `GitHub `__ +- `PayPal `__ +- `Tidelift `__ +- `thanks.dev `__ +- `Gumroad `__ +- `a support engagement with my LLC <#enterprise-support>`__ + +If you're not sure which to use, GitHub is an easy option, +especially if you already have a GitHub account. +Just choose a monthly or one-time amount, and GitHub handles everything else. +Your bidict sponsorship on GitHub will automatically go +on the same regular bill as any other GitHub charges you pay for. +PayPal is another easy option for one-time contributions. + +See the following for rationale and examples of companies +supporting the open source projects they depend on +in this manner: + +- ``__ +- ``__ +- ``__ + +.. - ``__ +.. - ``__ +.. - ``__ + + +Finding Documentation +--------------------- + +If you're viewing this on ``__, +note that multiple versions of the documentation are available, +and you can choose a different version using the popup menu at the bottom-right. +Please make sure you're viewing the version of the documentation +that corresponds to the version of bidict you'd like to use. + +If you're viewing this on GitHub, PyPI, or some other place +that can't render and link this documentation properly +and are seeing broken links, +try these alternate links instead: + +.. [#fn-intro] ``__ | ``__ + +.. [#fn-changelog] ``__ | ``__ + +.. [#fn-learning] ``__ | ``__ + +.. [#fn-contributing] ``__ | ``__ diff --git a/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/RECORD b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/RECORD new file mode 100644 index 0000000..b5ee6e4 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/RECORD @@ -0,0 +1,32 @@ +bidict-0.23.1.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +bidict-0.23.1.dist-info/LICENSE,sha256=8_U63OyqSNc6ZuI4-lupBstBh2eDtF0ooTRrMULuvZo,16784 +bidict-0.23.1.dist-info/METADATA,sha256=2ovIRm6Df8gdwAMekGqkeBSF5TWj2mv1jpmh4W4ks7o,8704 +bidict-0.23.1.dist-info/RECORD,, +bidict-0.23.1.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +bidict-0.23.1.dist-info/WHEEL,sha256=oiQVh_5PnQM0E3gPdiz09WCNmwiHDMaGer_elqB3coM,92 +bidict-0.23.1.dist-info/top_level.txt,sha256=WuQO02jp0ODioS7sJoaHg3JJ5_3h6Sxo9RITvNGPYmc,7 +bidict/__init__.py,sha256=pL87KsrDpBsl3AG09LQk1t1TSFt0hIJVYa2POMdErN8,4398 +bidict/__pycache__/__init__.cpython-312.pyc,, +bidict/__pycache__/_abc.cpython-312.pyc,, +bidict/__pycache__/_base.cpython-312.pyc,, +bidict/__pycache__/_bidict.cpython-312.pyc,, +bidict/__pycache__/_dup.cpython-312.pyc,, +bidict/__pycache__/_exc.cpython-312.pyc,, +bidict/__pycache__/_frozen.cpython-312.pyc,, +bidict/__pycache__/_iter.cpython-312.pyc,, +bidict/__pycache__/_orderedbase.cpython-312.pyc,, +bidict/__pycache__/_orderedbidict.cpython-312.pyc,, +bidict/__pycache__/_typing.cpython-312.pyc,, +bidict/__pycache__/metadata.cpython-312.pyc,, +bidict/_abc.py,sha256=SMCNdCsmqSWg0OGnMZtnnXY8edjXcyZup5tva4HBm_c,3172 +bidict/_base.py,sha256=YiauA0aj52fNB6cfZ4gBt6OV-CRQoZm7WVhuw1nT-Cg,24439 +bidict/_bidict.py,sha256=Sr-RoEzWOaxpnDRbDJ7ngaGRIsyGnqZgzvR-NyT4jl4,6923 +bidict/_dup.py,sha256=YAn5gWA6lwMBA5A6ebVF19UTZyambGS8WxmbK4TN1Ww,2079 +bidict/_exc.py,sha256=HnD_WgteI5PrXa3zBx9RUiGlgnZTO6CF4nIU9p3-njk,1066 +bidict/_frozen.py,sha256=p4TaRHKeyTs0KmlpwSnZiTlN_CR4J97kAgBpNdZHQMs,1771 +bidict/_iter.py,sha256=zVUx-hJ1M4YuJROoFWRjPKlcaFnyo1AAuRpOaKAFhOQ,1530 +bidict/_orderedbase.py,sha256=M7v5rHa7vrym9Z3DxQBFQDxjnrr39Z8p26V0c1PggoE,8942 +bidict/_orderedbidict.py,sha256=pPnmC19mIISrj8_yjnb-4r_ti1B74tD5eTd08DETNuI,7080 +bidict/_typing.py,sha256=AylMZpBhEFTQegfziPSxfKkKLk7oUsH6o3awDIg2z_k,1289 +bidict/metadata.py,sha256=BMIKu6fBY_OKeV_q48EpumE7MdmFw8rFcdaUz8kcIYk,573 +bidict/py.typed,sha256=RJao5SVFYIp8IfbxhL_SpZkBQYe3XXzPlobSRdh4B_c,16 diff --git a/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/WHEEL b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/WHEEL new file mode 100644 index 0000000..98c0d20 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: bdist_wheel (0.42.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/top_level.txt new file mode 100644 index 0000000..6ff5b04 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict-0.23.1.dist-info/top_level.txt @@ -0,0 +1 @@ +bidict diff --git a/venv/lib/python3.12/site-packages/bidict/__init__.py b/venv/lib/python3.12/site-packages/bidict/__init__.py new file mode 100644 index 0000000..07e5ba5 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/__init__.py @@ -0,0 +1,103 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +# ============================================================================ +# * Welcome to the bidict source code * +# ============================================================================ + +# Reading through the code? You'll find a "Code review nav" comment like the one +# below at the top and bottom of the key source files. Follow these cues to take +# a path through the code that's optimized for familiarizing yourself with it. +# +# If you're not reading this on https://github.com/jab/bidict already, go there +# to ensure you have the latest version of the code. While there, you can also +# star the project, watch it for updates, fork the code, and submit an issue or +# pull request with any proposed changes. More information can be found linked +# from README.rst, which is also shown on https://github.com/jab/bidict. + +# * Code review nav * +# ============================================================================ +# Current: __init__.py Next: _abc.py → +# ============================================================================ + + +"""The bidirectional mapping library for Python. + +---- + +bidict by example: + +.. code-block:: python + + >>> from bidict import bidict + >>> element_by_symbol = bidict({'H': 'hydrogen'}) + >>> element_by_symbol['H'] + 'hydrogen' + >>> element_by_symbol.inverse['hydrogen'] + 'H' + + +Please see https://github.com/jab/bidict for the most up-to-date code and +https://bidict.readthedocs.io for the most up-to-date documentation +if you are reading this elsewhere. + +---- + +.. :copyright: (c) 2009-2024 Joshua Bronson. +.. :license: MPLv2. See LICENSE for details. +""" + +# Use private aliases to not re-export these publicly (for Sphinx automodule with imported-members). +from __future__ import annotations as _annotations + +from contextlib import suppress as _suppress + +from ._abc import BidirectionalMapping as BidirectionalMapping +from ._abc import MutableBidirectionalMapping as MutableBidirectionalMapping +from ._base import BidictBase as BidictBase +from ._base import BidictKeysView as BidictKeysView +from ._base import GeneratedBidictInverse as GeneratedBidictInverse +from ._bidict import MutableBidict as MutableBidict +from ._bidict import bidict as bidict +from ._dup import DROP_NEW as DROP_NEW +from ._dup import DROP_OLD as DROP_OLD +from ._dup import ON_DUP_DEFAULT as ON_DUP_DEFAULT +from ._dup import ON_DUP_DROP_OLD as ON_DUP_DROP_OLD +from ._dup import ON_DUP_RAISE as ON_DUP_RAISE +from ._dup import RAISE as RAISE +from ._dup import OnDup as OnDup +from ._dup import OnDupAction as OnDupAction +from ._exc import BidictException as BidictException +from ._exc import DuplicationError as DuplicationError +from ._exc import KeyAndValueDuplicationError as KeyAndValueDuplicationError +from ._exc import KeyDuplicationError as KeyDuplicationError +from ._exc import ValueDuplicationError as ValueDuplicationError +from ._frozen import frozenbidict as frozenbidict +from ._iter import inverted as inverted +from ._orderedbase import OrderedBidictBase as OrderedBidictBase +from ._orderedbidict import OrderedBidict as OrderedBidict +from .metadata import __author__ as __author__ +from .metadata import __copyright__ as __copyright__ +from .metadata import __description__ as __description__ +from .metadata import __license__ as __license__ +from .metadata import __url__ as __url__ +from .metadata import __version__ as __version__ + + +# Set __module__ of re-exported classes to the 'bidict' top-level module, so that e.g. +# 'bidict.bidict' shows up as 'bidict.bidict` rather than 'bidict._bidict.bidict'. +for _obj in tuple(locals().values()): # pragma: no cover + if not getattr(_obj, '__module__', '').startswith('bidict.'): + continue + with _suppress(AttributeError): + _obj.__module__ = 'bidict' + + +# * Code review nav * +# ============================================================================ +# Current: __init__.py Next: _abc.py → +# ============================================================================ diff --git a/venv/lib/python3.12/site-packages/bidict/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/bidict/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fe4b9140dd037c1d255644a3f7170ade3766911e GIT binary patch literal 2480 zcmZ{l&rcgi6vt-)gT1!-VSfK!FklFHP0Wv`R!Tx*+N33b@~g^3(Q3Ur*h}_@HM9N;}OaFu(a_gm4`XjOAQ_jdeC zJT4-*k{5DCxeKAc*`RT?1t7f1HzD){=?EiT(3?!bYQoI|<7TtP3gK4Z7CmIPSz#RJ z+zK4Q5zcL=W1J(vaUAC?n(bBx?%*5+?!=v(V`i6?zzNQA;BMT_xgEF% z_i*k2?!~>FJAwOfALlOMe%#MF0X%>QICldN;z7_p5{Da&R8j&;yh~3T61`g^BC|Me1`Kl z@I0R9ECDaz1R1%#< zu5i#KpgW*}x_;Pv2OS7=v+6v!-YgNRVCV)VnrAq+3W-$9Wy3B?rct0Otw_5Lm3As# z$+2ZoOv5FLEI{+5LPa8ns#P{gP84NX(j1+n3#Oyp&*h{t4-rL4lGfJNq+RM*{6-LG zSY?MoIA5jVKuls0+fxb^#jRKc$CN&)d(3{7x{}ICsZvF!PLbHDujft;x(lxN*zAe- zslKvd?-S~hyC=Ru=#`WxiaRDzT_U-JNF~oJySYrJXm};RAZw15*;5OddKOrIJjkNu zxSr&f)1H&oRgds&NUE)ijqt!^Bwe6x^FenZ)i7fx2I&aW-yerh}PIX5hCM(F8Ny%=CZ(Z*r*7UN-Jy zrk|MsW(L8)`au!s5F3RQ!y}XqGma@vPy)WK5hk@COT10#C=ptru7xw2A_Nr|~Sj6*aRdit?&pm(>tJ=N}ic#=A z!W)oI!7@LhH(=4b>zR^ck&H!4s&=2yOdjg2(xU2S4oD%J*(dgX2C|+BPV*)CY&PS< zv!%=6t`><~KLj(1V%UbKC~~<{4WAEczD6&=E!d&p{tV`yWB zX2HG|Q9SW@=DXP^na7!DiR7QLsc-TxqKQY#-;ex2pGD976y-r96a&R6;m1wxDWNEJOhjXaq!1Qb0y@Gu|D?o9@HR%sO>c zwY16~(4Nws%CRUH4n6ePdoPJN(5{4pgg9`6CcX63@7ss-GOUvEH?!aK_dRC+931Q? z@Vx&?b=KTP$aCBzPaz_-wcmhPA||O3Q!`Vx=A>#V4e7LeJaIleSsUZ!qN8<7*y8hfOzeGL00 z!bwd7EK{adOPi@$hG%)s%$e!M%yKN1{MPbj-pnj!YK2a=SO`XY`OPN4_PL#|(}pK# zeRH7Hi6W({)8ew+-%sJ0_)2ltlwD{H&$c6EWSP~Cau=PJupA~VyF=?8%1jd=Lrg;@ z#}YJ(w91qc)fvleb0PT*Z3(Z%h3b?-#`&gYG^ypZZ0>MZ0SomSUE96Fn+fG))AMbU zdZ1K<$@Hk;$`>wWKs31Et^q0b!Ys$OL&3La+;XL2AXyH19})x8m^?^BEoy5+Kr9iJ zoRjahqPFmK8tN&wgfXb5CEoz|hLz9^qCS3ubINS#jVFL%rVLd^2n=-|3b33&Sb8hV zOq51cS{2NaT+%5|O?DABCxq}sm0sn{RftfXCor1ag$Sth>tU^9NuU~hpom9$sClRb z8OiO2L~Q7PQ^tq$~v`$74{$%?cT zKi&d%Hp^ut3c8|Wp|v_eJ`Q=|P_Ifz067Y_B@V6oWc>iyJ+@LfvWB_Yl00m=FnON> z0mbiLhh~4Tz2aocS#d2$FetI4zO=Q_!3u?0d!ElOhJ=jRYrxUxFZqLZA}oj z8Uj0wWdeT<-;Ku)G!(z*TWw}TLtug;z1Utm6(>LmC zr8wBd$h)c-Xp(>ozSsdqiO%^_b=$WGjt-5cv)$PQTr|cb2Ot2GH<)j4caw6L)oloi z!&DP6+q*c+X#OB>Ehdy@_%;&&eH9Z?o%tqiza*fU5@y1OYaoQnYbndI7P#3BaVtD@ zz6rg=+RU=iehI>s3J}7<&}8k@t;ooa_Z+(4?g>K_`%K9gQazt%j4^}wX`;}GWO9U@%za~ k?bWd}e`rt6URynTZRPrnmCtXjT)(w?_V&L7n8Jwv2NKvK7ytkO literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict/__pycache__/_base.cpython-312.pyc b/venv/lib/python3.12/site-packages/bidict/__pycache__/_base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..28f06a9c72d740203d22265e0758dd7275d63333 GIT binary patch literal 23198 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 CHL7?3 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict/__pycache__/_bidict.cpython-312.pyc b/venv/lib/python3.12/site-packages/bidict/__pycache__/_bidict.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..1ca0e857367fddce8473c39bd74b11cd7645ea75 GIT binary patch literal 8508 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 CZzdD~ literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict/__pycache__/_dup.cpython-312.pyc b/venv/lib/python3.12/site-packages/bidict/__pycache__/_dup.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..a92c7d63351f0b8ec0ac19ba3ac6e85637a841ec GIT binary patch literal 2239 zcmbVN&2Q936d&(;KeGAQBuaonNG1WbI3l*7LPT3s6xdKAr5gmKmE0n)*PhKfcl_CO_iDm_IN>OF``?UDb1OHd*~EmbN)J@giuoO5T&aF(O5qiTHt&xZrVSidcXcH|X6RF4)%$O}yV`@y`eB6$!BFv(ls3z5< zfMVzqWF{UUGf9$9TN&ndYG!{wK0doLi$wqcSnm#1WhSI^dG($37 zX9q*+5SP~D((uN)8`NF1OoDTUtuvM@E;)I>R>ZnvVoGe?BPK5Uj^SCZquZ8Om;c~V zNJ7x7JC5t=T)+yj7UvzmYD6JMv>C6ke;U@Ch#*yfcZr#T8aHF`7I8IUifYnK!7GSr zs-Be6L2u}PF7&rCJLh0MWU=RBPrpm}T%%--I370rnr#_j0Ju!uDs~OSr_^#* z{}}xczlEe&ArNFK9`tBhc(Ixmq&3aas{}Za&-}_5vCE7Hg#Rii6}L*1Dy`_oT|$*S zVTMjubf&D6(s>0kUQ=wVq}1wO#dSWE&z)D8<&l{hsOu|)DJ9Fa3{TPETI5=td!wXA zHEm<0>q_O;?s0I+rhqiitKlP?@^|vfVd=%Nv^_MvHMy1lY2nGj)<@gfi`(go`#iCN z6bq7+cs_N4IP<8Krv0!TWHhbnn!e4`>eIA)zHT>@Olg|w8sIMldK3_gXb&etK%O8v z%z2J9nrsoiVkdw+K);Ar_L8W7q%r?n_PxgSkQ|6YVm3O*k8F&1@-+*J@{6wg?!4pe zP(AY3h9T_BKs)sa-2y6-h)|6&k~HHS8zcpY=PNNpN zo4V)GT=9NrR=!K>MO?OsZ8i;CaCW_-d+%apy+Qy#ZJPwcNo+Ap9K-b;k5FR%r;|0^ z{+~|Zq)-0c&4PnHNXO6_;mMX)7>ot|p8cGW1zHwdq@gVBKc!G|o{{&J{~Kvy2&^0cdic@mLxD)Mp;PLh!O<-SbH? zw0@@Ic{P?(nz)jwS2ktKRl1JL6|ZWa3Ik^|Rj@HrA~SwyLkew#r5(iK+JiW#6{MaJ zG;|ayjPgGOJ<3Ul4PN&_R@1t=Y70AKT#5fAxcbN|;>4??W1QO+$D)&5Uy4!gigKeH1BW1VCm2{NX!+$ET7Lf8-16e>ps%@(x@op0 zZ8lYDD2$)?fU*yr0eS%C7z>h6&rs}v-~}RqzXIibGQxS-40yPmju2!D&<@Sp(9TJi z5*_FA2~IF4hf@#Im!gjIF?}DTynC|mf$YTvLHKhJ3A4YWsW)i&S2TK%>=kAoojyP? z?Tw*{>6hcmi*coq*iN0;LCUMivo9wvyqLVuNN;DxchH4@Y#b!B!pVno-!6W$cz}R? zdlpT7ur>Q^ba(P{W8l%i4!Zn$;`G+&&-1$zxkleZX9wk8gU0n|XLhHqHnNY#chS}G G?*9gq&q6r> literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict/__pycache__/_exc.cpython-312.pyc b/venv/lib/python3.12/site-packages/bidict/__pycache__/_exc.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..0d742c24a38dc36d89e17833e6a15284204e4241 GIT binary patch literal 1563 zcmb7EO>fgc5Z#UQ;id^KswxmguoUr;5@Om4Aw>w(sue<@6cxlF7kBI3Bvu_eUE3+? z0WSFgz4bR#J@GrZ`>CA_B1IH8V1wryrx0paf~-Uw{Z^$TBR zXbyKLsq1!ed)D>g6thHh}tvj`8HR14RI@Wg)muTGq`od|0CoRPg6cS-2lyCHWu^vm{1 z)Ak%1aF!;ps81SPkf6p%kp_V%ZoQ9cC~U4gf4#m%imK0N@P-R4RxEjqTLqP(B%~_E zq%^89S*)1qn~UK1DKKsHBNj{OQHMrj-ib)Mx-D<%u0c@$6Kr+y`~Ro>w6h?xY54lUehT z{2-}35G5XUgfP2O;exx6VQ~0g!kd*Xljgc?SzmbZzVPHuDK{bHjFpq25(c4w$sjZd zObn(>^zAAYE1{^HP`UpUdRKoO4VNe4GGvg$%-;a>O~V*}pGNrB7c}2XVw^v)dk7vq uUBmjphaQ4QFN5)7=gNZISnTN-FL$oy<;!wUPhh<>|FHAu&2Jk;6rcU@?%GZo>QEIYAXY6p zfM8vGZ?W^chR_qS87(~p($Ok_ZA6fbh(u&h@?~3=1Xeu7R*6b-Ue4ES4Rk8eJl!{J zBf&c0yq%YjjBX)fY$1}T8Z~IXEtetYo|0y;3j?K67~Z|Z!oEwWx!Cd?&KFnPEF99H z=@PdUthtRyO5Sgk(xeA^%w>B~U zS&CVS>ck-Gmb#Z2Z6nd-#x!}7C)$<@BhV{_cw)Tep}F)Q?Y5${zgTgDD9&Lqi zd_nEfkqVk^G(Zof`a=-0%Bk1p!qxoyuGI~FYWb||v_7NExCc%ZB5n>8NS~oijP;}lOzHmCrMd6iYuxe}?wkI+OQ!+*!raKsKb35_W8-GCCaIWXOb!=L)R%8C%GUQuJcLxI;3i=`;eFA3XlHcH7>(9haFPR`tTg7#<;JHKnax59CZ3&2F@~A~ z$EO&_1&sZWta}1aVEp;I<7E~dV-mJNJ%#buMaG!D1VQ4-#>aPV;_L6?8(-i5;{IX&Y-}tX zDX367Fcy+sE!)+ORV_D@w44N~6xpi~LUhqyhwh;ZCJsN=;30zdC@nRIoABB&!NOR_ znMLq|2^ys(oh&mpuBKCYmt6uE!8&e%_(PE->Ccyu^pW%wU3h{@PthyCqVw=O)~2PI V2a7w+-3vSI$J4L>gIRG~s2z zu_0Zj)R2f$+YMbMs?=Q-)AeOfykYX_xiLLwsfKP!d4o!-MW}44dOh_$WnDKcSPP>4&<}xVu|O5IVQ#`E8t6X7`m^~^bbJN|kXvDvL z#=*VUYo$kf%mbYL#iBRg!f@Y8{qi^q?`d z)O7pw+((O^#na#V=KGeK{xR8!uS9p?cnEl5s=8^(dXCuG;-SxYWP7=O8ibX$I7-T< zE#_p?qAcL3k2Nf8;{s*3Z409lCJXqiM5C-9+_aD~Q({ofDQFy<{_scVn&&@TDBmbQ z^dETK7+W}TcZy*RDGXU706DmBnE>~GJg}3-r!OPXmL4yLY#AW7`P!TR5 zi{%<#ET-E*>|S`OAXnDq&jkoc`6MXZMh+darRkEy$a6xJs4=c8M3Ic45t6eKp^yaS ze7?$`VcC>qsVfipw<`-VrpZGZ$x7L5CZjTS7Ev;pY*vyji>gCo7HQ-1lvrcbVH_pq zm}W_^9TR6sTXlCC07lXY)g*0FRY2CO$sMvh&+S{J1_Eb+I$37}XLF{F$hl$8d&zJ% z%xmT9DOxWOA^|UqR;h~_*p+qYl;{OkQ8+C;3$g~eoxd4xoQR*ouGv1;ANSgRcsrOT zJK*}l_Q0D%8Qpk{$2|@e{9qto=mAho2US)CT*uL7kZOTyc0x0aUdK=*HkVuMxtm(8 zJ39Trnm;nTm(gZgO}q`+n>oO zMlO@FLzzr|3@(~vGL!|h?X$|vm2?N|1dI}UrVUD2q5-Mu8UV1Rbf7c`2`5Ya5h8mur{m;?P pC+xTH3EB(Y*S-Kg{#Oh|_bj$A%B%I#v^ZT@Mbc|u1RvrX{0nyaLf!xX literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict/__pycache__/_orderedbase.cpython-312.pyc b/venv/lib/python3.12/site-packages/bidict/__pycache__/_orderedbase.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..ab096026d8a7934a120acf411eedc361aeeb6b51 GIT binary patch literal 11148 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 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict/__pycache__/metadata.cpython-312.pyc b/venv/lib/python3.12/site-packages/bidict/__pycache__/metadata.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..fd887cebdf546691fa4152d34fd2eec6aa641060 GIT binary patch literal 551 zcmZ8dPm9zr9Bn&)x^`_>6xM@?0byVc({$@zcJV)pf~YLwsh5yxvTd|&N|KJWr}0yG z@eAzN@ajcxLr;QVK-rrof8&fE3?#gl@ZRs`efE9Nf_3}BadywKtnX{`cMZ1SVglfU z#jM0)c49M!4cPFblQ?XY4A?jsGB+8qon+izntI)>6MiNtj^=`i)S#NCZ)wI+$qi-H z(6AdvVSFb%=z?cb=M6=Vm8`U^x@&Lfd;=e5B^5=O%5v)T!-|%?AMy27a|4omI!AF7 z9nIn>K1Ba{%wFf4$%>~&$ch%Iq;)N-3>9LosA|!fROqxdxvav@eR296#bMOl%#Eq_ zF~*zJq2iR8oHLo~P{@~4w|5BvMo7O)$bu^k=0H3`Xaimfuun)T>sE;@H$eA5z;&ub zy$-Sw79!=9=0L!%Q3WCA*2TKzU$1a3OO8vGLtk9s6OdAsQH|g6d5jmlT44AAuKy&5 z`eLkw;j?YMdK(=7tGRCbox7!EO~LQ007lrbbqL3gfo5_6@uu%xbr~eT0fSGkT>t<8 literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/bidict/_abc.py b/venv/lib/python3.12/site-packages/bidict/_abc.py new file mode 100644 index 0000000..d4a30aa --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_abc.py @@ -0,0 +1,79 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +# * Code review nav * +# (see comments in __init__.py) +# ============================================================================ +# ← Prev: __init__.py Current: _abc.py Next: _base.py → +# ============================================================================ + + +"""Provide the :class:`BidirectionalMapping` abstract base class.""" + +from __future__ import annotations + +import typing as t +from abc import abstractmethod + +from ._typing import KT +from ._typing import VT + + +class BidirectionalMapping(t.Mapping[KT, VT]): + """Abstract base class for bidirectional mapping types. + + Extends :class:`collections.abc.Mapping` primarily by adding the + (abstract) :attr:`inverse` property, + which implementers of :class:`BidirectionalMapping` + should override to return a reference to the inverse + :class:`BidirectionalMapping` instance. + """ + + __slots__ = () + + @property + @abstractmethod + def inverse(self) -> BidirectionalMapping[VT, KT]: + """The inverse of this bidirectional mapping instance. + + *See also* :attr:`bidict.BidictBase.inverse`, :attr:`bidict.BidictBase.inv` + + :raises NotImplementedError: Meant to be overridden in subclasses. + """ + # The @abstractmethod decorator prevents subclasses from being instantiated unless they + # override this method. But an overriding implementation may merely return super().inverse, + # in which case this implementation is used. Raise NotImplementedError to indicate that + # subclasses must actually provide their own implementation. + raise NotImplementedError + + def __inverted__(self) -> t.Iterator[tuple[VT, KT]]: + """Get an iterator over the items in :attr:`inverse`. + + This is functionally equivalent to iterating over the items in the + forward mapping and inverting each one on the fly, but this provides a + more efficient implementation: Assuming the already-inverted items + are stored in :attr:`inverse`, just return an iterator over them directly. + + Providing this default implementation enables external functions, + particularly :func:`~bidict.inverted`, to use this optimized + implementation when available, instead of having to invert on the fly. + + *See also* :func:`bidict.inverted` + """ + return iter(self.inverse.items()) + + +class MutableBidirectionalMapping(BidirectionalMapping[KT, VT], t.MutableMapping[KT, VT]): + """Abstract base class for mutable bidirectional mapping types.""" + + __slots__ = () + + +# * Code review nav * +# ============================================================================ +# ← Prev: __init__.py Current: _abc.py Next: _base.py → +# ============================================================================ diff --git a/venv/lib/python3.12/site-packages/bidict/_base.py b/venv/lib/python3.12/site-packages/bidict/_base.py new file mode 100644 index 0000000..848a376 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_base.py @@ -0,0 +1,556 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +# * Code review nav * +# (see comments in __init__.py) +# ============================================================================ +# ← Prev: _abc.py Current: _base.py Next: _frozen.py → +# ============================================================================ + + +"""Provide :class:`BidictBase`.""" + +from __future__ import annotations + +import typing as t +import weakref +from itertools import starmap +from operator import eq +from types import MappingProxyType + +from ._abc import BidirectionalMapping +from ._dup import DROP_NEW +from ._dup import DROP_OLD +from ._dup import ON_DUP_DEFAULT +from ._dup import RAISE +from ._dup import OnDup +from ._exc import DuplicationError +from ._exc import KeyAndValueDuplicationError +from ._exc import KeyDuplicationError +from ._exc import ValueDuplicationError +from ._iter import inverted +from ._iter import iteritems +from ._typing import KT +from ._typing import MISSING +from ._typing import OKT +from ._typing import OVT +from ._typing import VT +from ._typing import Maplike +from ._typing import MapOrItems + + +OldKV = t.Tuple[OKT[KT], OVT[VT]] +DedupResult = t.Optional[OldKV[KT, VT]] +Unwrites = t.List[t.Tuple[t.Any, ...]] +BT = t.TypeVar('BT', bound='BidictBase[t.Any, t.Any]') + + +class BidictKeysView(t.KeysView[KT], t.ValuesView[KT]): + """Since the keys of a bidict are the values of its inverse (and vice versa), + the :class:`~collections.abc.ValuesView` result of calling *bi.values()* + is also a :class:`~collections.abc.KeysView` of *bi.inverse*. + """ + + +class BidictBase(BidirectionalMapping[KT, VT]): + """Base class implementing :class:`BidirectionalMapping`.""" + + #: The default :class:`~bidict.OnDup` + #: that governs behavior when a provided item + #: duplicates the key or value of other item(s). + #: + #: *See also* + #: :ref:`basic-usage:Values Must Be Unique` (https://bidict.rtfd.io/basic-usage.html#values-must-be-unique), + #: :doc:`extending` (https://bidict.rtfd.io/extending.html) + on_dup = ON_DUP_DEFAULT + + _fwdm: t.MutableMapping[KT, VT] #: the backing forward mapping (*key* → *val*) + _invm: t.MutableMapping[VT, KT] #: the backing inverse mapping (*val* → *key*) + + # Use Any rather than KT/VT in the following to avoid "ClassVar cannot contain type variables" errors: + _fwdm_cls: t.ClassVar[type[t.MutableMapping[t.Any, t.Any]]] = dict #: class of the backing forward mapping + _invm_cls: t.ClassVar[type[t.MutableMapping[t.Any, t.Any]]] = dict #: class of the backing inverse mapping + + #: The class of the inverse bidict instance. + _inv_cls: t.ClassVar[type[BidictBase[t.Any, t.Any]]] + + def __init_subclass__(cls) -> None: + super().__init_subclass__() + cls._init_class() + + @classmethod + def _init_class(cls) -> None: + cls._ensure_inv_cls() + cls._set_reversed() + + __reversed__: t.ClassVar[t.Any] + + @classmethod + def _set_reversed(cls) -> None: + """Set __reversed__ for subclasses that do not set it explicitly + according to whether backing mappings are reversible. + """ + if cls is not BidictBase: + resolved = cls.__reversed__ + overridden = resolved is not BidictBase.__reversed__ + if overridden: # E.g. OrderedBidictBase, OrderedBidict + return + backing_reversible = all(issubclass(i, t.Reversible) for i in (cls._fwdm_cls, cls._invm_cls)) + cls.__reversed__ = _fwdm_reversed if backing_reversible else None + + @classmethod + def _ensure_inv_cls(cls) -> None: + """Ensure :attr:`_inv_cls` is set, computing it dynamically if necessary. + + All subclasses provided in :mod:`bidict` are their own inverse classes, + i.e., their backing forward and inverse mappings are both the same type, + but users may define subclasses where this is not the case. + This method ensures that the inverse class is computed correctly regardless. + + See: :ref:`extending:Dynamic Inverse Class Generation` + (https://bidict.rtfd.io/extending.html#dynamic-inverse-class-generation) + """ + # This _ensure_inv_cls() method is (indirectly) corecursive with _make_inv_cls() below + # in the case that we need to dynamically generate the inverse class: + # 1. _ensure_inv_cls() calls cls._make_inv_cls() + # 2. cls._make_inv_cls() calls type(..., (cls, ...), ...) to dynamically generate inv_cls + # 3. Our __init_subclass__ hook (see above) is automatically called on inv_cls + # 4. inv_cls.__init_subclass__() calls inv_cls._ensure_inv_cls() + # 5. inv_cls._ensure_inv_cls() resolves to this implementation + # (inv_cls deliberately does not override this), so we're back where we started. + # But since the _make_inv_cls() call will have set inv_cls.__dict__._inv_cls, + # just check if it's already set before calling _make_inv_cls() to prevent infinite recursion. + if getattr(cls, '__dict__', {}).get('_inv_cls'): # Don't assume cls.__dict__ (e.g. mypyc native class) + return + cls._inv_cls = cls._make_inv_cls() + + @classmethod + def _make_inv_cls(cls: type[BT]) -> type[BT]: + diff = cls._inv_cls_dict_diff() + cls_is_own_inv = all(getattr(cls, k, MISSING) == v for (k, v) in diff.items()) + if cls_is_own_inv: + return cls + # Suppress auto-calculation of _inv_cls's _inv_cls since we know it already. + # Works with the guard in BidictBase._ensure_inv_cls() to prevent infinite recursion. + diff['_inv_cls'] = cls + inv_cls = type(f'{cls.__name__}Inv', (cls, GeneratedBidictInverse), diff) + inv_cls.__module__ = cls.__module__ + return t.cast(t.Type[BT], inv_cls) + + @classmethod + def _inv_cls_dict_diff(cls) -> dict[str, t.Any]: + return { + '_fwdm_cls': cls._invm_cls, + '_invm_cls': cls._fwdm_cls, + } + + def __init__(self, arg: MapOrItems[KT, VT] = (), /, **kw: VT) -> None: + """Make a new bidirectional mapping. + The signature behaves like that of :class:`dict`. + ktems passed via positional arg are processed first, + followed by any items passed via keyword argument. + Any duplication encountered along the way + is handled as per :attr:`on_dup`. + """ + self._fwdm = self._fwdm_cls() + self._invm = self._invm_cls() + self._update(arg, kw, rollback=False) + + # If Python ever adds support for higher-kinded types, `inverse` could use them, e.g. + # def inverse(self: BT[KT, VT]) -> BT[VT, KT]: + # Ref: https://github.com/python/typing/issues/548#issuecomment-621571821 + @property + def inverse(self) -> BidictBase[VT, KT]: + """The inverse of this bidirectional mapping instance.""" + # When `bi.inverse` is called for the first time, this method + # computes the inverse instance, stores it for subsequent use, and then + # returns it. It also stores a reference on `bi.inverse` back to `bi`, + # but uses a weakref to avoid creating a reference cycle. Strong references + # to inverse instances are stored in ._inv, and weak references are stored + # in ._invweak. + + # First check if a strong reference is already stored. + inv: BidictBase[VT, KT] | None = getattr(self, '_inv', None) + if inv is not None: + return inv + # Next check if a weak reference is already stored. + invweak = getattr(self, '_invweak', None) + if invweak is not None: + inv = invweak() # Try to resolve a strong reference and return it. + if inv is not None: + return inv + # No luck. Compute the inverse reference and store it for subsequent use. + inv = self._make_inverse() + self._inv: BidictBase[VT, KT] | None = inv + self._invweak: weakref.ReferenceType[BidictBase[VT, KT]] | None = None + # Also store a weak reference back to `instance` on its inverse instance, so that + # the second `.inverse` access in `bi.inverse.inverse` hits the cached weakref. + inv._inv = None + inv._invweak = weakref.ref(self) + # In e.g. `bidict().inverse.inverse`, this design ensures that a strong reference + # back to the original instance is retained before its refcount drops to zero, + # avoiding an unintended potential deallocation. + return inv + + def _make_inverse(self) -> BidictBase[VT, KT]: + inv: BidictBase[VT, KT] = self._inv_cls() + inv._fwdm = self._invm + inv._invm = self._fwdm + return inv + + @property + def inv(self) -> BidictBase[VT, KT]: + """Alias for :attr:`inverse`.""" + return self.inverse + + def __repr__(self) -> str: + """See :func:`repr`.""" + clsname = self.__class__.__name__ + items = dict(self.items()) if self else '' + return f'{clsname}({items})' + + def values(self) -> BidictKeysView[VT]: + """A set-like object providing a view on the contained values. + + Since the values of a bidict are equivalent to the keys of its inverse, + this method returns a set-like object for this bidict's values + rather than just a collections.abc.ValuesView. + This object supports set operations like union and difference, + and constant- rather than linear-time containment checks, + and is no more expensive to provide than the less capable + collections.abc.ValuesView would be. + + See :meth:`keys` for more information. + """ + return t.cast(BidictKeysView[VT], self.inverse.keys()) + + def keys(self) -> t.KeysView[KT]: + """A set-like object providing a view on the contained keys. + + When *b._fwdm* is a :class:`dict`, *b.keys()* returns a + *dict_keys* object that behaves exactly the same as + *collections.abc.KeysView(b)*, except for + + - offering better performance + + - being reversible on Python 3.8+ + + - having a .mapping attribute in Python 3.10+ + that exposes a mappingproxy to *b._fwdm*. + """ + fwdm, fwdm_cls = self._fwdm, self._fwdm_cls + return fwdm.keys() if fwdm_cls is dict else BidictKeysView(self) + + def items(self) -> t.ItemsView[KT, VT]: + """A set-like object providing a view on the contained items. + + When *b._fwdm* is a :class:`dict`, *b.items()* returns a + *dict_items* object that behaves exactly the same as + *collections.abc.ItemsView(b)*, except for: + + - offering better performance + + - being reversible on Python 3.8+ + + - having a .mapping attribute in Python 3.10+ + that exposes a mappingproxy to *b._fwdm*. + """ + return self._fwdm.items() if self._fwdm_cls is dict else super().items() + + # The inherited collections.abc.Mapping.__contains__() method is implemented by doing a `try` + # `except KeyError` around `self[key]`. The following implementation is much faster, + # especially in the missing case. + def __contains__(self, key: t.Any) -> bool: + """True if the mapping contains the specified key, else False.""" + return key in self._fwdm + + # The inherited collections.abc.Mapping.__eq__() method is implemented in terms of an inefficient + # `dict(self.items()) == dict(other.items())` comparison, so override it with a + # more efficient implementation. + def __eq__(self, other: object) -> bool: + """*x.__eq__(other) ⟺ x == other* + + Equivalent to *dict(x.items()) == dict(other.items())* + but more efficient. + + Note that :meth:`bidict's __eq__() ` implementation + is inherited by subclasses, + in particular by the ordered bidict subclasses, + so even with ordered bidicts, + :ref:`== comparison is order-insensitive ` + (https://bidict.rtfd.io/other-bidict-types.html#eq-is-order-insensitive). + + *See also* :meth:`equals_order_sensitive` + """ + if isinstance(other, t.Mapping): + return self._fwdm.items() == other.items() + # Ref: https://docs.python.org/3/library/constants.html#NotImplemented + return NotImplemented + + def equals_order_sensitive(self, other: object) -> bool: + """Order-sensitive equality check. + + *See also* :ref:`eq-order-insensitive` + (https://bidict.rtfd.io/other-bidict-types.html#eq-is-order-insensitive) + """ + if not isinstance(other, t.Mapping) or len(self) != len(other): + return False + return all(starmap(eq, zip(self.items(), other.items()))) + + def _dedup(self, key: KT, val: VT, on_dup: OnDup) -> DedupResult[KT, VT]: + """Check *key* and *val* for any duplication in self. + + Handle any duplication as per the passed in *on_dup*. + + If (key, val) is already present, return None + since writing (key, val) would be a no-op. + + If duplication is found and the corresponding :class:`~bidict.OnDupAction` is + :attr:`~bidict.DROP_NEW`, return None. + + If duplication is found and the corresponding :class:`~bidict.OnDupAction` is + :attr:`~bidict.RAISE`, raise the appropriate exception. + + If duplication is found and the corresponding :class:`~bidict.OnDupAction` is + :attr:`~bidict.DROP_OLD`, or if no duplication is found, + return *(oldkey, oldval)*. + """ + fwdm, invm = self._fwdm, self._invm + oldval: OVT[VT] = fwdm.get(key, MISSING) + oldkey: OKT[KT] = invm.get(val, MISSING) + isdupkey, isdupval = oldval is not MISSING, oldkey is not MISSING + if isdupkey and isdupval: + if key == oldkey: + assert val == oldval + # (key, val) duplicates an existing item -> no-op. + return None + # key and val each duplicate a different existing item. + if on_dup.val is RAISE: + raise KeyAndValueDuplicationError(key, val) + if on_dup.val is DROP_NEW: + return None + assert on_dup.val is DROP_OLD + # Fall through to the return statement on the last line. + elif isdupkey: + if on_dup.key is RAISE: + raise KeyDuplicationError(key) + if on_dup.key is DROP_NEW: + return None + assert on_dup.key is DROP_OLD + # Fall through to the return statement on the last line. + elif isdupval: + if on_dup.val is RAISE: + raise ValueDuplicationError(val) + if on_dup.val is DROP_NEW: + return None + assert on_dup.val is DROP_OLD + # Fall through to the return statement on the last line. + # else neither isdupkey nor isdupval. + return oldkey, oldval + + def _write(self, newkey: KT, newval: VT, oldkey: OKT[KT], oldval: OVT[VT], unwrites: Unwrites | None) -> None: + """Insert (newkey, newval), extending *unwrites* with associated inverse operations if provided. + + *oldkey* and *oldval* are as returned by :meth:`_dedup`. + + If *unwrites* is not None, it is extended with the inverse operations necessary to undo the write. + This design allows :meth:`_update` to roll back a partially applied update that fails part-way through + when necessary. + + This design also allows subclasses that require additional operations to easily extend this implementation. + For example, :class:`bidict.OrderedBidictBase` calls this inherited implementation, and then extends *unwrites* + with additional operations needed to keep its internal linked list nodes consistent with its items' order + as changes are made. + """ + fwdm, invm = self._fwdm, self._invm + fwdm_set, invm_set = fwdm.__setitem__, invm.__setitem__ + fwdm_del, invm_del = fwdm.__delitem__, invm.__delitem__ + # Always perform the following writes regardless of duplication. + fwdm_set(newkey, newval) + invm_set(newval, newkey) + if oldval is MISSING and oldkey is MISSING: # no key or value duplication + # {0: 1, 2: 3} | {4: 5} => {0: 1, 2: 3, 4: 5} + if unwrites is not None: + unwrites.extend(( + (fwdm_del, newkey), + (invm_del, newval), + )) + elif oldval is not MISSING and oldkey is not MISSING: # key and value duplication across two different items + # {0: 1, 2: 3} | {0: 3} => {0: 3} + fwdm_del(oldkey) + invm_del(oldval) + if unwrites is not None: + unwrites.extend(( + (fwdm_set, newkey, oldval), + (invm_set, oldval, newkey), + (fwdm_set, oldkey, newval), + (invm_set, newval, oldkey), + )) + elif oldval is not MISSING: # just key duplication + # {0: 1, 2: 3} | {2: 4} => {0: 1, 2: 4} + invm_del(oldval) + if unwrites is not None: + unwrites.extend(( + (fwdm_set, newkey, oldval), + (invm_set, oldval, newkey), + (invm_del, newval), + )) + else: + assert oldkey is not MISSING # just value duplication + # {0: 1, 2: 3} | {4: 3} => {0: 1, 4: 3} + fwdm_del(oldkey) + if unwrites is not None: + unwrites.extend(( + (fwdm_set, oldkey, newval), + (invm_set, newval, oldkey), + (fwdm_del, newkey), + )) + + def _update( + self, + arg: MapOrItems[KT, VT], + kw: t.Mapping[str, VT] = MappingProxyType({}), + *, + rollback: bool | None = None, + on_dup: OnDup | None = None, + ) -> None: + """Update with the items from *arg* and *kw*, maybe failing and rolling back as per *on_dup* and *rollback*.""" + # Note: We must process input in a single pass, since arg may be a generator. + if not isinstance(arg, (t.Iterable, Maplike)): + raise TypeError(f"'{arg.__class__.__name__}' object is not iterable") + if not arg and not kw: + return + if on_dup is None: + on_dup = self.on_dup + if rollback is None: + rollback = RAISE in on_dup + + # Fast path when we're empty and updating only from another bidict (i.e. no dup vals in new items). + if not self and not kw and isinstance(arg, BidictBase): + self._init_from(arg) + return + + # Fast path when we're adding more items than we contain already and rollback is enabled: + # Update a copy of self with rollback disabled. Fail if that fails, otherwise become the copy. + if rollback and isinstance(arg, t.Sized) and len(arg) + len(kw) > len(self): + tmp = self.copy() + tmp._update(arg, kw, rollback=False, on_dup=on_dup) + self._init_from(tmp) + return + + # In all other cases, benchmarking has indicated that the update is best implemented as follows: + # For each new item, perform a dup check (raising if necessary), and apply the associated writes we need to + # perform on our backing _fwdm and _invm mappings. If rollback is enabled, also compute the associated unwrites + # as we go. If the update results in a DuplicationError and rollback is enabled, apply the accumulated unwrites + # before raising, to ensure that we fail clean. + write = self._write + unwrites: Unwrites | None = [] if rollback else None + for key, val in iteritems(arg, **kw): + try: + dedup_result = self._dedup(key, val, on_dup) + except DuplicationError: + if unwrites is not None: + for fn, *args in reversed(unwrites): + fn(*args) + raise + if dedup_result is not None: + write(key, val, *dedup_result, unwrites=unwrites) + + def __copy__(self: BT) -> BT: + """Used for the copy protocol. See the :mod:`copy` module.""" + return self.copy() + + def copy(self: BT) -> BT: + """Make a (shallow) copy of this bidict.""" + # Could just `return self.__class__(self)` here, but the below is faster. The former + # would copy this bidict's items into a new instance one at a time (checking for duplication + # for each item), whereas the below copies from the backing mappings all at once, and foregoes + # item-by-item duplication checking since the backing mappings have been checked already. + return self._from_other(self.__class__, self) + + @staticmethod + def _from_other(bt: type[BT], other: MapOrItems[KT, VT], inv: bool = False) -> BT: + """Fast, private constructor based on :meth:`_init_from`. + + If *inv* is true, return the inverse of the instance instead of the instance itself. + (Useful for pickling with dynamically-generated inverse classes -- see :meth:`__reduce__`.) + """ + inst = bt() + inst._init_from(other) + return t.cast(BT, inst.inverse) if inv else inst + + def _init_from(self, other: MapOrItems[KT, VT]) -> None: + """Fast init from *other*, bypassing item-by-item duplication checking.""" + self._fwdm.clear() + self._invm.clear() + self._fwdm.update(other) + # If other is a bidict, use its existing backing inverse mapping, otherwise + # other could be a generator that's now exhausted, so invert self._fwdm on the fly. + inv = other.inverse if isinstance(other, BidictBase) else inverted(self._fwdm) + self._invm.update(inv) + + # other's type is Mapping rather than Maplike since bidict() | SupportsKeysAndGetItem({}) + # raises a TypeError, just like dict() | SupportsKeysAndGetItem({}) does. + def __or__(self: BT, other: t.Mapping[KT, VT]) -> BT: + """Return self|other.""" + if not isinstance(other, t.Mapping): + return NotImplemented + new = self.copy() + new._update(other, rollback=False) + return new + + def __ror__(self: BT, other: t.Mapping[KT, VT]) -> BT: + """Return other|self.""" + if not isinstance(other, t.Mapping): + return NotImplemented + new = self.__class__(other) + new._update(self, rollback=False) + return new + + def __len__(self) -> int: + """The number of contained items.""" + return len(self._fwdm) + + def __iter__(self) -> t.Iterator[KT]: + """Iterator over the contained keys.""" + return iter(self._fwdm) + + def __getitem__(self, key: KT) -> VT: + """*x.__getitem__(key) ⟺ x[key]*""" + return self._fwdm[key] + + def __reduce__(self) -> tuple[t.Any, ...]: + """Return state information for pickling.""" + cls = self.__class__ + inst: t.Mapping[t.Any, t.Any] = self + # If this bidict's class is dynamically generated, pickle the inverse instead, whose (presumably not + # dynamically generated) class the caller is more likely to have a reference to somewhere in sys.modules + # that pickle can discover. + if should_invert := isinstance(self, GeneratedBidictInverse): + cls = self._inv_cls + inst = self.inverse + return self._from_other, (cls, dict(inst), should_invert) + + +# See BidictBase._set_reversed() above. +def _fwdm_reversed(self: BidictBase[KT, t.Any]) -> t.Iterator[KT]: + """Iterator over the contained keys in reverse order.""" + assert isinstance(self._fwdm, t.Reversible) + return reversed(self._fwdm) + + +BidictBase._init_class() + + +class GeneratedBidictInverse: + """Base class for dynamically-generated inverse bidict classes.""" + + +# * Code review nav * +# ============================================================================ +# ← Prev: _abc.py Current: _base.py Next: _frozen.py → +# ============================================================================ diff --git a/venv/lib/python3.12/site-packages/bidict/_bidict.py b/venv/lib/python3.12/site-packages/bidict/_bidict.py new file mode 100644 index 0000000..94dd3db --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_bidict.py @@ -0,0 +1,194 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +# * Code review nav * +# (see comments in __init__.py) +# ============================================================================ +# ← Prev: _frozen.py Current: _bidict.py Next: _orderedbase.py → +# ============================================================================ + + +"""Provide :class:`MutableBidict` and :class:`bidict`.""" + +from __future__ import annotations + +import typing as t + +from ._abc import MutableBidirectionalMapping +from ._base import BidictBase +from ._dup import ON_DUP_DROP_OLD +from ._dup import ON_DUP_RAISE +from ._dup import OnDup +from ._typing import DT +from ._typing import KT +from ._typing import MISSING +from ._typing import ODT +from ._typing import VT +from ._typing import MapOrItems + + +class MutableBidict(BidictBase[KT, VT], MutableBidirectionalMapping[KT, VT]): + """Base class for mutable bidirectional mappings.""" + + if t.TYPE_CHECKING: + + @property + def inverse(self) -> MutableBidict[VT, KT]: ... + + @property + def inv(self) -> MutableBidict[VT, KT]: ... + + def _pop(self, key: KT) -> VT: + val = self._fwdm.pop(key) + del self._invm[val] + return val + + def __delitem__(self, key: KT) -> None: + """*x.__delitem__(y) ⟺ del x[y]*""" + self._pop(key) + + def __setitem__(self, key: KT, val: VT) -> None: + """Set the value for *key* to *val*. + + If *key* is already associated with *val*, this is a no-op. + + If *key* is already associated with a different value, + the old value will be replaced with *val*, + as with dict's :meth:`__setitem__`. + + If *val* is already associated with a different key, + an exception is raised + to protect against accidental removal of the key + that's currently associated with *val*. + + Use :meth:`put` instead if you want to specify different behavior in + the case that the provided key or value duplicates an existing one. + Or use :meth:`forceput` to unconditionally associate *key* with *val*, + replacing any existing items as necessary to preserve uniqueness. + + :raises bidict.ValueDuplicationError: if *val* duplicates that of an + existing item. + + :raises bidict.KeyAndValueDuplicationError: if *key* duplicates the key of an + existing item and *val* duplicates the value of a different + existing item. + """ + self.put(key, val, on_dup=self.on_dup) + + def put(self, key: KT, val: VT, on_dup: OnDup = ON_DUP_RAISE) -> None: + """Associate *key* with *val*, honoring the :class:`OnDup` given in *on_dup*. + + For example, if *on_dup* is :attr:`~bidict.ON_DUP_RAISE`, + then *key* will be associated with *val* if and only if + *key* is not already associated with an existing value and + *val* is not already associated with an existing key, + otherwise an exception will be raised. + + If *key* is already associated with *val*, this is a no-op. + + :raises bidict.KeyDuplicationError: if attempting to insert an item + whose key only duplicates an existing item's, and *on_dup.key* is + :attr:`~bidict.RAISE`. + + :raises bidict.ValueDuplicationError: if attempting to insert an item + whose value only duplicates an existing item's, and *on_dup.val* is + :attr:`~bidict.RAISE`. + + :raises bidict.KeyAndValueDuplicationError: if attempting to insert an + item whose key duplicates one existing item's, and whose value + duplicates another existing item's, and *on_dup.val* is + :attr:`~bidict.RAISE`. + """ + self._update(((key, val),), on_dup=on_dup) + + def forceput(self, key: KT, val: VT) -> None: + """Associate *key* with *val* unconditionally. + + Replace any existing mappings containing key *key* or value *val* + as necessary to preserve uniqueness. + """ + self.put(key, val, on_dup=ON_DUP_DROP_OLD) + + def clear(self) -> None: + """Remove all items.""" + self._fwdm.clear() + self._invm.clear() + + @t.overload + def pop(self, key: KT, /) -> VT: ... + @t.overload + def pop(self, key: KT, default: DT = ..., /) -> VT | DT: ... + + def pop(self, key: KT, default: ODT[DT] = MISSING, /) -> VT | DT: + """*x.pop(k[, d]) → v* + + Remove specified key and return the corresponding value. + + :raises KeyError: if *key* is not found and no *default* is provided. + """ + try: + return self._pop(key) + except KeyError: + if default is MISSING: + raise + return default + + def popitem(self) -> tuple[KT, VT]: + """*x.popitem() → (k, v)* + + Remove and return some item as a (key, value) pair. + + :raises KeyError: if *x* is empty. + """ + key, val = self._fwdm.popitem() + del self._invm[val] + return key, val + + def update(self, arg: MapOrItems[KT, VT] = (), /, **kw: VT) -> None: + """Like calling :meth:`putall` with *self.on_dup* passed for *on_dup*.""" + self._update(arg, kw=kw) + + def forceupdate(self, arg: MapOrItems[KT, VT] = (), /, **kw: VT) -> None: + """Like a bulk :meth:`forceput`.""" + self._update(arg, kw=kw, on_dup=ON_DUP_DROP_OLD) + + def putall(self, items: MapOrItems[KT, VT], on_dup: OnDup = ON_DUP_RAISE) -> None: + """Like a bulk :meth:`put`. + + If one of the given items causes an exception to be raised, + none of the items is inserted. + """ + self._update(items, on_dup=on_dup) + + # other's type is Mapping rather than Maplike since bidict() |= SupportsKeysAndGetItem({}) + # raises a TypeError, just like dict() |= SupportsKeysAndGetItem({}) does. + def __ior__(self, other: t.Mapping[KT, VT]) -> MutableBidict[KT, VT]: + """Return self|=other.""" + self.update(other) + return self + + +class bidict(MutableBidict[KT, VT]): + """The main bidirectional mapping type. + + See :ref:`intro:Introduction` and :ref:`basic-usage:Basic Usage` + to get started (also available at https://bidict.rtfd.io). + """ + + if t.TYPE_CHECKING: + + @property + def inverse(self) -> bidict[VT, KT]: ... + + @property + def inv(self) -> bidict[VT, KT]: ... + + +# * Code review nav * +# ============================================================================ +# ← Prev: _frozen.py Current: _bidict.py Next: _orderedbase.py → +# ============================================================================ diff --git a/venv/lib/python3.12/site-packages/bidict/_dup.py b/venv/lib/python3.12/site-packages/bidict/_dup.py new file mode 100644 index 0000000..fd25b61 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_dup.py @@ -0,0 +1,61 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +"""Provide :class:`OnDup` and related functionality.""" + +from __future__ import annotations + +import typing as t +from enum import Enum + + +class OnDupAction(Enum): + """An action to take to prevent duplication from occurring.""" + + #: Raise a :class:`~bidict.DuplicationError`. + RAISE = 'RAISE' + #: Overwrite existing items with new items. + DROP_OLD = 'DROP_OLD' + #: Keep existing items and drop new items. + DROP_NEW = 'DROP_NEW' + + def __repr__(self) -> str: + return f'{self.__class__.__name__}.{self.name}' + + +RAISE: t.Final[OnDupAction] = OnDupAction.RAISE +DROP_OLD: t.Final[OnDupAction] = OnDupAction.DROP_OLD +DROP_NEW: t.Final[OnDupAction] = OnDupAction.DROP_NEW + + +class OnDup(t.NamedTuple): + r"""A combination of :class:`~bidict.OnDupAction`\s specifying how to handle various types of duplication. + + The :attr:`~OnDup.key` field specifies what action to take when a duplicate key is encountered. + + The :attr:`~OnDup.val` field specifies what action to take when a duplicate value is encountered. + + In the case of both key and value duplication across two different items, + only :attr:`~OnDup.val` is used. + + *See also* :ref:`basic-usage:Values Must Be Unique` + (https://bidict.rtfd.io/basic-usage.html#values-must-be-unique) + """ + + key: OnDupAction = DROP_OLD + val: OnDupAction = RAISE + + +#: Default :class:`OnDup` used for the +#: :meth:`~bidict.bidict.__init__`, +#: :meth:`~bidict.bidict.__setitem__`, and +#: :meth:`~bidict.bidict.update` methods. +ON_DUP_DEFAULT: t.Final[OnDup] = OnDup(key=DROP_OLD, val=RAISE) +#: An :class:`OnDup` whose members are all :obj:`RAISE`. +ON_DUP_RAISE: t.Final[OnDup] = OnDup(key=RAISE, val=RAISE) +#: An :class:`OnDup` whose members are all :obj:`DROP_OLD`. +ON_DUP_DROP_OLD: t.Final[OnDup] = OnDup(key=DROP_OLD, val=DROP_OLD) diff --git a/venv/lib/python3.12/site-packages/bidict/_exc.py b/venv/lib/python3.12/site-packages/bidict/_exc.py new file mode 100644 index 0000000..e2a96f3 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_exc.py @@ -0,0 +1,36 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +"""Provide all bidict exceptions.""" + +from __future__ import annotations + + +class BidictException(Exception): + """Base class for bidict exceptions.""" + + +class DuplicationError(BidictException): + """Base class for exceptions raised when uniqueness is violated + as per the :attr:`~bidict.RAISE` :class:`~bidict.OnDupAction`. + """ + + +class KeyDuplicationError(DuplicationError): + """Raised when a given key is not unique.""" + + +class ValueDuplicationError(DuplicationError): + """Raised when a given value is not unique.""" + + +class KeyAndValueDuplicationError(KeyDuplicationError, ValueDuplicationError): + """Raised when a given item's key and value are not unique. + + That is, its key duplicates that of another item, + and its value duplicates that of a different other item. + """ diff --git a/venv/lib/python3.12/site-packages/bidict/_frozen.py b/venv/lib/python3.12/site-packages/bidict/_frozen.py new file mode 100644 index 0000000..e2f789d --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_frozen.py @@ -0,0 +1,50 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +# * Code review nav * +# (see comments in __init__.py) +# ============================================================================ +# ← Prev: _base.py Current: _frozen.py Next: _bidict.py → +# ============================================================================ + +"""Provide :class:`frozenbidict`, an immutable, hashable bidirectional mapping type.""" + +from __future__ import annotations + +import typing as t + +from ._base import BidictBase +from ._typing import KT +from ._typing import VT + + +class frozenbidict(BidictBase[KT, VT]): + """Immutable, hashable bidict type.""" + + _hash: int + + if t.TYPE_CHECKING: + + @property + def inverse(self) -> frozenbidict[VT, KT]: ... + + @property + def inv(self) -> frozenbidict[VT, KT]: ... + + def __hash__(self) -> int: + """The hash of this bidict as determined by its items.""" + if getattr(self, '_hash', None) is None: + # The following is like hash(frozenset(self.items())) + # but more memory efficient. See also: https://bugs.python.org/issue46684 + self._hash = t.ItemsView(self)._hash() + return self._hash + + +# * Code review nav * +# ============================================================================ +# ← Prev: _base.py Current: _frozen.py Next: _bidict.py → +# ============================================================================ diff --git a/venv/lib/python3.12/site-packages/bidict/_iter.py b/venv/lib/python3.12/site-packages/bidict/_iter.py new file mode 100644 index 0000000..53ad25d --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_iter.py @@ -0,0 +1,51 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +"""Functions for iterating over items in a mapping.""" + +from __future__ import annotations + +import typing as t +from operator import itemgetter + +from ._typing import KT +from ._typing import VT +from ._typing import ItemsIter +from ._typing import Maplike +from ._typing import MapOrItems + + +def iteritems(arg: MapOrItems[KT, VT] = (), /, **kw: VT) -> ItemsIter[KT, VT]: + """Yield the items from *arg* and *kw* in the order given.""" + if isinstance(arg, t.Mapping): + yield from arg.items() + elif isinstance(arg, Maplike): + yield from ((k, arg[k]) for k in arg.keys()) + else: + yield from arg + yield from t.cast(ItemsIter[KT, VT], kw.items()) + + +swap: t.Final = itemgetter(1, 0) + + +def inverted(arg: MapOrItems[KT, VT]) -> ItemsIter[VT, KT]: + """Yield the inverse items of the provided object. + + If *arg* has a :func:`callable` ``__inverted__`` attribute, + return the result of calling it. + + Otherwise, return an iterator over the items in `arg`, + inverting each item on the fly. + + *See also* :attr:`bidict.BidirectionalMapping.__inverted__` + """ + invattr = getattr(arg, '__inverted__', None) + if callable(invattr): + inv: ItemsIter[VT, KT] = invattr() + return inv + return map(swap, iteritems(arg)) diff --git a/venv/lib/python3.12/site-packages/bidict/_orderedbase.py b/venv/lib/python3.12/site-packages/bidict/_orderedbase.py new file mode 100644 index 0000000..92f2633 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_orderedbase.py @@ -0,0 +1,238 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +# * Code review nav * +# (see comments in __init__.py) +# ============================================================================ +# ← Prev: _bidict.py Current: _orderedbase.py Next: _orderedbidict.py → +# ============================================================================ + + +"""Provide :class:`OrderedBidictBase`.""" + +from __future__ import annotations + +import typing as t +from weakref import ref as weakref + +from ._base import BidictBase +from ._base import Unwrites +from ._bidict import bidict +from ._iter import iteritems +from ._typing import KT +from ._typing import MISSING +from ._typing import OKT +from ._typing import OVT +from ._typing import VT +from ._typing import MapOrItems + + +AT = t.TypeVar('AT') # attr type + + +class WeakAttr(t.Generic[AT]): + """Descriptor to automatically manage (de)referencing the given slot as a weakref. + + See https://docs.python.org/3/howto/descriptor.html#managed-attributes + for an intro to using descriptors like this for managed attributes. + """ + + def __init__(self, *, slot: str) -> None: + self.slot = slot + + def __set__(self, instance: t.Any, value: AT) -> None: + setattr(instance, self.slot, weakref(value)) + + def __get__(self, instance: t.Any, __owner: t.Any = None) -> AT: + return t.cast(AT, getattr(instance, self.slot)()) + + +class Node: + """A node in a circular doubly-linked list + used to encode the order of items in an ordered bidict. + + A weak reference to the previous node is stored + to avoid creating strong reference cycles. + Referencing/dereferencing the weakref is handled automatically by :class:`WeakAttr`. + """ + + prv: WeakAttr[Node] = WeakAttr(slot='_prv_weak') + __slots__ = ('__weakref__', '_prv_weak', 'nxt') + + nxt: Node | WeakAttr[Node] # Allow subclasses to use a WeakAttr for nxt too (see SentinelNode) + + def __init__(self, prv: Node, nxt: Node) -> None: + self.prv = prv + self.nxt = nxt + + def unlink(self) -> None: + """Remove self from in between prv and nxt. + Self's references to prv and nxt are retained so it can be relinked (see below). + """ + self.prv.nxt = self.nxt + self.nxt.prv = self.prv + + def relink(self) -> None: + """Restore self between prv and nxt after unlinking (see above).""" + self.prv.nxt = self.nxt.prv = self + + +class SentinelNode(Node): + """Special node in a circular doubly-linked list + that links the first node with the last node. + When its next and previous references point back to itself + it represents an empty list. + """ + + nxt: WeakAttr[Node] = WeakAttr(slot='_nxt_weak') + __slots__ = ('_nxt_weak',) + + def __init__(self) -> None: + super().__init__(self, self) + + def iternodes(self, *, reverse: bool = False) -> t.Iterator[Node]: + """Iterator yielding nodes in the requested order.""" + attr = 'prv' if reverse else 'nxt' + node = getattr(self, attr) + while node is not self: + yield node + node = getattr(node, attr) + + def new_last_node(self) -> Node: + """Create and return a new terminal node.""" + old_last = self.prv + new_last = Node(old_last, self) + old_last.nxt = self.prv = new_last + return new_last + + +class OrderedBidictBase(BidictBase[KT, VT]): + """Base class implementing an ordered :class:`BidirectionalMapping`.""" + + _node_by_korv: bidict[t.Any, Node] + _bykey: bool + + def __init__(self, arg: MapOrItems[KT, VT] = (), /, **kw: VT) -> None: + """Make a new ordered bidirectional mapping. + The signature behaves like that of :class:`dict`. + Items passed in are added in the order they are passed, + respecting the :attr:`~bidict.BidictBase.on_dup` + class attribute in the process. + + The order in which items are inserted is remembered, + similar to :class:`collections.OrderedDict`. + """ + self._sntl = SentinelNode() + self._node_by_korv = bidict() + self._bykey = True + super().__init__(arg, **kw) + + if t.TYPE_CHECKING: + + @property + def inverse(self) -> OrderedBidictBase[VT, KT]: ... + + @property + def inv(self) -> OrderedBidictBase[VT, KT]: ... + + def _make_inverse(self) -> OrderedBidictBase[VT, KT]: + inv = t.cast(OrderedBidictBase[VT, KT], super()._make_inverse()) + inv._sntl = self._sntl + inv._node_by_korv = self._node_by_korv + inv._bykey = not self._bykey + return inv + + def _assoc_node(self, node: Node, key: KT, val: VT) -> None: + korv = key if self._bykey else val + self._node_by_korv.forceput(korv, node) + + def _dissoc_node(self, node: Node) -> None: + del self._node_by_korv.inverse[node] + node.unlink() + + def _init_from(self, other: MapOrItems[KT, VT]) -> None: + """See :meth:`BidictBase._init_from`.""" + super()._init_from(other) + bykey = self._bykey + korv_by_node = self._node_by_korv.inverse + korv_by_node.clear() + korv_by_node_set = korv_by_node.__setitem__ + self._sntl.nxt = self._sntl.prv = self._sntl + new_node = self._sntl.new_last_node + for k, v in iteritems(other): + korv_by_node_set(new_node(), k if bykey else v) + + def _write(self, newkey: KT, newval: VT, oldkey: OKT[KT], oldval: OVT[VT], unwrites: Unwrites | None) -> None: + """See :meth:`bidict.BidictBase._spec_write`.""" + super()._write(newkey, newval, oldkey, oldval, unwrites) + assoc, dissoc = self._assoc_node, self._dissoc_node + node_by_korv, bykey = self._node_by_korv, self._bykey + if oldval is MISSING and oldkey is MISSING: # no key or value duplication + # {0: 1, 2: 3} | {4: 5} => {0: 1, 2: 3, 4: 5} + newnode = self._sntl.new_last_node() + assoc(newnode, newkey, newval) + if unwrites is not None: + unwrites.append((dissoc, newnode)) + elif oldval is not MISSING and oldkey is not MISSING: # key and value duplication across two different items + # {0: 1, 2: 3} | {0: 3} => {0: 3} + # n1, n2 => n1 (collapse n1 and n2 into n1) + # oldkey: 2, oldval: 1, oldnode: n2, newkey: 0, newval: 3, newnode: n1 + if bykey: + oldnode = node_by_korv[oldkey] + newnode = node_by_korv[newkey] + else: + oldnode = node_by_korv[newval] + newnode = node_by_korv[oldval] + dissoc(oldnode) + assoc(newnode, newkey, newval) + if unwrites is not None: + unwrites.extend(( + (assoc, newnode, newkey, oldval), + (assoc, oldnode, oldkey, newval), + (oldnode.relink,), + )) + elif oldval is not MISSING: # just key duplication + # {0: 1, 2: 3} | {2: 4} => {0: 1, 2: 4} + # oldkey: MISSING, oldval: 3, newkey: 2, newval: 4 + node = node_by_korv[newkey if bykey else oldval] + assoc(node, newkey, newval) + if unwrites is not None: + unwrites.append((assoc, node, newkey, oldval)) + else: + assert oldkey is not MISSING # just value duplication + # {0: 1, 2: 3} | {4: 3} => {0: 1, 4: 3} + # oldkey: 2, oldval: MISSING, newkey: 4, newval: 3 + node = node_by_korv[oldkey if bykey else newval] + assoc(node, newkey, newval) + if unwrites is not None: + unwrites.append((assoc, node, oldkey, newval)) + + def __iter__(self) -> t.Iterator[KT]: + """Iterator over the contained keys in insertion order.""" + return self._iter(reverse=False) + + def __reversed__(self) -> t.Iterator[KT]: + """Iterator over the contained keys in reverse insertion order.""" + return self._iter(reverse=True) + + def _iter(self, *, reverse: bool = False) -> t.Iterator[KT]: + nodes = self._sntl.iternodes(reverse=reverse) + korv_by_node = self._node_by_korv.inverse + if self._bykey: + for node in nodes: + yield korv_by_node[node] + else: + key_by_val = self._invm + for node in nodes: + val = korv_by_node[node] + yield key_by_val[val] + + +# * Code review nav * +# ============================================================================ +# ← Prev: _bidict.py Current: _orderedbase.py Next: _orderedbidict.py → +# ============================================================================ diff --git a/venv/lib/python3.12/site-packages/bidict/_orderedbidict.py b/venv/lib/python3.12/site-packages/bidict/_orderedbidict.py new file mode 100644 index 0000000..2fb1757 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_orderedbidict.py @@ -0,0 +1,172 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +# * Code review nav * +# (see comments in __init__.py) +# ============================================================================ +# ← Prev: _orderedbase.py Current: _orderedbidict.py +# ============================================================================ + + +"""Provide :class:`OrderedBidict`.""" + +from __future__ import annotations + +import typing as t +from collections.abc import Set + +from ._base import BidictKeysView +from ._bidict import MutableBidict +from ._orderedbase import OrderedBidictBase +from ._typing import KT +from ._typing import VT + + +class OrderedBidict(OrderedBidictBase[KT, VT], MutableBidict[KT, VT]): + """Mutable bidict type that maintains items in insertion order.""" + + if t.TYPE_CHECKING: + + @property + def inverse(self) -> OrderedBidict[VT, KT]: ... + + @property + def inv(self) -> OrderedBidict[VT, KT]: ... + + def clear(self) -> None: + """Remove all items.""" + super().clear() + self._node_by_korv.clear() + self._sntl.nxt = self._sntl.prv = self._sntl + + def _pop(self, key: KT) -> VT: + val = super()._pop(key) + node = self._node_by_korv[key if self._bykey else val] + self._dissoc_node(node) + return val + + def popitem(self, last: bool = True) -> tuple[KT, VT]: + """*b.popitem() → (k, v)* + + If *last* is true, + remove and return the most recently added item as a (key, value) pair. + Otherwise, remove and return the least recently added item. + + :raises KeyError: if *b* is empty. + """ + if not self: + raise KeyError('OrderedBidict is empty') + node = getattr(self._sntl, 'prv' if last else 'nxt') + korv = self._node_by_korv.inverse[node] + if self._bykey: + return korv, self._pop(korv) + return self.inverse._pop(korv), korv + + def move_to_end(self, key: KT, last: bool = True) -> None: + """Move the item with the given key to the end if *last* is true, else to the beginning. + + :raises KeyError: if *key* is missing + """ + korv = key if self._bykey else self._fwdm[key] + node = self._node_by_korv[korv] + node.prv.nxt = node.nxt + node.nxt.prv = node.prv + sntl = self._sntl + if last: + lastnode = sntl.prv + node.prv = lastnode + node.nxt = sntl + sntl.prv = lastnode.nxt = node + else: + firstnode = sntl.nxt + node.prv = sntl + node.nxt = firstnode + sntl.nxt = firstnode.prv = node + + # Override the keys() and items() implementations inherited from BidictBase, + # which may delegate to the backing _fwdm dict, since this is a mutable ordered bidict, + # and therefore the ordering of items can get out of sync with the backing mappings + # after mutation. (Need not override values() because it delegates to .inverse.keys().) + def keys(self) -> t.KeysView[KT]: + """A set-like object providing a view on the contained keys.""" + return _OrderedBidictKeysView(self) + + def items(self) -> t.ItemsView[KT, VT]: + """A set-like object providing a view on the contained items.""" + return _OrderedBidictItemsView(self) + + +# The following MappingView implementations use the __iter__ implementations +# inherited from their superclass counterparts in collections.abc, so they +# continue to yield items in the correct order even after an OrderedBidict +# is mutated. They also provide a __reversed__ implementation, which is not +# provided by the collections.abc superclasses. +class _OrderedBidictKeysView(BidictKeysView[KT]): + _mapping: OrderedBidict[KT, t.Any] + + def __reversed__(self) -> t.Iterator[KT]: + return reversed(self._mapping) + + +class _OrderedBidictItemsView(t.ItemsView[KT, VT]): + _mapping: OrderedBidict[KT, VT] + + def __reversed__(self) -> t.Iterator[tuple[KT, VT]]: + ob = self._mapping + for key in reversed(ob): + yield key, ob[key] + + +# For better performance, make _OrderedBidictKeysView and _OrderedBidictItemsView delegate +# to backing dicts for the methods they inherit from collections.abc.Set. (Cannot delegate +# for __iter__ and __reversed__ since they are order-sensitive.) See also: https://bugs.python.org/issue46713 +_OView = t.Union[t.Type[_OrderedBidictKeysView[KT]], t.Type[_OrderedBidictItemsView[KT, t.Any]]] +_setmethodnames: t.Iterable[str] = ( + '__lt__ __le__ __gt__ __ge__ __eq__ __ne__ __sub__ __rsub__ ' + '__or__ __ror__ __xor__ __rxor__ __and__ __rand__ isdisjoint' +).split() + + +def _override_set_methods_to_use_backing_dict(cls: _OView[KT], viewname: str) -> None: + def make_proxy_method(methodname: str) -> t.Any: + def method(self: _OrderedBidictKeysView[KT] | _OrderedBidictItemsView[KT, t.Any], *args: t.Any) -> t.Any: + fwdm = self._mapping._fwdm + if not isinstance(fwdm, dict): # dict view speedup not available, fall back to Set's implementation. + return getattr(Set, methodname)(self, *args) + fwdm_dict_view = getattr(fwdm, viewname)() + fwdm_dict_view_method = getattr(fwdm_dict_view, methodname) + if ( + len(args) != 1 + or not isinstance((arg := args[0]), self.__class__) + or not isinstance(arg._mapping._fwdm, dict) + ): + return fwdm_dict_view_method(*args) + # self and arg are both _OrderedBidictKeysViews or _OrderedBidictItemsViews whose bidicts are backed by + # a dict. Use arg's backing dict's corresponding view instead of arg. Otherwise, e.g. `ob1.keys() + # < ob2.keys()` would give "TypeError: '<' not supported between instances of '_OrderedBidictKeysView' and + # '_OrderedBidictKeysView'", because both `dict_keys(ob1).__lt__(ob2.keys()) is NotImplemented` and + # `dict_keys(ob2).__gt__(ob1.keys()) is NotImplemented`. + arg_dict = arg._mapping._fwdm + arg_dict_view = getattr(arg_dict, viewname)() + return fwdm_dict_view_method(arg_dict_view) + + method.__name__ = methodname + method.__qualname__ = f'{cls.__qualname__}.{methodname}' + return method + + for name in _setmethodnames: + setattr(cls, name, make_proxy_method(name)) + + +_override_set_methods_to_use_backing_dict(_OrderedBidictKeysView, 'keys') +_override_set_methods_to_use_backing_dict(_OrderedBidictItemsView, 'items') + + +# * Code review nav * +# ============================================================================ +# ← Prev: _orderedbase.py Current: _orderedbidict.py +# ============================================================================ diff --git a/venv/lib/python3.12/site-packages/bidict/_typing.py b/venv/lib/python3.12/site-packages/bidict/_typing.py new file mode 100644 index 0000000..ce95053 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/_typing.py @@ -0,0 +1,49 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + + +"""Provide typing-related objects.""" + +from __future__ import annotations + +import typing as t +from enum import Enum + + +KT = t.TypeVar('KT') +VT = t.TypeVar('VT') +VT_co = t.TypeVar('VT_co', covariant=True) + + +Items = t.Iterable[t.Tuple[KT, VT]] + + +@t.runtime_checkable +class Maplike(t.Protocol[KT, VT_co]): + """Like typeshed's SupportsKeysAndGetItem, but usable at runtime.""" + + def keys(self) -> t.Iterable[KT]: ... + + def __getitem__(self, __key: KT) -> VT_co: ... + + +MapOrItems = t.Union[Maplike[KT, VT], Items[KT, VT]] +MappOrItems = t.Union[t.Mapping[KT, VT], Items[KT, VT]] +ItemsIter = t.Iterator[t.Tuple[KT, VT]] + + +class MissingT(Enum): + """Sentinel used to represent none/missing when None itself can't be used.""" + + MISSING = 'MISSING' + + +MISSING: t.Final[t.Literal[MissingT.MISSING]] = MissingT.MISSING +OKT = t.Union[KT, MissingT] #: optional key type +OVT = t.Union[VT, MissingT] #: optional value type + +DT = t.TypeVar('DT') #: for default arguments +ODT = t.Union[DT, MissingT] #: optional default arg type diff --git a/venv/lib/python3.12/site-packages/bidict/metadata.py b/venv/lib/python3.12/site-packages/bidict/metadata.py new file mode 100644 index 0000000..30ad836 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/metadata.py @@ -0,0 +1,14 @@ +# Copyright 2009-2024 Joshua Bronson. All rights reserved. +# +# This Source Code Form is subject to the terms of the Mozilla Public +# License, v. 2.0. If a copy of the MPL was not distributed with this +# file, You can obtain one at http://mozilla.org/MPL/2.0/. + +"""Define bidict package metadata.""" + +__version__ = '0.23.1' +__author__ = {'name': 'Joshua Bronson', 'email': 'jabronson@gmail.com'} +__copyright__ = '© 2009-2024 Joshua Bronson' +__description__ = 'The bidirectional mapping library for Python.' +__license__ = 'MPL 2.0' +__url__ = 'https://bidict.readthedocs.io' diff --git a/venv/lib/python3.12/site-packages/bidict/py.typed b/venv/lib/python3.12/site-packages/bidict/py.typed new file mode 100644 index 0000000..342ea76 --- /dev/null +++ b/venv/lib/python3.12/site-packages/bidict/py.typed @@ -0,0 +1 @@ +PEP-561 marker. diff --git a/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/LICENSE.txt b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/LICENSE.txt new file mode 100644 index 0000000..79c9825 --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/LICENSE.txt @@ -0,0 +1,20 @@ +Copyright 2010 Jason Kirtland + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. diff --git a/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/METADATA b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/METADATA new file mode 100644 index 0000000..efa45f5 --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/METADATA @@ -0,0 +1,60 @@ +Metadata-Version: 2.1 +Name: blinker +Version: 1.8.2 +Summary: Fast, simple object-to-object and broadcast signaling +Author: Jason Kirtland +Maintainer-email: Pallets Ecosystem +Requires-Python: >=3.8 +Description-Content-Type: text/markdown +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: MIT License +Classifier: Programming Language :: Python +Classifier: Typing :: Typed +Project-URL: Chat, https://discord.gg/pallets +Project-URL: Documentation, https://blinker.readthedocs.io +Project-URL: Source, https://github.com/pallets-eco/blinker/ + +# Blinker + +Blinker provides a fast dispatching system that allows any number of +interested parties to subscribe to events, or "signals". + + +## Pallets Community Ecosystem + +> [!IMPORTANT]\ +> This project is part of the Pallets Community Ecosystem. Pallets is the open +> source organization that maintains Flask; Pallets-Eco enables community +> maintenance of related projects. If you are interested in helping maintain +> this project, please reach out on [the Pallets Discord server][discord]. +> +> [discord]: https://discord.gg/pallets + + +## Example + +Signal receivers can subscribe to specific senders or receive signals +sent by any sender. + +```pycon +>>> from blinker import signal +>>> started = signal('round-started') +>>> def each(round): +... print(f"Round {round}") +... +>>> started.connect(each) + +>>> def round_two(round): +... print("This is round two.") +... +>>> started.connect(round_two, sender=2) + +>>> for round in range(1, 4): +... started.send(round) +... +Round 1! +Round 2! +This is round two. +Round 3! +``` + diff --git a/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/RECORD b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/RECORD new file mode 100644 index 0000000..26b6616 --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/RECORD @@ -0,0 +1,13 @@ +blinker-1.8.2.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +blinker-1.8.2.dist-info/LICENSE.txt,sha256=nrc6HzhZekqhcCXSrhvjg5Ykx5XphdTw6Xac4p-spGc,1054 +blinker-1.8.2.dist-info/METADATA,sha256=3tEx40hm9IEofyFqDPJsDPE9MAIEhtifapoSp7FqzuA,1633 +blinker-1.8.2.dist-info/RECORD,, +blinker-1.8.2.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +blinker-1.8.2.dist-info/WHEEL,sha256=EZbGkh7Ie4PoZfRQ8I0ZuP9VklN_TvcZ6DSE5Uar4z4,81 +blinker/__init__.py,sha256=ymyJY_PoTgBzaPgdr4dq-RRsGh7D-sYQIGMNp8Rx4qc,1577 +blinker/__pycache__/__init__.cpython-312.pyc,, +blinker/__pycache__/_utilities.cpython-312.pyc,, +blinker/__pycache__/base.cpython-312.pyc,, +blinker/_utilities.py,sha256=0J7eeXXTUx0Ivf8asfpx0ycVkp0Eqfqnj117x2mYX9E,1675 +blinker/base.py,sha256=nIZJEtXQ8LLZZJrwVp2wQcdfCzDixvAHR9VpSWiyVcQ,22574 +blinker/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/WHEEL b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/WHEEL new file mode 100644 index 0000000..3b5e64b --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker-1.8.2.dist-info/WHEEL @@ -0,0 +1,4 @@ +Wheel-Version: 1.0 +Generator: flit 3.9.0 +Root-Is-Purelib: true +Tag: py3-none-any diff --git a/venv/lib/python3.12/site-packages/blinker/__init__.py b/venv/lib/python3.12/site-packages/blinker/__init__.py new file mode 100644 index 0000000..c93527e --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker/__init__.py @@ -0,0 +1,60 @@ +from __future__ import annotations + +import typing as t + +from .base import ANY +from .base import default_namespace +from .base import NamedSignal +from .base import Namespace +from .base import Signal +from .base import signal + +__all__ = [ + "ANY", + "default_namespace", + "NamedSignal", + "Namespace", + "Signal", + "signal", +] + + +def __getattr__(name: str) -> t.Any: + import warnings + + if name == "__version__": + import importlib.metadata + + warnings.warn( + "The '__version__' attribute is deprecated and will be removed in" + " Blinker 1.9.0. Use feature detection or" + " 'importlib.metadata.version(\"blinker\")' instead.", + DeprecationWarning, + stacklevel=2, + ) + return importlib.metadata.version("blinker") + + if name == "receiver_connected": + from .base import _receiver_connected + + warnings.warn( + "The global 'receiver_connected' signal is deprecated and will be" + " removed in Blinker 1.9. Use 'Signal.receiver_connected' and" + " 'Signal.receiver_disconnected' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _receiver_connected + + if name == "WeakNamespace": + from .base import _WeakNamespace + + warnings.warn( + "'WeakNamespace' is deprecated and will be removed in Blinker 1.9." + " Use 'Namespace' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _WeakNamespace + + raise AttributeError(name) diff --git a/venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/blinker/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2481d054ddda67a719a601ae076e766ab91e56c5 GIT binary patch literal 1797 zcmb7E&2Jk;6rZuzyX&<#PLogqw9Y1$>a5h-v{b4<2$ZT^a|x(oFRQU<;%vO$wPweT z9L1tS9N@$exFQaqa^%0@;--h9tt?e)Iph|RoH+4j{gE^uNPV(r-@G^P_j@z%&HQPa z1_CL4`ccDH5qc>n6G@E}eAEWz2SgFYK5AhHW2vY7l#`}us`yGP<7B{=rWw#xM@@7U zbj{HcT?1Wr^hDP|&pO#e&w_3^21X4;ji0fTqj{S9Msf1Jlx-eJdK9zGQ!FPqSP15m&8;}-@+N928z&cFmhSvy)57VriPJHUrtVW{+D$f8Uhs`6d z$w8MxRu1xL>XL9Ga%CDJd~_46a3Yu@ANBDboJMmM0`4Ui+)wS{ZMpW0(6o>=iBRSD z%wxckg3(@TThgA9?c5myOsV>KoY4jXUM=CZs7|xK+S2-Iz`B^*xRg7cAmye=c|g+p z%B4u=rAW#K67!Rs_s}HMudzL|&Sg8rIoItn9ziW#clW2yx0qEvWhq-k2=3K7f>~Z< zQP$?HP6VSC38=N>`My*w9`zTIEsHXD9eBfeEW?=M@UPJHtnC;KgrI=XTZuspSMe(FWj zyiaxpO%8UeJi*x%0J(73q!V9*i3T zs`_xWJk}@mjJ0t=W2HtS#;-s{xNOFFW^K|`pK%^?I}=rylP10ad zb=)*n*YyHVxNfE0lb4_YT?kpZE?)w!tMHHhfZ-8(uFSvCa^Lp%wQJAy^sj2%TEf+&kFXFg8i%gv~YKz-vx+4p|r1+ zhWf2j822uQC=K)#N&3~kRvhZ9(*SI)zRDLRV>V&T0An7_76g=4f~I80-VhiK&`n)@5QHAJN$x;{kj4bdX} S{!z4C>XCN5a04$TQ2zldkl?NW literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/blinker/__pycache__/_utilities.cpython-312.pyc b/venv/lib/python3.12/site-packages/blinker/__pycache__/_utilities.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..58c5629defb29ee192c7b1074101bf8ff9543660 GIT binary patch literal 2719 zcmb6bO>YxNbjG{(u0LXj1PGKQECiJpr8a>>B|uOF5+Kn?Z9*$KjW+Auak9yJ?aqz^ zw%jUJsc?iS;ZP+94y{zFLiBg^(o3QsHCjNbRC?$Q6cDJVzL~WXheD-}g% z%5}E+F*DE=Kq=Vp#$`Zm zz{3d2VGHF#SKxs;$woQZ3X!lSodUk4Hc$au^7TY6VnwYm7@~kd5!h8QNP#`tK-X|C zHj2^-KQdY^=1WfP=d+p#1~J2BnkPs@nroYcYHZqYwaLj+eukKAFg-b$(LN?+VlZN9 zrr|iAMhUA>7X(R6gXI}TqS->1Nis1(JAL}J7W~uT;XCu$1>*}!}C5d=(uH@Y}{jXsHtya!dHS9cxE#s!hhV0@WUHl0`eVRLUmk6GlI1p z%psb3GpCOCg6Jq>n|c?dI=U4_sE+P8Q{szIJ@mHQJU;c%D7uG7(h`Mh$Pas!GNHbr z>n^#f>uK4SOvm$O7o6xz;B-H#>n4Azu6sPc!NK!?U&&6FiX>a4(}p=qX!bnuOoL7t zUiK=ExZ0tMUHz?%f<)W~<$YRuYGvB)b=;7D~(JTJm5+ zTJPQ8kZ#8p;)~~3)xGPfu10JFRG@7E;Z76*=>jAOht7q>sv;T(CcFa(nDEAY z7!6FJyFdo);SIs#7q={+q)fM25D*5qWC8$Kkm|l&U8t_8d;Y_SUJ!ko5e3|C2IYC! zZbVYorwD@-f-HbcsqNZyMmzakek&Om)VXshdMDbbuc-TkNoiR)*O#D_{76vJR0Y{4 zgZ2SV`vLg!NXaGXkT?i(6R+)Hm9j&|S>~);9nvzH%tSiQBgB(g*Zr8T7fV*f;dnyV zKd%^0lLP5*l}ud^Y9giUZ9NjGJTGYv2Ru%c`^oQUmW4?i2kHjX9Y7T>`9Nfbuw4Ki z0WS^U)i>x_NC~S?yHMun{DqZ{BWrT@g&YZYZ*=1D-i-)=mjHT&L&V)}*%AgFB3pg| zWC^j&Oq$v32f%2qt&TvCFn&`k$S@dMudi0`*e1t)|JrKF6`+SOULIoA5#vu3i}C1+ zRS2~P5`}&Q@@+P>^uPqbwaE*FX@&-^Kkq=_wusB@f(?zoP@+Jm#3c3{9O2{<*CNnp zSxL(it>VE1Fg%dqEjR{^Nt-2AE@!)3Az>LoOsl>E=3!-OSa1(yq)l>_Ka7G#w^ioi)Mgvgfl+^Fpr+ANKO5w^sFj9%hCg- z_jv?$b}bGp4c!@9OYQ%$>-%#*UH;+n+JWJf)bNTr{6yKYIB-|GJGxkVpd5S(!rhG+ z+({%G=FRu#M}l%~k1ub+5}zZV0rEexAkiLyI&MV=BBOvJvFb3Bw& zhmi9Bhl1n&@Krv5^U&0{_e9|u_^hDAAan|T9(T|@dZZ-VJo6~EcX?p>+FELGMIC$+ zPd2>8i)-<|6}hj~5X65(g2^wcy%sYw7Y%Qkr%GU6L>NMOQq!XVY6r~BIWUS#jE{p2 z<6{#OLmKZG6IxyDfhK4%oR{w8ZJ|(sF9>K06da5Elv#2d$QJ&Elri$AFL8iP;R!#& zs%6`q@-g$3tMJXl-^qOD8AEK_usOK^2|6T5wKYQcSSC<;**CX@zWn>@jeTD#RoJ!&D7l&lr HFLeI{P>Niv literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc b/venv/lib/python3.12/site-packages/blinker/__pycache__/base.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..24bce45b39908572ccdee2af5a0886c3892df9a0 GIT binary patch literal 25411 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 JE;cYQ{69{kc=-ST literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/blinker/_utilities.py b/venv/lib/python3.12/site-packages/blinker/_utilities.py new file mode 100644 index 0000000..000c902 --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker/_utilities.py @@ -0,0 +1,64 @@ +from __future__ import annotations + +import collections.abc as c +import inspect +import typing as t +from weakref import ref +from weakref import WeakMethod + +T = t.TypeVar("T") + + +class Symbol: + """A constant symbol, nicer than ``object()``. Repeated calls return the + same instance. + + >>> Symbol('foo') is Symbol('foo') + True + >>> Symbol('foo') + foo + """ + + symbols: t.ClassVar[dict[str, Symbol]] = {} + + def __new__(cls, name: str) -> Symbol: + if name in cls.symbols: + return cls.symbols[name] + + obj = super().__new__(cls) + cls.symbols[name] = obj + return obj + + def __init__(self, name: str) -> None: + self.name = name + + def __repr__(self) -> str: + return self.name + + def __getnewargs__(self) -> tuple[t.Any, ...]: + return (self.name,) + + +def make_id(obj: object) -> c.Hashable: + """Get a stable identifier for a receiver or sender, to be used as a dict + key or in a set. + """ + if inspect.ismethod(obj): + # The id of a bound method is not stable, but the id of the unbound + # function and instance are. + return id(obj.__func__), id(obj.__self__) + + if isinstance(obj, (str, int)): + # Instances with the same value always compare equal and have the same + # hash, even if the id may change. + return obj + + # Assume other types are not hashable but will always be the same instance. + return id(obj) + + +def make_ref(obj: T, callback: c.Callable[[ref[T]], None] | None = None) -> ref[T]: + if inspect.ismethod(obj): + return WeakMethod(obj, callback) # type: ignore[arg-type, return-value] + + return ref(obj, callback) diff --git a/venv/lib/python3.12/site-packages/blinker/base.py b/venv/lib/python3.12/site-packages/blinker/base.py new file mode 100644 index 0000000..ec494b1 --- /dev/null +++ b/venv/lib/python3.12/site-packages/blinker/base.py @@ -0,0 +1,621 @@ +from __future__ import annotations + +import collections.abc as c +import typing as t +import warnings +import weakref +from collections import defaultdict +from contextlib import AbstractContextManager +from contextlib import contextmanager +from functools import cached_property +from inspect import iscoroutinefunction +from weakref import WeakValueDictionary + +from ._utilities import make_id +from ._utilities import make_ref +from ._utilities import Symbol + +if t.TYPE_CHECKING: + F = t.TypeVar("F", bound=c.Callable[..., t.Any]) + +ANY = Symbol("ANY") +"""Symbol for "any sender".""" + +ANY_ID = 0 + + +class Signal: + """A notification emitter. + + :param doc: The docstring for the signal. + """ + + ANY = ANY + """An alias for the :data:`~blinker.ANY` sender symbol.""" + + set_class: type[set[t.Any]] = set + """The set class to use for tracking connected receivers and senders. + Python's ``set`` is unordered. If receivers must be dispatched in the order + they were connected, an ordered set implementation can be used. + + .. versionadded:: 1.7 + """ + + @cached_property + def receiver_connected(self) -> Signal: + """Emitted at the end of each :meth:`connect` call. + + The signal sender is the signal instance, and the :meth:`connect` + arguments are passed through: ``receiver``, ``sender``, and ``weak``. + + .. versionadded:: 1.2 + """ + return Signal(doc="Emitted after a receiver connects.") + + @cached_property + def receiver_disconnected(self) -> Signal: + """Emitted at the end of each :meth:`disconnect` call. + + The sender is the signal instance, and the :meth:`disconnect` arguments + are passed through: ``receiver`` and ``sender``. + + This signal is emitted **only** when :meth:`disconnect` is called + explicitly. This signal cannot be emitted by an automatic disconnect + when a weakly referenced receiver or sender goes out of scope, as the + instance is no longer be available to be used as the sender for this + signal. + + An alternative approach is available by subscribing to + :attr:`receiver_connected` and setting up a custom weakref cleanup + callback on weak receivers and senders. + + .. versionadded:: 1.2 + """ + return Signal(doc="Emitted after a receiver disconnects.") + + def __init__(self, doc: str | None = None) -> None: + if doc: + self.__doc__ = doc + + self.receivers: dict[ + t.Any, weakref.ref[c.Callable[..., t.Any]] | c.Callable[..., t.Any] + ] = {} + """The map of connected receivers. Useful to quickly check if any + receivers are connected to the signal: ``if s.receivers:``. The + structure and data is not part of the public API, but checking its + boolean value is. + """ + + self.is_muted: bool = False + self._by_receiver: dict[t.Any, set[t.Any]] = defaultdict(self.set_class) + self._by_sender: dict[t.Any, set[t.Any]] = defaultdict(self.set_class) + self._weak_senders: dict[t.Any, weakref.ref[t.Any]] = {} + + def connect(self, receiver: F, sender: t.Any = ANY, weak: bool = True) -> F: + """Connect ``receiver`` to be called when the signal is sent by + ``sender``. + + :param receiver: The callable to call when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument + along with any extra keyword arguments. + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. A receiver may be connected + to multiple senders by calling :meth:`connect` multiple times. + :param weak: Track the receiver with a :mod:`weakref`. The receiver will + be automatically disconnected when it is garbage collected. When + connecting a receiver defined within a function, set to ``False``, + otherwise it will be disconnected when the function scope ends. + """ + receiver_id = make_id(receiver) + sender_id = ANY_ID if sender is ANY else make_id(sender) + + if weak: + self.receivers[receiver_id] = make_ref( + receiver, self._make_cleanup_receiver(receiver_id) + ) + else: + self.receivers[receiver_id] = receiver + + self._by_sender[sender_id].add(receiver_id) + self._by_receiver[receiver_id].add(sender_id) + + if sender is not ANY and sender_id not in self._weak_senders: + # store a cleanup for weakref-able senders + try: + self._weak_senders[sender_id] = make_ref( + sender, self._make_cleanup_sender(sender_id) + ) + except TypeError: + pass + + if "receiver_connected" in self.__dict__ and self.receiver_connected.receivers: + try: + self.receiver_connected.send( + self, receiver=receiver, sender=sender, weak=weak + ) + except TypeError: + # TODO no explanation or test for this + self.disconnect(receiver, sender) + raise + + if _receiver_connected.receivers and self is not _receiver_connected: + try: + _receiver_connected.send( + self, receiver_arg=receiver, sender_arg=sender, weak_arg=weak + ) + except TypeError: + self.disconnect(receiver, sender) + raise + + return receiver + + def connect_via(self, sender: t.Any, weak: bool = False) -> c.Callable[[F], F]: + """Connect the decorated function to be called when the signal is sent + by ``sender``. + + The decorated function will be called when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument along + with any extra keyword arguments. + + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. A receiver may be connected + to multiple senders by calling :meth:`connect` multiple times. + :param weak: Track the receiver with a :mod:`weakref`. The receiver will + be automatically disconnected when it is garbage collected. When + connecting a receiver defined within a function, set to ``False``, + otherwise it will be disconnected when the function scope ends.= + + .. versionadded:: 1.1 + """ + + def decorator(fn: F) -> F: + self.connect(fn, sender, weak) + return fn + + return decorator + + @contextmanager + def connected_to( + self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY + ) -> c.Generator[None, None, None]: + """A context manager that temporarily connects ``receiver`` to the + signal while a ``with`` block executes. When the block exits, the + receiver is disconnected. Useful for tests. + + :param receiver: The callable to call when :meth:`send` is called with + the given ``sender``, passing ``sender`` as a positional argument + along with any extra keyword arguments. + :param sender: Any object or :data:`ANY`. ``receiver`` will only be + called when :meth:`send` is called with this sender. If ``ANY``, the + receiver will be called for any sender. + + .. versionadded:: 1.1 + """ + self.connect(receiver, sender=sender, weak=False) + + try: + yield None + finally: + self.disconnect(receiver) + + @contextmanager + def muted(self) -> c.Generator[None, None, None]: + """A context manager that temporarily disables the signal. No receivers + will be called if the signal is sent, until the ``with`` block exits. + Useful for tests. + """ + self.is_muted = True + + try: + yield None + finally: + self.is_muted = False + + def temporarily_connected_to( + self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY + ) -> AbstractContextManager[None]: + """Deprecated alias for :meth:`connected_to`. + + .. deprecated:: 1.1 + Renamed to ``connected_to``. Will be removed in Blinker 1.9. + + .. versionadded:: 0.9 + """ + warnings.warn( + "'temporarily_connected_to' is renamed to 'connected_to'. The old name is" + " deprecated and will be removed in Blinker 1.9.", + DeprecationWarning, + stacklevel=2, + ) + return self.connected_to(receiver, sender) + + def send( + self, + sender: t.Any | None = None, + /, + *, + _async_wrapper: c.Callable[ + [c.Callable[..., c.Coroutine[t.Any, t.Any, t.Any]]], c.Callable[..., t.Any] + ] + | None = None, + **kwargs: t.Any, + ) -> list[tuple[c.Callable[..., t.Any], t.Any]]: + """Call all receivers that are connected to the given ``sender`` + or :data:`ANY`. Each receiver is called with ``sender`` as a positional + argument along with any extra keyword arguments. Return a list of + ``(receiver, return value)`` tuples. + + The order receivers are called is undefined, but can be influenced by + setting :attr:`set_class`. + + If a receiver raises an exception, that exception will propagate up. + This makes debugging straightforward, with an assumption that correctly + implemented receivers will not raise. + + :param sender: Call receivers connected to this sender, in addition to + those connected to :data:`ANY`. + :param _async_wrapper: Will be called on any receivers that are async + coroutines to turn them into sync callables. For example, could run + the receiver with an event loop. + :param kwargs: Extra keyword arguments to pass to each receiver. + + .. versionchanged:: 1.7 + Added the ``_async_wrapper`` argument. + """ + if self.is_muted: + return [] + + results = [] + + for receiver in self.receivers_for(sender): + if iscoroutinefunction(receiver): + if _async_wrapper is None: + raise RuntimeError("Cannot send to a coroutine function.") + + result = _async_wrapper(receiver)(sender, **kwargs) + else: + result = receiver(sender, **kwargs) + + results.append((receiver, result)) + + return results + + async def send_async( + self, + sender: t.Any | None = None, + /, + *, + _sync_wrapper: c.Callable[ + [c.Callable[..., t.Any]], c.Callable[..., c.Coroutine[t.Any, t.Any, t.Any]] + ] + | None = None, + **kwargs: t.Any, + ) -> list[tuple[c.Callable[..., t.Any], t.Any]]: + """Await all receivers that are connected to the given ``sender`` + or :data:`ANY`. Each receiver is called with ``sender`` as a positional + argument along with any extra keyword arguments. Return a list of + ``(receiver, return value)`` tuples. + + The order receivers are called is undefined, but can be influenced by + setting :attr:`set_class`. + + If a receiver raises an exception, that exception will propagate up. + This makes debugging straightforward, with an assumption that correctly + implemented receivers will not raise. + + :param sender: Call receivers connected to this sender, in addition to + those connected to :data:`ANY`. + :param _sync_wrapper: Will be called on any receivers that are sync + callables to turn them into async coroutines. For example, + could call the receiver in a thread. + :param kwargs: Extra keyword arguments to pass to each receiver. + + .. versionadded:: 1.7 + """ + if self.is_muted: + return [] + + results = [] + + for receiver in self.receivers_for(sender): + if not iscoroutinefunction(receiver): + if _sync_wrapper is None: + raise RuntimeError("Cannot send to a non-coroutine function.") + + result = await _sync_wrapper(receiver)(sender, **kwargs) + else: + result = await receiver(sender, **kwargs) + + results.append((receiver, result)) + + return results + + def has_receivers_for(self, sender: t.Any) -> bool: + """Check if there is at least one receiver that will be called with the + given ``sender``. A receiver connected to :data:`ANY` will always be + called, regardless of sender. Does not check if weakly referenced + receivers are still live. See :meth:`receivers_for` for a stronger + search. + + :param sender: Check for receivers connected to this sender, in addition + to those connected to :data:`ANY`. + """ + if not self.receivers: + return False + + if self._by_sender[ANY_ID]: + return True + + if sender is ANY: + return False + + return make_id(sender) in self._by_sender + + def receivers_for( + self, sender: t.Any + ) -> c.Generator[c.Callable[..., t.Any], None, None]: + """Yield each receiver to be called for ``sender``, in addition to those + to be called for :data:`ANY`. Weakly referenced receivers that are not + live will be disconnected and skipped. + + :param sender: Yield receivers connected to this sender, in addition + to those connected to :data:`ANY`. + """ + # TODO: test receivers_for(ANY) + if not self.receivers: + return + + sender_id = make_id(sender) + + if sender_id in self._by_sender: + ids = self._by_sender[ANY_ID] | self._by_sender[sender_id] + else: + ids = self._by_sender[ANY_ID].copy() + + for receiver_id in ids: + receiver = self.receivers.get(receiver_id) + + if receiver is None: + continue + + if isinstance(receiver, weakref.ref): + strong = receiver() + + if strong is None: + self._disconnect(receiver_id, ANY_ID) + continue + + yield strong + else: + yield receiver + + def disconnect(self, receiver: c.Callable[..., t.Any], sender: t.Any = ANY) -> None: + """Disconnect ``receiver`` from being called when the signal is sent by + ``sender``. + + :param receiver: A connected receiver callable. + :param sender: Disconnect from only this sender. By default, disconnect + from all senders. + """ + sender_id: c.Hashable + + if sender is ANY: + sender_id = ANY_ID + else: + sender_id = make_id(sender) + + receiver_id = make_id(receiver) + self._disconnect(receiver_id, sender_id) + + if ( + "receiver_disconnected" in self.__dict__ + and self.receiver_disconnected.receivers + ): + self.receiver_disconnected.send(self, receiver=receiver, sender=sender) + + def _disconnect(self, receiver_id: c.Hashable, sender_id: c.Hashable) -> None: + if sender_id == ANY_ID: + if self._by_receiver.pop(receiver_id, None) is not None: + for bucket in self._by_sender.values(): + bucket.discard(receiver_id) + + self.receivers.pop(receiver_id, None) + else: + self._by_sender[sender_id].discard(receiver_id) + self._by_receiver[receiver_id].discard(sender_id) + + def _make_cleanup_receiver( + self, receiver_id: c.Hashable + ) -> c.Callable[[weakref.ref[c.Callable[..., t.Any]]], None]: + """Create a callback function to disconnect a weakly referenced + receiver when it is garbage collected. + """ + + def cleanup(ref: weakref.ref[c.Callable[..., t.Any]]) -> None: + self._disconnect(receiver_id, ANY_ID) + + return cleanup + + def _make_cleanup_sender( + self, sender_id: c.Hashable + ) -> c.Callable[[weakref.ref[t.Any]], None]: + """Create a callback function to disconnect all receivers for a weakly + referenced sender when it is garbage collected. + """ + assert sender_id != ANY_ID + + def cleanup(ref: weakref.ref[t.Any]) -> None: + self._weak_senders.pop(sender_id, None) + + for receiver_id in self._by_sender.pop(sender_id, ()): + self._by_receiver[receiver_id].discard(sender_id) + + return cleanup + + def _cleanup_bookkeeping(self) -> None: + """Prune unused sender/receiver bookkeeping. Not threadsafe. + + Connecting & disconnecting leaves behind a small amount of bookkeeping + data. Typical workloads using Blinker, for example in most web apps, + Flask, CLI scripts, etc., are not adversely affected by this + bookkeeping. + + With a long-running process performing dynamic signal routing with high + volume, e.g. connecting to function closures, senders are all unique + object instances. Doing all of this over and over may cause memory usage + to grow due to extraneous bookkeeping. (An empty ``set`` for each stale + sender/receiver pair.) + + This method will prune that bookkeeping away, with the caveat that such + pruning is not threadsafe. The risk is that cleanup of a fully + disconnected receiver/sender pair occurs while another thread is + connecting that same pair. If you are in the highly dynamic, unique + receiver/sender situation that has lead you to this method, that failure + mode is perhaps not a big deal for you. + """ + for mapping in (self._by_sender, self._by_receiver): + for ident, bucket in list(mapping.items()): + if not bucket: + mapping.pop(ident, None) + + def _clear_state(self) -> None: + """Disconnect all receivers and senders. Useful for tests.""" + self._weak_senders.clear() + self.receivers.clear() + self._by_sender.clear() + self._by_receiver.clear() + + +_receiver_connected = Signal( + """\ +Sent by a :class:`Signal` after a receiver connects. + +:argument: the Signal that was connected to +:keyword receiver_arg: the connected receiver +:keyword sender_arg: the sender to connect to +:keyword weak_arg: true if the connection to receiver_arg is a weak reference + +.. deprecated:: 1.2 + Individual signals have their own :attr:`~Signal.receiver_connected` and + :attr:`~Signal.receiver_disconnected` signals with a slightly simplified + call signature. This global signal will be removed in Blinker 1.9. +""" +) + + +class NamedSignal(Signal): + """A named generic notification emitter. The name is not used by the signal + itself, but matches the key in the :class:`Namespace` that it belongs to. + + :param name: The name of the signal within the namespace. + :param doc: The docstring for the signal. + """ + + def __init__(self, name: str, doc: str | None = None) -> None: + super().__init__(doc) + + #: The name of this signal. + self.name: str = name + + def __repr__(self) -> str: + base = super().__repr__() + return f"{base[:-1]}; {self.name!r}>" # noqa: E702 + + +if t.TYPE_CHECKING: + + class PNamespaceSignal(t.Protocol): + def __call__(self, name: str, doc: str | None = None) -> NamedSignal: ... + + # Python < 3.9 + _NamespaceBase = dict[str, NamedSignal] # type: ignore[misc] +else: + _NamespaceBase = dict + + +class Namespace(_NamespaceBase): + """A dict mapping names to signals.""" + + def signal(self, name: str, doc: str | None = None) -> NamedSignal: + """Return the :class:`NamedSignal` for the given ``name``, creating it + if required. Repeated calls with the same name return the same signal. + + :param name: The name of the signal. + :param doc: The docstring of the signal. + """ + if name not in self: + self[name] = NamedSignal(name, doc) + + return self[name] + + +class _WeakNamespace(WeakValueDictionary): # type: ignore[type-arg] + """A weak mapping of names to signals. + + Automatically cleans up unused signals when the last reference goes out + of scope. This namespace implementation provides similar behavior to Blinker + <= 1.2. + + .. deprecated:: 1.3 + Will be removed in Blinker 1.9. + + .. versionadded:: 1.3 + """ + + def __init__(self) -> None: + warnings.warn( + "'WeakNamespace' is deprecated and will be removed in Blinker 1.9." + " Use 'Namespace' instead.", + DeprecationWarning, + stacklevel=2, + ) + super().__init__() + + def signal(self, name: str, doc: str | None = None) -> NamedSignal: + """Return the :class:`NamedSignal` for the given ``name``, creating it + if required. Repeated calls with the same name return the same signal. + + :param name: The name of the signal. + :param doc: The docstring of the signal. + """ + if name not in self: + self[name] = NamedSignal(name, doc) + + return self[name] # type: ignore[no-any-return] + + +default_namespace: Namespace = Namespace() +"""A default :class:`Namespace` for creating named signals. :func:`signal` +creates a :class:`NamedSignal` in this namespace. +""" + +signal: PNamespaceSignal = default_namespace.signal +"""Return a :class:`NamedSignal` in :data:`default_namespace` with the given +``name``, creating it if required. Repeated calls with the same name return the +same signal. +""" + + +def __getattr__(name: str) -> t.Any: + if name == "receiver_connected": + warnings.warn( + "The global 'receiver_connected' signal is deprecated and will be" + " removed in Blinker 1.9. Use 'Signal.receiver_connected' and" + " 'Signal.receiver_disconnected' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _receiver_connected + + if name == "WeakNamespace": + warnings.warn( + "'WeakNamespace' is deprecated and will be removed in Blinker 1.9." + " Use 'Namespace' instead.", + DeprecationWarning, + stacklevel=2, + ) + return _WeakNamespace + + raise AttributeError(name) diff --git a/venv/lib/python3.12/site-packages/blinker/py.typed b/venv/lib/python3.12/site-packages/blinker/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/LICENSE b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/LICENSE new file mode 100644 index 0000000..62b076c --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/LICENSE @@ -0,0 +1,20 @@ +This package contains a modified version of ca-bundle.crt: + +ca-bundle.crt -- Bundle of CA Root Certificates + +This is a bundle of X.509 certificates of public Certificate Authorities +(CA). These were automatically extracted from Mozilla's root certificates +file (certdata.txt). This file can be found in the mozilla source tree: +https://hg.mozilla.org/mozilla-central/file/tip/security/nss/lib/ckfw/builtins/certdata.txt +It contains the certificates in PEM format and therefore +can be directly used with curl / libcurl / php_curl, or with +an Apache+mod_ssl webserver for SSL client authentication. +Just configure this file as the SSLCACertificateFile.# + +***** BEGIN LICENSE BLOCK ***** +This Source Code Form is subject to the terms of the Mozilla Public License, +v. 2.0. If a copy of the MPL was not distributed with this file, You can obtain +one at http://mozilla.org/MPL/2.0/. + +***** END LICENSE BLOCK ***** +@(#) $RCSfile: certdata.txt,v $ $Revision: 1.80 $ $Date: 2011/11/03 15:11:58 $ diff --git a/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/METADATA b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/METADATA new file mode 100644 index 0000000..5b357f5 --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/METADATA @@ -0,0 +1,67 @@ +Metadata-Version: 2.1 +Name: certifi +Version: 2024.7.4 +Summary: Python package for providing Mozilla's CA Bundle. +Home-page: https://github.com/certifi/python-certifi +Author: Kenneth Reitz +Author-email: me@kennethreitz.com +License: MPL-2.0 +Project-URL: Source, https://github.com/certifi/python-certifi +Classifier: Development Status :: 5 - Production/Stable +Classifier: Intended Audience :: Developers +Classifier: License :: OSI Approved :: Mozilla Public License 2.0 (MPL 2.0) +Classifier: Natural Language :: English +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3 :: Only +Classifier: Programming Language :: Python :: 3.6 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Requires-Python: >=3.6 +License-File: LICENSE + +Certifi: Python SSL Certificates +================================ + +Certifi provides Mozilla's carefully curated collection of Root Certificates for +validating the trustworthiness of SSL certificates while verifying the identity +of TLS hosts. It has been extracted from the `Requests`_ project. + +Installation +------------ + +``certifi`` is available on PyPI. Simply install it with ``pip``:: + + $ pip install certifi + +Usage +----- + +To reference the installed certificate authority (CA) bundle, you can use the +built-in function:: + + >>> import certifi + + >>> certifi.where() + '/usr/local/lib/python3.7/site-packages/certifi/cacert.pem' + +Or from the command line:: + + $ python -m certifi + /usr/local/lib/python3.7/site-packages/certifi/cacert.pem + +Enjoy! + +.. _`Requests`: https://requests.readthedocs.io/en/master/ + +Addition/Removal of Certificates +-------------------------------- + +Certifi does not support any addition/removal or other modification of the +CA trust store content. This project is intended to provide a reliable and +highly portable root of trust to python deployments. Look to upstream projects +for methods to use alternate trust. diff --git a/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/RECORD b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/RECORD new file mode 100644 index 0000000..0082bf5 --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/RECORD @@ -0,0 +1,15 @@ +certifi-2024.7.4.dist-info/INSTALLER,sha256=zuuue4knoyJ-UwPPXg8fezS7VCrXJQrAP7zeNuwvFQg,4 +certifi-2024.7.4.dist-info/LICENSE,sha256=6TcW2mucDVpKHfYP5pWzcPBpVgPSH2-D8FPkLPwQyvc,989 +certifi-2024.7.4.dist-info/METADATA,sha256=L9_EuPoQQvHFzxu03_ctaEZxhEty7inz569jGWjlLGo,2221 +certifi-2024.7.4.dist-info/RECORD,, +certifi-2024.7.4.dist-info/REQUESTED,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 +certifi-2024.7.4.dist-info/WHEEL,sha256=y4mX-SOX4fYIkonsAGA5N0Oy-8_gI4FXw5HNI1xqvWg,91 +certifi-2024.7.4.dist-info/top_level.txt,sha256=KMu4vUCfsjLrkPbSNdgdekS-pVJzBAJFO__nI8NF6-U,8 +certifi/__init__.py,sha256=LHXz7E80YJYBzCBv6ZyidQ5-ciYSkSebpY2E5OM0l7o,94 +certifi/__main__.py,sha256=xBBoj905TUWBLRGANOcf7oi6e-3dMP4cEoG9OyMs11g,243 +certifi/__pycache__/__init__.cpython-312.pyc,, +certifi/__pycache__/__main__.cpython-312.pyc,, +certifi/__pycache__/core.cpython-312.pyc,, +certifi/cacert.pem,sha256=SIupYGAr8HzGP073rsEIaS_sQYIPwzKKjj894DgUmu4,291528 +certifi/core.py,sha256=qRDDFyXVJwTB_EmoGppaXU_R9qCZvhl-EzxPMuV3nTA,4426 +certifi/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0 diff --git a/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/REQUESTED b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/REQUESTED new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/WHEEL b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/WHEEL new file mode 100644 index 0000000..564c672 --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/WHEEL @@ -0,0 +1,5 @@ +Wheel-Version: 1.0 +Generator: setuptools (70.2.0) +Root-Is-Purelib: true +Tag: py3-none-any + diff --git a/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/top_level.txt b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/top_level.txt new file mode 100644 index 0000000..963eac5 --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi-2024.7.4.dist-info/top_level.txt @@ -0,0 +1 @@ +certifi diff --git a/venv/lib/python3.12/site-packages/certifi/__init__.py b/venv/lib/python3.12/site-packages/certifi/__init__.py new file mode 100644 index 0000000..d321f1b --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi/__init__.py @@ -0,0 +1,4 @@ +from .core import contents, where + +__all__ = ["contents", "where"] +__version__ = "2024.07.04" diff --git a/venv/lib/python3.12/site-packages/certifi/__main__.py b/venv/lib/python3.12/site-packages/certifi/__main__.py new file mode 100644 index 0000000..8945b5d --- /dev/null +++ b/venv/lib/python3.12/site-packages/certifi/__main__.py @@ -0,0 +1,12 @@ +import argparse + +from certifi import contents, where + +parser = argparse.ArgumentParser() +parser.add_argument("-c", "--contents", action="store_true") +args = parser.parse_args() + +if args.contents: + print(contents()) +else: + print(where()) diff --git a/venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc b/venv/lib/python3.12/site-packages/certifi/__pycache__/__init__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..52759fd6681830d2d459731bb11ea60ad05ae1a3 GIT binary patch literal 307 zcmYjMu}Z{15Z&D*-kETABG{-{r7#=gfgqxdwT)d0mt1yC7L#n)jR|L^e_-b~_$@Y; zvWR6d+gM1qz$~FXG(D}vjJETxl+8i3 zpHMA2*lTS(D?rm6R41+kWlS`pV=QXtW_(;repA7T3ha&L1A4>KmxD2WLp$%m`or+z PZ{3Yv*Ea71wQ9W|A(Bxd literal 0 HcmV?d00001 diff --git a/venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc b/venv/lib/python3.12/site-packages/certifi/__pycache__/__main__.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..77e43e8ae1c9eaf3a2d41f313c2579c24ce4cbdc GIT binary patch literal 622 zcmZuu&ubGw6n?Y6cQI`-2*FdZh(=5Y>rGlk=(z}9B$s8o`%E@we=sv?N%2qwQR&5- z{s~I_PrMjfNgXd058_Se&66`}wz)Vk^S=4M@4b05^SM?FK#kQ0_qt~){?wal*mH1p ztiU@+ARzY=|u)ohTM*k+%ZrMXXy!jH7g8WFmc9@R>qYT1WONI8tZWgdd$_YscQN0k zgLH?MBhf4JyK8sWDNhBqOJ$F`$mzT>8irYv=3%&2j->Nh8T^T@w;;GBRnh57{QZ@1px{_y+@)Q@4~#H~%;#>8zLxmORY gQ`3F5`C{{%<-fUkc~u%U%5*?^LCwOA`z)0s&!#`dK5 zUI<~+Di3{tCsI)@d8n#9^Z`U4`q)3A((XfyTNzEMgw#qEZ?23~iKm`3o^hNseb_zL zJ?Hq&y?5^Yo!>ck{u7T!3CMvr|1|$jA0a>BpFnzir}ef#$X#NR0x<W)dhtS{q7}5?tk=`EUaY;Ix8L4EuV?!TePH9|{z|ft6o{3y`btN(b{%-Q zw>|KuFaRT>X2SoMj*tj32TjcyFng`E*$2=1q2XDgX7VGYp!sJ>b?sxIy^mbxh7~m| z%I!IOY;igIVMn6T*#(WwZ=i+B^-2HO4z$YObEM49{5iL zvP^QqR8DkziW6rh-kP2*PR#zpRf|RIy3LEl`=o{QpI^)`I29{jp$ock#iIGM7Bh4@ zue1D;_1<{?npM4)FWc|s7nk{hQ+;Xd_;{Y#+!|ek;rhJA@;*d)!=V=7S|!hVNi4J3 zGyE(~hDJU=bT3jL8E=f7s*RlbYO+4^*ZSUfZeDmiwExq8HHJ^rhELRoU#SnhdUNt| ztpE1KTNgjQ_)YBCkJ`|tI^?}+TLdvm*jj%F1rhY)L!f8{$n47SPOM6u=)wZNn9>(= zFdMK`rYKZNLJ@OU(V1b}_XStAs)l3Q)%l#{0Z5UQZiHI8Sp=x~PH5C1PiYngjzMED zfC3t8skO^>ZMdNwscA>8B|4*w|9ho(^tqRODc+}{DKM>S8q1`pYvL3QyhLxv7)oV-`A?>+T@ zGpti1_QTrS8D@$eQxI*C8A6A^+!rXuWamD!*oSHwS_}Dvk$AIhLbnkd8 z{y`*H#4m(^2QQNk?~SUFGjA6>5)@t4xZ4XsPGi@MNqD6>Re|CcNWDfC~YVaPaPUN3<|;Y` z4&6DtasJ!*=$ENS$-%oPKR$Wq)GrcAj5Xq;596cH8P?l>_x@4(QaKskJwa~5i0%X_ z`Nx9pj_d{pM}R#EX#GJ~@!fTmU6N@9OO*e{8OY};ufF6IS9BO1f#uz>Y167+vGA(J zy9=tYj72&pxWXL6O6P-w<<`Tu3=TtVfm^Y}?Q^%zc?I-*J$C4(@T1mud+FBF?Uh?A z>u1(i>e{hQ_1JGK>i^1jidF1)+5SF0#IOYw42cQf5;v5qd~WnLHw4#=ZSdTn8!i@2 z$AB|RY?-x_9`oIeU9%{Id??!0Imb=fl|_eg_>LG05`k@9V&2u|m6LY;@PNtU+YwND z5S5pl$H8+IzPxBLHv|UCI6Z=W(Z6}$VzcnX4PR=1nYik7kaJily_2-BJN5PUr`sF! z3_QSyun6d;BnZOKq9Vwx7!i8DBk`6j2ro8OB8MANvL+?hmL5v`f0DmJq=9rgrJ=Dr=1mA zDp3;O$-Upp`<^6{Yi~7D2WzQ=8^&fTS4$jSJ@*K%otgE~&4I&k>#Uw{_LDu?N9p}P zN5abRqrOa20{f(YZ&LvaTS%sxVf0kemuljeW|TzZtseB!k}`^02h)sp@4 None: + _CACERT_CTX.__exit__(None, None, None) # type: ignore[union-attr] + + +if sys.version_info >= (3, 11): + + from importlib.resources import as_file, files + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the file + # in cases where we're inside of a zipimport situation until someone + # actually calls where(), but we don't want to re-extract the file + # on every call of where(), so we'll do it once then store it in a + # global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you to + # manage the cleanup of this file, so it doesn't actually return a + # path, it returns a context manager that will give you the path + # when you enter it and will do any cleanup when you leave it. In + # the common case of not needing a temporary file, it will just + # return the file system location and the __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = as_file(files("certifi").joinpath("cacert.pem")) + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return files("certifi").joinpath("cacert.pem").read_text(encoding="ascii") + +elif sys.version_info >= (3, 7): + + from importlib.resources import path as get_path, read_text + + _CACERT_CTX = None + _CACERT_PATH = None + + def where() -> str: + # This is slightly terrible, but we want to delay extracting the + # file in cases where we're inside of a zipimport situation until + # someone actually calls where(), but we don't want to re-extract + # the file on every call of where(), so we'll do it once then store + # it in a global variable. + global _CACERT_CTX + global _CACERT_PATH + if _CACERT_PATH is None: + # This is slightly janky, the importlib.resources API wants you + # to manage the cleanup of this file, so it doesn't actually + # return a path, it returns a context manager that will give + # you the path when you enter it and will do any cleanup when + # you leave it. In the common case of not needing a temporary + # file, it will just return the file system location and the + # __exit__() is a no-op. + # + # We also have to hold onto the actual context manager, because + # it will do the cleanup whenever it gets garbage collected, so + # we will also store that at the global level as well. + _CACERT_CTX = get_path("certifi", "cacert.pem") + _CACERT_PATH = str(_CACERT_CTX.__enter__()) + atexit.register(exit_cacert_ctx) + + return _CACERT_PATH + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") + +else: + import os + import types + from typing import Union + + Package = Union[types.ModuleType, str] + Resource = Union[str, "os.PathLike"] + + # This fallback will work for Python versions prior to 3.7 that lack the + # importlib.resources module but relies on the existing `where` function + # so won't address issues with environments like PyOxidizer that don't set + # __file__ on modules. + def read_text( + package: Package, + resource: Resource, + encoding: str = 'utf-8', + errors: str = 'strict' + ) -> str: + with open(where(), encoding=encoding) as data: + return data.read() + + # If we don't have importlib.resources, then we will just do the old logic + # of assuming we're on the filesystem and munge the path directly. + def where() -> str: + f = os.path.dirname(__file__) + + return os.path.join(f, "cacert.pem") + + def contents() -> str: + return read_text("certifi", "cacert.pem", encoding="ascii") diff --git a/venv/lib/python3.12/site-packages/certifi/py.typed b/venv/lib/python3.12/site-packages/certifi/py.typed new file mode 100644 index 0000000..e69de29 diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER new file mode 100644 index 0000000..a1b589e --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/INSTALLER @@ -0,0 +1 @@ +pip diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE new file mode 100644 index 0000000..ad82355 --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 TAHRI Ahmed R. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. \ No newline at end of file diff --git a/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/METADATA b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/METADATA new file mode 100644 index 0000000..822550e --- /dev/null +++ b/venv/lib/python3.12/site-packages/charset_normalizer-3.3.2.dist-info/METADATA @@ -0,0 +1,683 @@ +Metadata-Version: 2.1 +Name: charset-normalizer +Version: 3.3.2 +Summary: The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet. +Home-page: https://github.com/Ousret/charset_normalizer +Author: Ahmed TAHRI +Author-email: ahmed.tahri@cloudnursery.dev +License: MIT +Project-URL: Bug Reports, https://github.com/Ousret/charset_normalizer/issues +Project-URL: Documentation, https://charset-normalizer.readthedocs.io/en/latest +Keywords: encoding,charset,charset-detector,detector,normalization,unicode,chardet,detect +Classifier: Development Status :: 5 - Production/Stable +Classifier: License :: OSI Approved :: MIT License +Classifier: Intended Audience :: Developers +Classifier: Topic :: Software Development :: Libraries :: Python Modules +Classifier: Operating System :: OS Independent +Classifier: Programming Language :: Python +Classifier: Programming Language :: Python :: 3 +Classifier: Programming Language :: Python :: 3.7 +Classifier: Programming Language :: Python :: 3.8 +Classifier: Programming Language :: Python :: 3.9 +Classifier: Programming Language :: Python :: 3.10 +Classifier: Programming Language :: Python :: 3.11 +Classifier: Programming Language :: Python :: 3.12 +Classifier: Programming Language :: Python :: Implementation :: PyPy +Classifier: Topic :: Text Processing :: Linguistic +Classifier: Topic :: Utilities +Classifier: Typing :: Typed +Requires-Python: >=3.7.0 +Description-Content-Type: text/markdown +License-File: LICENSE +Provides-Extra: unicode_backport + +

`wbX>DKq$FZbx(}0O9`S= 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